Wapiti - vérifier seul les vulnérabilités d'un site

Wapiti - vérifier seul les vulnérabilités d'un site
À la fin article nous avons parlé de Nemesida WAF Gratuit - un outil gratuit pour protéger les sites Web et les API contre les attaques de pirates informatiques, et dans celui-ci, nous avons décidé de passer en revue un scanner de vulnérabilités populaire Wapiti.

L'analyse des vulnérabilités d'un site Web est une mesure nécessaire qui, associée à l'analyse du code source, vous permet d'évaluer le niveau de sa sécurité contre les menaces de compromission. Vous pouvez analyser une ressource Web à l'aide d'outils spécialisés.

Nikto, W3af (écrit en Python 2.7, qui n'est plus supporté) ou Arachni (plus supporté depuis février) sont les solutions les plus populaires présentées dans le segment gratuit. Bien sûr, il y en a d’autres, par exemple Wapiti, sur lequel nous avons décidé de nous concentrer.

Wapiti fonctionne avec les types de vulnérabilités suivants :

  • extension de fichiers (local et distant, fopen, readfile) ;
  • injections (injection PHP/JSP/ASP/SQL et injection XPath) ;
  • XSS (Cross Site Scripting) (réfléchissant et persistant) ;
  • détection et exécution de commandes (eval(), system(), passtru()) ;
  • Injections CRLF (fractionnement de la réponse HTTP, fixation de session) ;
  • Intégration XXE (entité externe XML) ;
  • SSRF (contrefaçon de requête côté serveur) ;
  • utilisation de fichiers connus potentiellement dangereux (grâce à la base de données Nikto) ;
  • configurations .htaccess faibles qui peuvent être contournées ;
  • la présence de fichiers de sauvegarde révélant des informations confidentielles (divulgation du code source) ;
  • Choc d'obus ;
  • ouvrir les redirections ;
  • méthodes HTTP non standard pouvant être résolues (PUT).

Caractéristiques:

  • Prise en charge des proxys HTTP, HTTPS et SOCKS5 ;
  • authentification selon plusieurs méthodes : Basic, Digest, Kerberos ou NTLM ;
  • la possibilité de limiter la zone d'analyse (domaine, dossier, page, URL) ;
  • suppression automatique d'un des paramètres de l'URL ;
  • de multiples précautions contre les boucles de scan interminables (exemple : ifor, valeurs limites pour un paramètre) ;
  • la possibilité de définir une priorité pour l'examen des URL (même si elles ne se trouvent pas dans la zone d'analyse) ;
  • possibilité d'exclure certaines URL de l'analyse et des attaques (par exemple : déconnexion de l'URL) ;
  • importer des cookies (récupérez-les à l'aide de l'outil wapiti-getcookie) ;
  • possibilité d'activer/désactiver la vérification du certificat SSL ;
  • la possibilité d'extraire des URL depuis JavaScript (un interpréteur JS très simple) ;
  • interaction avec HTML5 ;
  • plusieurs options pour gérer le comportement et les restrictions des robots ;
  • définir la durée maximale du processus de numérisation ;
  • ajouter des en-têtes HTTP personnalisés ou configurer un agent utilisateur personnalisé.

Caractéristiques supplémentaires:

  • créer des rapports de vulnérabilités dans différents formats (HTML, XML, JSON, TXT);
  • suspendre et reprendre une analyse ou une attaque (mécanisme de session utilisant les bases de données SQLite3) ;
  • rétroéclairage dans le terminal pour mettre en évidence les vulnérabilités ;
  • différents niveaux de journalisation ;
  • Un moyen rapide et facile d'activer/désactiver les modules d'attaque.

Installation

La version actuelle de Wapiti peut être installée de 2 manières :

  • téléchargez la source sur le site officiel сайта et exécutez le script d'installation, après avoir préalablement installé Python3 ;
  • en utilisant la commande pip3 install wapiti3.

Après cela, Wapiti sera prêt à partir.

Travailler avec l'outil

Pour démontrer le travail de Wapiti, nous utiliserons un stand spécialement préparé sites.vulns.pentestit.ru (ressource interne), contenant diverses vulnérabilités (Injection, XSS, LFI/RFI) et d'autres défauts des applications Web.

Les informations sont fournies à titre informatif uniquement. N'enfreignez pas la loi !

Commande de base pour lancer le scanner :

# wapiti -u <target> <options>

En même temps, il existe une aide assez détaillée avec un grand nombre d'options de lancement, par exemple :

--portée - champ d'application
Si vous spécifiez le paramètre scope avec l'URL d'analyse, vous pouvez ajuster la zone d'analyse du site en spécifiant à la fois une seule page et toutes les pages pouvant être trouvées sur le site.

-s и -x - options pour ajouter ou supprimer des URL spécifiques. Ces options sont utiles lorsque vous devez ajouter ou supprimer une URL spécifique pendant le processus d'exploration.

--sauter — le paramètre spécifié avec cette clé sera analysé, mais ne sera pas attaqué. Utile s'il existe des paramètres dangereux qu'il est préférable d'exclure lors de l'analyse.

--vérifier-ssl — activer ou désactiver la vérification du certificat.
Le scanner Wapiti est modulaire. Cependant, pour lancer des modules spécifiques, y compris ceux qui sont automatiquement connectés pendant le fonctionnement du scanner, vous devez utiliser le commutateur -m et lister ceux dont vous avez besoin, séparés par des virgules. Si la clé n'est pas utilisée, tous les modules fonctionneront par défaut. Dans la version la plus simple, cela ressemblera à ceci :

# wapiti -u http://sites.vulns.pentestit.ru/ -m sql,xss,xxe

Cet exemple d'utilisation signifie que nous utiliserons uniquement les modules SQL, XSS et XXE lors de l'analyse de la cible. De plus, vous pouvez filtrer le fonctionnement des modules en fonction de la méthode souhaitée. Par exemple -m « xss : obtenir, blindsql : post, xxe : post ». Dans ce cas, le module xss s'appliquera aux requêtes envoyées via la méthode GET, et le module blibdsql - aux requêtes POST, etc. À propos, si un module inclus dans la liste n'était pas nécessaire lors de l'analyse ou prend beaucoup de temps, alors en appuyant sur la combinaison Ctrl+C, vous pouvez ignorer l'utilisation du module actuel en sélectionnant l'élément correspondant dans le menu interactif.

Wapiti prend en charge la transmission des requêtes via un proxy à l'aide d'une clé -p et authentification sur le site cible via le paramètre -a. Vous pouvez également spécifier le type d'authentification : Basique, Digérer, Kerberos и NTLM. Les deux derniers peuvent nécessiter l'installation de modules supplémentaires. De plus, vous pouvez insérer n'importe quel en-tête dans les requêtes (y compris des en-têtes arbitraires). User-Agent) et beaucoup plus.

Pour utiliser l'authentification, vous pouvez utiliser l'outil wapiti-getcookie. Avec son aide nous formons gâteau, que Wapiti utilisera lors de la numérisation. Formation gâteau fait avec la commande :

# wapiti-getcookie -u http://sites.vulns.pentestit.ru/login.php -c cookie.json

Tout en travaillant de manière interactive, nous répondons aux questions et indiquons les informations nécessaires telles que login, mot de passe, etc. :

Wapiti - vérifier seul les vulnérabilités d'un site

La sortie est un fichier au format JSON. Une autre option consiste à ajouter toutes les informations nécessaires via le paramètre -d:

# wapiti-getcookie - http://sites.vulns.pentestit.ru/login.php -c cookie.json -d "username=admin&password=admin&enter=submit"

Le résultat sera similaire :

Wapiti - vérifier seul les vulnérabilités d'un site

Lors de l'examen de la fonctionnalité principale du scanner, la demande finale pour tester l'application Web dans notre cas était :

# wapiti --level 1 -u http://sites.vulns.pentestit.ru/ -f html -o /tmp/vulns.html -m all --color -с cookie.json --scope folder --flush-session -A 'Pentestit Scans' -p http://proxy.office.pentestit.ru:3128

où entre autres paramètres :

-f и -o — format et chemin d'enregistrement du rapport ;

-m — il n'est pas recommandé de connecter tous les modules, car affectera la durée des tests et la taille du rapport ;

-Couleur — mettre en évidence les vulnérabilités trouvées en fonction de leur criticité selon Wapiti lui-même ;

-c - en utilisant un fichier avec gâteau, généré à l'aide wapiti-getcookie;

--portée — choisir une cible pour l'attaque. Sélection d'une option dossier Chaque URL sera explorée et attaquée, en commençant par celle de base. L'URL de base doit comporter une barre oblique (pas de nom de fichier) ;

--flush-session — permet une analyse répétée, dans laquelle les résultats précédents ne seront pas pris en compte ;

-A - propre User-Agent;

-p — l'adresse du serveur proxy, si nécessaire.

Un peu sur le rapport

Le résultat de l'analyse est présenté sous la forme d'un rapport détaillé sur toutes les vulnérabilités trouvées au format page HTML, sous une forme claire et facile à lire. Le rapport indiquera les catégories et le nombre de vulnérabilités trouvées, leurs descriptions, demandes, commandes pour boucle et des conseils pour les fermer. Pour faciliter la navigation, un lien sera ajouté aux noms des catégories, en cliquant sur lequel vous pourrez y accéder :

Wapiti - vérifier seul les vulnérabilités d'un site

Un inconvénient majeur du rapport est l'absence de carte d'application Web en tant que telle, sans laquelle il ne sera pas clair si toutes les adresses et tous les paramètres ont été analysés. Il existe également une possibilité de faux positifs. Dans notre cas, le rapport inclut des « fichiers de sauvegarde » et des « fichiers potentiellement dangereux ». Leur nombre ne correspond pas à la réalité, puisqu'il n'y avait pas de tels fichiers sur le serveur :

Wapiti - vérifier seul les vulnérabilités d'un site

Peut-être que les modules qui fonctionnent mal seront corrigés au fil du temps. Un autre inconvénient du rapport est le manque de coloration des vulnérabilités trouvées (en fonction de leur criticité), ou du moins de les diviser en catégories. La seule façon de comprendre indirectement la criticité de la vulnérabilité trouvée est d'utiliser le paramètre -Couleur lors de l'analyse, puis les vulnérabilités trouvées seront colorées de différentes couleurs :

Wapiti - vérifier seul les vulnérabilités d'un site

Mais le rapport lui-même ne donne pas une telle coloration.

Vulnérabilités

SQLi

Le scanner a partiellement géré la recherche SQLi. Lors de la recherche de vulnérabilités SQL sur des pages où l'authentification n'est pas requise, aucun problème ne se pose :

Wapiti - vérifier seul les vulnérabilités d'un site

Il n'a pas été possible de trouver une vulnérabilité sur les pages accessibles uniquement après authentification, même en utilisant des gâteau, car très probablement après une authentification réussie, leur session sera « déconnectée » et gâteau deviendra invalide. Si la fonction de désautorisation était implémentée en tant que script distinct chargé de traiter cette procédure, il serait alors possible de l'exclure complètement via le paramètre -x, et ainsi d'empêcher son déclenchement. Dans le cas contraire, il ne sera pas possible d'exclure son traitement. Ce n'est pas un problème avec un module spécifique, mais avec l'outil dans son ensemble, mais à cause de cette nuance, il n'a pas été possible de détecter plusieurs injections dans une zone de ressources fermée.

XSS

Le scanner a parfaitement fait face à la tâche confiée et a trouvé toutes les vulnérabilités préparées :

Wapiti - vérifier seul les vulnérabilités d'un site

LFI / RFI

Le scanner a trouvé toutes les vulnérabilités sous-jacentes :

Wapiti - vérifier seul les vulnérabilités d'un site

En général, malgré les faux positifs et les vulnérabilités manquantes, Wapiti, en tant qu'outil gratuit, affiche d'assez bons résultats en termes de performances. Dans tous les cas, il convient de reconnaître que le scanner est assez puissant, flexible et multifonctionnel, et surtout, il est gratuit, il a donc le droit d'être utilisé pour aider les administrateurs et les développeurs à obtenir des informations de base sur l'état de sécurité d'un site Web. application.

Restez en bonne santé et protégé !

Source: habr.com

Ajouter un commentaire