à parler des outils utiles pour les testeurs de pénétration. Dans cet article, nous examinerons les outils pour analyser la sécurité des applications web.
Notre collègue a déjà fait une telle il y a environ sept ans. Il est intéressant de voir quels outils ont maintenu et renforcé leur position, et lesquels sont tombés dans l'oubli et sont maintenant rarement utilisés.

Notons que Burp Suite est également inclus ici, mais nous aurons un article séparé sur lui et ses plugins utiles.
Contenu :
Amass
— un outil en Go pour la recherche et le dénombrement des sous-domaines DNS et la cartographie des réseaux externes. Amass est un projet OWASP, créé pour montrer à quoi ressemblent les organisations sur Internet pour un observateur externe. Les noms de sous-domaines sont récupérés par divers moyens, l'outil utilise à la fois le dénombrement récursif des sous-domaines et la recherche dans les sources ouvertes.
Pour découvrir des segments de réseau interconnectés et des numéros de systèmes autonomes, Amass utilise les adresses IP obtenues au cours de son fonctionnement. Toutes les informations trouvées sont utilisées pour construire une carte du réseau.
Avantages :
- Les techniques de collecte d'information incluent :
* DNS — dénombrement de sous-domaines par dictionnaire, bruteforce de sous-domaines, dénombrement « intelligent » utilisant des mutations basées sur des sous-domaines trouvés, requêtes DNS inverses et recherche de serveurs DNS où une demande de transfert de zone (AXFR) peut être effectuée ;* Recherche dans des sources ouvertes — Ask, Baidu, Bing, CommonCrawl, DNSDB, DNSDumpster, DNSTable, Dogpile, Exalead, FindSubdomains, Google, IPv4Info, Netcraft, PTRArchive, Riddler, SiteDossier, ThreatCrowd, VirusTotal, Yahoo ;
* Recherche dans des bases de données de certificats TLS — Censys, CertDB, CertSpotter, Crtsh, Entrust ;
* Utilisation des API des moteurs de recherche — BinaryEdge, BufferOver, CIRCL, HackerTarget, PassiveTotal, Robtex, SecurityTrails, Shodan, Twitter, Umbrella, URLScan ;
* Recherche dans les archives web : ArchiveIt, ArchiveToday, Arquivo, LoCArchive, OpenUKArchive, UKGovArchive, Wayback ;
- Intégration avec Maltego ;
- Assure la couverture la plus complète de la tâche de recherche des sous-domaines DNS.
Inconvénients :
- Soyez prudent avec amass.netdomains — il essaiera de se connecter à chaque adresse IP de l'infrastructure identifiée et d'obtenir des noms de domaine à partir de requêtes DNS inverses et de certificats TLS. C'est une technique « bruyante », elle peut révéler vos activités de renseignement dans l'organisation étudiée.
- Une utilisation élevée de la mémoire peut consommer jusqu'à 2 Go de RAM dans différentes configurations, ce qui empêchera l'exécution de cet outil dans le cloud sur un VDS bon marché.

Altdns
— un outil Python pour créer des dictionnaires pour le brute forcing de sous-domaines DNS. Il permet de générer de nombreuses variations de sous-domaines par mutation et permutation. Pour cela, il utilise des mots souvent rencontrés dans les sous-domaines (par exemple : test, dev, staging), toutes les mutations et permutations étant appliquées à des sous-domaines déjà connus qui peuvent être soumis à Altdns. À la sortie, un liste de variations de sous-domaines qui peuvent exister est produite, et cette liste peut ensuite être utilisée lors du brute forcing DNS.
Avantages :
- Fonctionne bien avec de grands ensembles de données.
aquatone
— auparavant connu comme un autre outil pour la recherche de sous-domaines, mais l'auteur lui-même a abandonné cela en faveur de l'Amass mentionné ci-dessus. Désormais, aquatone est réécrit en Go et est davantage orienté vers la reconnaissance préliminaire des sites Web. Pour ce faire, aquatone parcourt les domaines spécifiés et recherche des sites Web sur différents ports, puis collecte toutes les informations sur le site et fait une capture d'écran. Pratique pour une reconnaissance préliminaire rapide des sites Web, après quoi il est possible de sélectionner des cibles prioritaires pour les attaques.
Avantages :
- À la sortie, il crée un groupe de fichiers et de dossiers qui sont pratiques à utiliser lors d'un travail ultérieur avec d'autres outils :
* Rapport HTML avec des captures d'écran collectées et des titres de réponses regroupés par similarité ;* Fichier contenant tous les URL où des sites Web ont été trouvés ;
* Fichier avec des statistiques et des données de page ;
* Dossier avec des fichiers contenant les en-têtes de réponse des cibles trouvées ;
* Dossier avec des fichiers contenant le corps de la réponse des cibles trouvées ;
* Captures d'écran des sites Web trouvés ;
- Prend en charge le traitement des rapports XML provenant de Nmap et Masscan ;
- Utilise headless Chrome/Chromium pour le rendu des captures d'écran.
Inconvénients :
- Peut attirer l'attention des systèmes de détection d'intrusions, donc nécessite des réglages.
La capture d'écran a été réalisée pour l'une des anciennes versions d'aquatone (v0.5.0), dans laquelle la recherche de sous-domaines DNS a été implémentée. Des anciennes versions peuvent être trouvées sur .

