Fast Searching
Grep
Grep
est un outil présent sur presque toutes les distributions Linux par défaut. Il est probablement le meilleur outil pour répondre à un tel besoin et n'est pas à sous-estimer. Voici quelques expressions régulières fort utiles pour du Fast Searching
, mais aussi du filtre de données :
# Wordlist pour clés secrètes, credentials, etc...
grep -oFf wordlist.txt fichier.txt
# Adresses IPv4
grep -oE "\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b"
# Adresses IPv6
grep -oE "\b[0-9a-fA-F]{1,4}(:[0-9a-fA-F]{1,4}){7}\b"
# URL
grep -oE "(([a-zA-Z][a-zA-Z0-9+-.]*\:\/\/)|mailto|data\:)([a-zA-Z0-9\.\&\/\?\:@\+-\_=#%;,])*"
# Formats populaires de chaînes base64
grep -oE "([^A-Za-z0-9+/]|^)(eyJ|YTo|Tzo|PD[89]|aHR0cHM6L|aHR0cDo|rO0|data:image/png;base64,|data:image/jpeg;base64,|data:application/pdf;base64,|data:application/vnd.openxmlformats-officedocument.wordprocessingml.document;base64,|data:application/json;base64,|data:image/svg+xml;base64,|data:audio/mpeg;base64,|data:video/mp4;base64,)[%a-zA-Z0-9+/]+={0,2}"
# Adresses mail
grep -oE "\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b"
# Erreurs PHP
grep -oE "php warning|php error|fatal error|uncaught exception|include_path|undefined index|undefined variable|\\\?php|<\\\?[^x]|stack trace:|expects parameter [0-9]*|Debug Trace"
# Affichage de debugs
grep -oE "(Application-Trace|Routing Error|DEBUG\"? ?[=:] ?True|Caused by:|stack trace:|Microsoft .NET Framework|Traceback|[0-9]:in \`|#!/us|WebApplicationException|java\\.lang\\.|phpinfo|swaggerUi|on line [0-9]|SQLSTATE)"
# Pour du CamelCase de plus de 12 caractères (généralement pour les flags de CTF)
grep -oE "[A-Z]([A-Z0-9]*[a-z][a-z0-9]*[A-Z]|[a-z0-9]*[A-Z][A-Z0-9]*[a-z])[A-Za-z0-9]*" | sed -n '/.\{12\}/p' | sort -u
# Tous les autres formats de flags populaires et qui font plus de 12 caractères
grep -ioE "(flag|thm|ctf|htb|picoctf){[^}]*}" | sed -n '/.\{12\}/p' | sort -u
# Pour toutes les informations sensibles sur une machine
grep -irH "admin|key|authorization|bearer|passwd|email|id_rsa|oauth_token|pass|password|secret|token|username|private"
# Pour lister tous les fichiers dont le nom contient flag, secret, key, password, token, admin, root
find / -type f \( -name "*flag*" -o -name "*secret*" -o -name "*key*" -o -name "*password*" -o -name "*token*" -o -name "*admin*" -o -name "*root*" \) -exec ls {} \;
De manière plus automatisée, il y a GF qui possède quelques bonnes regex
également. Mais une ressource bien plus riche et adaptée pour trouver des données sensibles est Gitleaks. L'outil possède une large gamme de regex
adaptées à des cas réels et il fonctionne sur des dossiers normaux mais également sur des repositories Git
, en prenant en compte l'historique des commits.
Applications web
Pour rechercher de manière rapide et efficace, il y a plusieurs choses qui peuvent être faites :
Automatiser le listing des différents points d'entrées. (
Cookies
,Champs de formulaires
,Paramètres d'URL
)Télécharger tout le contenu accessible de l'application web afin de par exemple utiliser
grep
et trouver du contenu important.
Attention, cela n'exclut pas une recherche manuelle, ne serait-ce pour déceler des problèmes plus subtils dans le cas de vrais audits. De plus, pleins de détails importants et très contextuels peuvent être jugés comme des informations importantes voire cruciales, sans pour autant être dans le champs de détection de vos scripts.
Vous pourrez ensuite utiliser cette collecte d'informations pour aller vérifier manuellement si certaines sont dignes d'intérêt. Cela peut accélérer grandement le processus de recherche mais ne dispense pas d'une vérification manuelle.
Dernière mise à jour
Cet article vous a-t-il été utile ?