MassDNS
— un autre outil pour la recherche de sous-domaines DNS. Sa principale différence est qu'il effectue des requêtes DNS directement auprès de nombreux résolveurs DNS différents et le fait avec une vitesse considérable.
Avantages :
- Rapide — capable de résoudre plus de 350 000 noms par seconde.
Inconvénients :
- MassDNS peut exercer une charge significative sur les résolveurs DNS utilisés, ce qui peut entraîner un blocage sur ces serveurs ou des plaintes auprès de votre fournisseur. De plus, cela exercera une forte pression sur les serveurs DNS de l'entreprise, s'il en existe, et s'ils sont responsables des domaines que vous essayez de résoudre.
- La liste des résolveurs est actuellement obsolète, mais si vous retirez les résolveurs DNS non fonctionnels et en ajoutez de nouveaux connus, tout ira bien.

Capture d'écran d'aquatone v0.5.0
nsec3map
— un outil Python pour obtenir une liste complète des domaines protégés par DNSSEC.
Avantages :
- Détecte rapidement les hôtes dans les zones DNS avec un minimum de requêtes, si la zone prend en charge DNSSEC;
- Comprend un plugin pour John the Ripper, qui peut être utilisé pour cracker les hachages NSEC3 obtenus.
Inconvénients :
- De nombreuses erreurs DNS sont mal gérées;
- Il n'y a pas de parallélisation automatique du traitement des enregistrements NSEC - il faut diviser l'espace de noms manuellement;
- Consommation de mémoire élevée.
Acunetix
— un scanner de vulnérabilités web, automatisant le processus de vérification de la sécurité des applications web. Il teste l'application pour des vulnérabilités telles que les injections SQL, XSS, XXE, SSRF et bien d'autres. Cependant, comme tout autre scanner de vulnérabilités web, il ne remplace pas un testeur de pénétration, car il ne peut pas détecter des chaînes de vulnérabilités complexes ou des failles logiques. En revanche, il couvre un large éventail de vulnérabilités, y compris divers CVE que le testeur de pénétration pourrait avoir oubliés, ce qui le rend très utile pour alléger les vérifications de routine.
Avantages :
- Faible taux de faux positifs;
- Les résultats peuvent être exportés sous forme de rapports;
- Réalise de nombreux tests sur différentes vulnérabilités;
- Scan parallèle de plusieurs hôtes.
Inconvénients :
- Pas d'algorithme de dé-duplication (des pages Acunetix similaires en fonctionnalité seront considérées comme différentes, car elles mènent à des URL différentes), mais les développeurs y travaillent;
- Nécessite une installation sur un serveur web distinct, ce qui complique le test des systèmes clients connectés via VPN et l'utilisation du scanner dans un segment isolé du réseau local client;
- Peut 'bruiter' le service examiné, par exemple en envoyant trop de vecteurs d'attaque dans le formulaire de contact du site, compliquant ainsi fortement les processus d'affaires.
- C'est une solution propriétaire et donc payante.

Dirsearch
— un outil Python pour le brute force des répertoires et des fichiers sur les sites Web.
Avantages :
- Peut distinguer les vraies pages « 200 OK » des pages « 200 OK » mais avec le texte « page non trouvée » ;
- Livré avec un dictionnaire pratique, offrant un bon équilibre entre taille et efficacité de recherche. Contient des chemins standards caractéristiques de nombreux CMS et technologies ;
- Son propre format de dictionnaire, permettant d'atteindre une bonne efficacité et flexibilité lors de l'exploration de fichiers et de répertoires ;
- Sortie pratique — texte brut, JSON ;
- Peut faire du throttling — une pause entre les requêtes, ce qui est essentiel pour tout service faible.
Inconvénients :
- Les extensions doivent être passées sous forme de chaîne, ce qui est peu pratique si plusieurs extensions doivent être spécifiées en même temps ;
- Pour utiliser votre dictionnaire, il devra être légèrement modifié au format des dictionnaires Dirsearch pour une efficacité maximale.

wfuzz
— un fuzzing d'applications Web en Python. Probablement l'un des fuzzers Web les plus connus. Le principe est simple : wfuzz permet de fuzzing n'importe quel endroit dans une requête HTTP, ce qui permet de fuzzing les paramètres GET/POST, les en-têtes HTTP, y compris les cookies et autres en-têtes d'authentification. Il est également pratique pour le brute force des répertoires et des fichiers, ce qui nécessite un bon dictionnaire. Comprend aussi un système de filtres flexible pour filtrer les réponses du site Web selon divers paramètres, ce qui permet d'obtenir des résultats efficaces.
Avantages :
- Polyvalent — structure modulaire, le montage prend quelques minutes ;
- Mécanisme de filtrage et de fuzzing pratique ;
- Peut fuzzing n'importe quelle méthode HTTP, ainsi que n'importe quel endroit dans la requête HTTP.
Inconvénients :
- En cours de développement.

ffuf
— un fuzzer Web en Go, conçu sur le modèle de wfuzz, permet de brute force des fichiers, répertoires, chemins URL, noms et valeurs des paramètres GET/POST, des en-têtes HTTP, y compris l'en-tête Host pour brute force des hôtes virtuels. Par rapport à son homologue wfuzz, il se distingue par une vitesse supérieure et certaines nouvelles fonctionnalités, comme la prise en charge des dictionnaires au format Dirsearch.
Avantages :
- Les filtres ressemblent à ceux de wfuzz, permettant une configuration flexible du brute force ;
- Permet de fuzzing les valeurs des en-têtes HTTP, les données des requêtes POST et diverses parties de l'URL, y compris les noms et valeurs des paramètres GET ;
- Peut spécifier n'importe quelle méthode HTTP.
Inconvénients :
- En cours de développement.

gobuster
— un outil en Go pour l'exploration, qui dispose de deux modes de fonctionnement. Le premier est utilisé pour le bruteforce des fichiers et des répertoires sur un site web, le second — pour le passage en revue des sous-domaines DNS. L'outil ne prend pas en charge par défaut le passage en revue récursif des fichiers et des répertoires, ce qui permet d'économiser du temps, mais d'un autre côté, chaque nouvel endpoint sur le site web doit être lancé séparément pour le bruteforce.
Avantages :
- Une grande rapidité de fonctionnement pour le passage en revue des sous-domaines DNS ainsi que pour le bruteforce des fichiers et des répertoires.
Inconvénients :
- La version actuelle ne prend pas en charge la définition des en-têtes HTTP;
- Par défaut, seuls certains codes de statut HTTP (200, 204, 301, 302, 307) sont considérés comme valides.

Arjun
— un outil pour le bruteforce des paramètres HTTP cachés dans les paramètres GET/POST, ainsi que dans JSON. Le dictionnaire intégré contient 25 980 mots, que Ajrun vérifie en presque 30 secondes. Le concept est qu'Ajrun ne teste pas chaque paramètre séparément, mais vérifie en même temps ~1000 paramètres et observe si la réponse a changé. Si la réponse change, elle divise ces 1000 paramètres en deux parties et vérifie laquelle de ces parties influence la réponse. Ainsi, grâce à une simple recherche binaire, un ou plusieurs paramètres cachés qui ont influencé la réponse et peuvent exister sont trouvés.
Avantages :
- Une grande rapidité de fonctionnement grâce à la recherche binaire;
- Support des paramètres GET/POST ainsi que des paramètres au format JSON;
Un plugin pour Burp Suite fonctionne selon le même principe — , qui est également très efficace pour trouver des paramètres HTTP cachés. Nous en parlerons plus en détail dans l'article à venir sur Burp et ses plugins.

LinkFinder
— un script en Python pour trouver des liens dans les fichiers JavaScript. Utile pour rechercher des endpoints/URLs cachés ou oubliés dans une application web.
Avantages :
- Rapide;
- Il existe un plugin spécial pour Chrome basé sur LinkFinder.
.
Inconvénients :
- Sortie finale peu pratique;
- N'analyse pas JavaScript de manière dynamique;
- Logique de recherche de liens plutôt simple — si le JavaScript est obfusqué d'une manière ou d'une autre, ou si les liens sont absents à la base et générés dynamiquement, il ne pourra rien trouver.

JSParser
— un script en Python qui utilise et pour analyser les URL relatives à partir de fichiers JavaScript. Très utile pour détecter les requêtes AJAX et dresser une liste des méthodes API avec lesquelles l'application interagit. Fonctionne efficacement en tandem avec LinkFinder.
Avantages :
- Analyse rapide des fichiers JavaScript.

sqlmap
— probablement l'un des outils les plus connus pour l'analyse des applications web. Sqlmap automatise la recherche et l'exploitation des injections SQL, fonctionne avec plusieurs dialectes SQL, et dispose d'une multitude de techniques, allant des injections « à froid » aux vecteurs complexes pour les injections SQL basées sur le temps. De plus, il offre de nombreuses techniques d'exploitation pour différents SGBD, ce qui le rend utile non seulement comme scanner d'injections SQL, mais aussi comme un puissant outil d'exploitation des injections SQL déjà trouvées.
Avantages :
- Un grand nombre de techniques et de vecteurs variés ;
- Faible taux de fausses alertes ;
- Beaucoup de possibilités de personnalisation, techniques variées, bases de données cibles, scripts de contournement pour éviter les WAF ;
- Possibilité de créer un dump des données de sortie ;
- De nombreuses options d'exploitation, par exemple, pour certaines bases de données — chargement/téléchargement automatique de fichiers, accès à l'exécution de commandes (RCE) et autres ;
- Prise en charge de la connexion directe à la base de données en utilisant les données obtenues lors de l'attaque ;
- Vous pouvez fournir un fichier texte contenant les résultats de Burp — pas besoin de composer manuellement tous les attributs de la ligne de commande.
Inconvénients :
- Difficile à personnaliser, par exemple, écrire vos propres vérifications en raison de la documentation limitée à cet égard ;
- Sans les configurations appropriées, il effectue un ensemble incomplet de vérifications, ce qui peut prêter à confusion.

NoSQLMap
— un outil en Python pour automatiser la recherche et l'exploitation des injections NoSQL. Pratique à utiliser non seulement dans les bases de données NoSQL, mais aussi lors de l'audit des applications web utilisant NoSQL.
Avantages :
- Comme sqlmap, il permet non seulement de trouver des vulnérabilités potentielles, mais aussi de vérifier la possibilité de leur exploitation pour MongoDB et CouchDB.
Inconvénients :
- Ne prend pas en charge NoSQL pour Redis, Cassandra, un développement est en cours dans ce domaine.
oxml_xxe
— un outil pour intégrer des exploits XXE XML dans divers types de fichiers où le format XML est utilisé sous une forme ou une autre.
Avantages :
- Prend en charge de nombreux formats courants, tels que DOCX, ODT, SVG, XML.
Inconvénients :
- Le support PDF, JPEG, GIF n'est pas entièrement implémenté ;
- Crée un seul fichier. Pour résoudre ce problème, vous pouvez utiliser l'outil , qui peut créer un grand nombre de fichiers avec des payloads à différents emplacements.
Les utilitaires mentionnés ci-dessus sont très efficaces pour tester les XXE lors du chargement de documents contenant du XML. Mais n'oubliez pas que les parseurs XML peuvent également être rencontrés dans de nombreux autres cas, par exemple, XML peut être utilisé comme format de données au lieu de JSON.
Nous vous recommandons donc de prêter attention au dépôt suivant, qui contient un grand nombre de payloads variés : .
tplmap
— un outil Python pour la détection et l'exploitation automatiques des vulnérabilités d'injection de modèles côté serveur, avec des paramètres et des drapeaux similaires à ceux de sqlmap. Il utilise plusieurs techniques et vecteurs différents, y compris les injections blind, ainsi que des techniques pour l'exécution de code et le téléchargement/téléversement de fichiers arbitraires. De plus, il dispose de techniques pour une dizaine de moteurs de templates différents et certaines techniques pour rechercher des injections de code similaires à eval() dans Python, Ruby, PHP, JavaScript. En cas d'exploitation réussie, il ouvre une console interactive.
Avantages :
- Un grand nombre de techniques et de vecteurs variés ;
- Il prend en charge de nombreux moteurs de rendu de templates ;
- De nombreuses techniques d'exploitation.
CeWL
— un générateur de dictionnaires en Ruby, conçu pour extraire des mots uniques d'un site Web donné, parcourant les liens sur le site jusqu'à une profondeur spécifiée. Le dictionnaire constitué de mots uniques peut ensuite être utilisé pour le bruteforce de mots de passe sur des services ou le bruteforce de fichiers et de répertoires sur le même site, ou pour attaquer les hachages obtenus à l'aide de hashcat ou John the Ripper. Il est utile pour composer une liste de mots de passe potentiels 'ciblés'.
Avantages :
- Il est facile à utiliser.
Inconvénients :
- Il faut faire attention à la profondeur de recherche pour ne pas capturer de domaine supplémentaire.
Weakpass
— un service contenant de nombreux dictionnaires avec des mots de passe uniques. Très utile pour diverses tâches liées au piratage de mots de passe, allant du bruteforce en ligne simple des comptes sur des services ciblés, jusqu'au bruteforce hors ligne des hachages obtenus à l'aide de ou . Il contient environ 8 milliards de mots de passe d'une longueur de 4 à 25 caractères.
Avantages :
- Il comprend à la fois des dictionnaires spécifiques et des dictionnaires avec les mots de passe les plus courants — un dictionnaire spécifique peut être choisi selon vos besoins ;
- Les dictionnaires sont mis à jour et enrichis de nouveaux mots de passe ;
- Les dictionnaires sont classés par efficacité. Vous pouvez choisir une option à la fois pour un bruteforce en ligne rapide et pour une sélection approfondie de mots de passe à partir d'un grand dictionnaire contenant les dernières fuites ;
- Il y a une calculatrice qui montre le temps de bruteforce des mots de passe sur votre matériel.

Nous souhaitons mettre en avant des outils pour des vérifications CMS : WPScan, JoomScan et AEM hacker.
AEM_hacker
— un outil pour identifier les vulnérabilités dans les applications Adobe Experience Manager (AEM).
Avantages :
- Peut identifier les applications AEM à partir d'une liste d'URL qui lui sont fournies en entrée ;
- Contient des scripts pour obtenir un RCE en téléchargeant un shell JSP ou en exploitant un SSRF.
JoomScan
— un outil en Perl pour automatiser la détection des vulnérabilités lors du déploiement de Joomla CMS.
Avantages :
- Capable de détecter les défauts de configuration et les problèmes de paramètres d'administration ;
- Énumère les versions de Joomla et les vulnérabilités associées, de même pour les composants individuels ;
- Contient plus de 1000 exploits pour les composants Joomla ;
- Génère des rapports finaux au format texte et HTML.

WPScan
— un outil pour scanner les sites WordPress, qui dispose d'une arsenal de vulnérabilités tant pour le moteur WordPress lui-même que pour certains plugins.
Avantages :
- Peut répertorier non seulement les plugins et thèmes WordPress non sécurisés, mais aussi obtenir une liste d'utilisateurs et de fichiers TimThumb ;
- Peut mener des attaques par bruteforce sur les sites WordPress.
Inconvénients :
- Sans les configurations appropriées, il effectue un ensemble incomplet de vérifications, ce qui peut prêter à confusion.

En général, différentes personnes préfèrent utiliser différents outils : tous sont bons à leur manière, et ce qui a plu à une personne peut ne pas convenir à une autre. Si vous pensez que nous avons injustement négligé un bon utilitaire, écrivez-nous à ce sujet dans les commentaires !
Source : habr.com
