tag:linuxfr.org,2005:/tags/wapiti/publicLinuxFr.org : les contenus étiquetés avec « wapiti »2018-01-29T10:29:55+01:00/favicon.pngtag:linuxfr.org,2005:News/383882018-01-14T11:13:14+01:002018-01-19T11:43:14+01:00Wapiti 3.0.0 : Nouvelle version du scanneur de vulnérabilités WebLicence CC By‑SA http://creativecommons.org/licenses/by-sa/4.0/deed.fr<div><p>Wapiti est un scanneur de vulnérabilités Web publié sous licence GNU GPL v2. </p>
<p>Il permet de détecter la présence de failles courantes (injection SQL, XSS, inclusion de fichier, exécution de code ou de commande, etc.) sur les sites Internet et les applications Web via différents modules d’attaque. L’exploitation des failles remontées n’est pas gérée par le logiciel, l’utilisateur doit donc procéder à l’exploitation lui‐même ou s’en remettre à un logiciel spécifique (comme <em>sqlmap</em> pour les failles SQL). </p>
<p>Wapiti génère des rapports de vulnérabilités dans différents formats (HTML, texte, JSON, XML). C’est un outil en ligne de commande qui a peu de dépendances et s’installe facilement.</p></div><ul><li>lien nᵒ 1 : <a title="https://linuxfr.org/news/sortie-de-wapiti-2-3-0" hreflang="fr" href="https://linuxfr.org/redirect/101243">Dépêche pour la sortie de Wapiti 2.3.0</a></li><li>lien nᵒ 2 : <a title="http://wapiti.sourceforge.net/" hreflang="fr" href="https://linuxfr.org/redirect/101244">Site officiel</a></li></ul><div><h2 class="sommaire">Sommaire</h2>
<ul class="toc">
<li><a href="#fonctionnement">Fonctionnement</a></li>
<li>
<a href="#nouveaut%C3%A9s">Nouveautés</a><ul>
<li><a href="#python3">Python 3</a></li>
<li><a href="#attaques">Attaques</a></li>
<li><a href="#interface-utilisateur">Interface utilisateur</a></li>
<li><a href="#contr%C3%B4le-des-requ%C3%AAtes">Contrôle des requêtes</a></li>
</ul>
</li>
<li><a href="#installation-et-utilisation">Installation et utilisation</a></li>
<li><a href="#aider-le-logiciel">Aider le logiciel</a></li>
</ul><p><img src="//img.linuxfr.org/img/687474703a2f2f7761706974692e736f75726365666f7267652e6e65742f7761706974695f3430302e706e67/wapiti_400.png" alt="Logo" title="Source : http://wapiti.sourceforge.net/wapiti_400.png"></p>
<h2 id="fonctionnement">Fonctionnement</h2>
<p>Le fonctionnement général de Wapiti est simple : dans un premier temps scanner le site demandé afin d’énumérer les adresses URL et formulaires présents sur le site. </p>
<p>L’outil qui parcourt les pages (ou <em>crawler</em>) est efficace et certains projets spécialisés dans la comparaison d’outils de sécurité considèrent Wapiti comme la meilleure solution libre sur le sujet.</p>
<p>Wapiti est capable d’extraire des URL depuis des fichiers Flash (<code>.swf</code>), JavaScript (tant bien que mal) et gère parfaitement les dernières subtilités de HTML 5. Une fois cette phase d’énumération effectuée, chaque module va injecter un ou plusieurs charges (<em>payloads</em>) dans les différentes entrées (paramètres d’URL, champs de formulaire) et déduire on non la présence d’une vulnérabilité en se basant sur la réponse obtenue (principalement via la présence de messages d’erreur, d’un motif spécifique ou d’un comportement réseau particulier comme un délai d’expiration).</p>
<h2 id="nouveautés">Nouveautés</h2>
<h3 id="python3">Python 3</h3>
<p>Ce qui explique le passage du numéro de version 2.3.0 au 3.0.0, c’est le passage du code à Python 3 (en remplacement de Python 2.7). Ce numéro de version est donc l’occasion d’afficher clairement ce changement auprès des utilisateurs du logiciel.</p>
<h3 id="attaques">Attaques</h3>
<p>Sur le plan des types d’attaques pris en charge, peu de nouveautés. Il y a certes un module pour détecter la vulnérabilité <em>Shellshock</em> et un autre pour l’attaque en force brute des noms de dossiers et fichiers sur le serveur Web ciblé (comme le font <em>DirBuster</em>, <em>dirb</em> ou <em>gobuster</em> pour les initiés), mais ces derniers traînaient déjà sur le SVN du projet depuis un moment.</p>
<p>Un nouveau module permet d’afficher les dix ressources les plus lentes du serveur Web (en termes de vitesse de téléchargement). Il s’agit là d’une preuve de concept pour montrer que l’architecture de Wapiti peut aussi être utilisée pour autre chose que lancer des attaques.</p>
<p>Des améliorations ont été apportées aux modules existants, comme la diminution de faux‐positifs ou encore l’ajout de nouvelles charges (<em>payloads</em>) d’attaque.</p>
<h3 id="interface-utilisateur">Interface utilisateur</h3>
<p>Le gros du changement a visé à donner plus de contrôle à l’utilisateur sur l’exécution des différentes phases (<em>crawling</em> et attaque). Cela s’est fait par l’ajout d’un vrai mécanisme de sessions basé sur des bases de données SQLite 3. Jusqu'à présent, il était possible de stopper la recherche via <code>Ctrl</code> + <code>C</code> pour passer aux attaques, et arrêter les attaques signifiait stopper le logiciel. De même, dans les précédentes versions seules les URL et formulaires trouvés lors de la recherche étaient conservés.</p>
<p>Désormais, les sessions permettent de garder les URL et formulaires, mais aussi de savoir quels modules ont déjà attaqués, quelles vulnérabilités ont déjà été trouvées et quelles requêtes HTTP sont associées. On peut dès lors stopper durant la phase d’attaque sans avoir à tout recommencer. Cela se voit lors d’un <code>Ctrl</code> + <code>C</code> qui propose alors soit de continuer les attaques du module existant, soit de passer au module d’attaque suivant, soit de quitter sans générer le rapport, soit de quitter et générer le rapport. Relancer le logiciel permet alors de reprendre par défaut exactement où l’on était resté. Plusieurs nouvelles options permettent d’agir sur la session si l’on souhaite par exemple relancer les attaques sans relancer le <em>crawling</em>.</p>
<p>Au lancement de l’application, l’utilisateur est dorénavant accueilli par un <em>ASCII art</em> car, bien sûr, un outil d’attaque n’est pas concevable sans <a href="https://fr.wikipedia.org/wiki/Art_ASCII">art ASCII</a> (par exemple <em>sqlmap</em> ou <em>Metasploit</em>, pour ne pas les citer).</p>
<h3 id="contrôle-des-requêtes">Contrôle des requêtes</h3>
<p>Ceux qui ont déjà écrit un <em>crawler</em> savent à quel genre de problèmes on doit faire face. Un cas d’école et celui des calendriers : leur contenu est généré dynamiquement, tout comme les liens trouvables dans l’application. On peut suivre éternellement le lien permettant de passer à l’année suivante, ça ne s’arrêtera jamais. Wapiti avait déjà des garde‐fous pour ce genre de problématiques, mais de nouvelles options permettent de contrôler plus finement le <em>crawler</em>. Au total neuf options permettent de fixer la profondeur de recherche, limiter la durée de parcours, spécifier une intensité de recherche, limiter le nombre de liens sous un même dossier, ou encore limiter le nombre de variantes d’une <em>query string</em> pour un script.</p>
<p>Plus que le parcours, c’est le temps de réalisation des attaques qui peut être excessif. Si un module qui dispose de cinq charges s’attaque à une URL avec cinq paramètres, il devra envoyer 3 125 (5<sup>5</sup>) requêtes. Je vous laisse imaginer le temps qu’il faut pour s’attaquer à un formulaire disposant de plus de 50 entrées.</p>
<p>En plus de pouvoir supprimer des paramètres des URL, Wapiti peut maintenant ignorer certains paramètres lors de l’attaque. Il peut aussi ignorer les URL et formulaires ayant plus d’un certain nombre d’entrées. Enfin, l’option d’intensité de la recherche (<code>--scan-force</code> ou <code>-S</code>) propose des valeurs similaires à Nmap (de <em>paranoid</em> à <em>insane</em>) qui permettent de réduire plus ou moins fortement la quantité d’URL au fur et à mesure que le nombre de paramètres augmente.</p>
<h2 id="installation-et-utilisation">Installation et utilisation</h2>
<p>Le wiki du projet contient <a href="https://sourceforge.net/p/wapiti/wiki/Installation/">une page dédiée à l’Installation</a> du logiciel sous différentes distributions GNU/Linux, ainsi que sous Windows. Des tutoriels vidéos ont aussi été créés. L’utilisation de base est très simple, on appellera juste Wapiti avec l’option <code>-u</code> pour spécifier l’URL servant de base pour le périmètre d’attaque (le périmètre par d’attaque par défaut est <em>folder</em>, donc tout ce qui se trouve sous le chemin spécifié est attaqué). Les modules d’attaque les plus courants seront lancés une fois la recherche terminée et le rapport sera généré.</p>
<p><a href="http://wapiti.sourceforge.net/wapiti.1.html">La page de manuel</a> est sans doute l’aide la plus fournie pour contrôler plus en détail Wapiti.</p>
<h2 id="aider-le-logiciel">Aider le logiciel</h2>
<p>En tant qu’utilisateurs de GNU/Linux, vous pouvez aider le logiciel en créant des paquets pour cette nouvelle version pour votre distribution favorite ou demander à un mainteneur la création du paquet. J’ai déjà cru voir un paquet pour Gentoo ainsi qu’un paquet Arch Linux sur un dépôt spécifique.</p>
<p>Le logiciel est gratuit et je le développe sur mon temps libre. Vous pouvez aussi contribuer via une aide financière au projet qui sera la bienvenue.</p></div><div><a href="https://linuxfr.org/news/wapiti-3-0-0-nouvelle-version-du-scanneur-de-vulnerabilites-web.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/113514/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/wapiti-3-0-0-nouvelle-version-du-scanneur-de-vulnerabilites-web#comments">ouvrir dans le navigateur</a>
</p>
devoopBenoît Sibaudpalm123Davy Defaudbubar🦥https://linuxfr.org/nodes/113514/comments.atomtag:linuxfr.org,2005:News/347892013-11-12T08:30:46+01:002013-11-12T08:30:46+01:00Sortie de Wapiti 2.3.0Licence CC By‑SA http://creativecommons.org/licenses/by-sa/3.0/deed.fr<div><p>Une nouvelle version du scanneur de vulnérabilités web <em>Wapiti</em> est disponible.</p>
<p><img src="//img.linuxfr.org/img/687474703a2f2f7761706974692e736f75726365666f7267652e6e65742f7761706974695f3430302e706e67/wapiti_400.png" alt="logo wapiti" title="Source : http://wapiti.sourceforge.net/wapiti_400.png"></p>
<p><em>Wapiti</em> est un logiciel libre sous licence GNU GPL v2 permettant d'auditer la sécurité des applications web. Il est développé en <em>Python</em> et s'utilise en ligne de commande. Cette version est principalement une refonte du logiciel et la grande majorité des changements s'est faite « sous le capot » pour prendre en charge des fonctionnalités manquantes comme les nouveaux éléments du HTML 5 et les liens générés par du JavaScript.</p></div><ul><li>lien nᵒ 1 : <a title="http://wapiti.sourceforge.net/" hreflang="fr" href="https://linuxfr.org/redirect/88386">Wapiti</a></li><li>lien nᵒ 2 : <a title="http://my.opera.com/devloop/blog/2013/10/24/wapiti-2-3-0" hreflang="fr" href="https://linuxfr.org/redirect/88387">Les nouveautés de la version 2.3.0 en détail</a></li><li>lien nᵒ 3 : <a title="http://my.opera.com/devloop/blog/2013/10/27/importance-et-difficulte-du-packaging-python" hreflang="fr" href="https://linuxfr.org/redirect/88388">De l'importance et de la difficulté du packaging Python : mon combat avec le setup.py et py2exe</a></li><li>lien nᵒ 4 : <a title="https://www.alionet.org/" hreflang="fr" href="https://linuxfr.org/redirect/88389">Alionet.org : communauté francophone openSUSE</a></li><li>lien nᵒ 5 : <a title="http://www.gimp-attitude.org/" hreflang="fr" href="https://linuxfr.org/redirect/88390">Gimp-Attitude : communauté d'utilisateurs de GIMP</a></li></ul><div><h2 id="présentation">Présentation</h2>
<p><em>Wapiti</em> est un logiciel libre sous licence GNU GPL v2 permettant d'auditer la sécurité des applications web. Il est développé en <em>Python</em> et s'utilise en ligne de commande. Il fonctionne en trois étapes :</p>
<ol>
<li>premièrement, la découverte de l'application web via l'exploration des pages du site. L'objectif étant de trouver le plus de liens et formulaires acceptant la soumission de données.</li>
<li>deuxièmement, la phase d'attaque en boîte noire qui consiste à envoyer des données formatées spécialement dans le but d'essayer de causer des problèmes dans l'application web (messages d'erreurs, timeout, etc). Le comportement de l'application web face à ces données permet de déterminer si un script est potentiellement vulnérable. Par exemple la présence d'une apostrophe dans un champ de formulaire peut provoquer à sa soumission une erreur SQL si l'auteur de l'application web n'a pas échappé correctement une variable avant de l'intégrer dans une requête SQL.</li>
<li>dernière étape, la génération d'un rapport de scan dans un format choisi par l'utilisateur (JSON, texte, HTML, XML…).</li>
</ol><h2 id="améliorations-sous-le-capot">Améliorations sous le capot</h2>
<p>Cette version est principalement une refonte du logiciel et la grande majorité des changements s'est faite "sous le capot". Le code a été revu et corrigé dans un objectif de gain en stabilité et en lisibilité. L'utilisation d'un <a href="https://github.com/nvie/vim-flake8">vérificateur PEP8</a> a permis d'augmenter la qualité du code. Un gros travail a été fait sur la gestion de l'unicode qui causait de nombreux bugs dans la précédente version (le web c'est comme une boîte de chocolat, on ne sait jamais sur quel(s) jeu(x) de caractères on va tomber). La bibliothèque <a href="https://code.google.com/p/httplib2/">httplib2</a> a été remplacée par <a href="http://docs.python-requests.org/en/latest/">requests</a>. En dehors d'être plus agréable à utiliser, cette bibliothèque apporte surtout la gestion des cookies qui étaient auparavant gérés directement dans <em>Wapiti</em>.</p>
<p>Le module <em>lswww</em>, la partie de <em>Wapiti</em> chargée d'explorer les pages web et de recenser URLs et formulaires, a aussi été fortement amélioré. L'objectif était de combler les lacunes mises en évidence dans un article du magazine <em>MISC</em> (n°65, janvier/février 2013). Pour cela, l'analyseur HTML a été revu pour prendre en charge certaines balises oubliées ainsi que les nouvelles balises de formulaires apparues avec HTML5. Afin de trouver plus d'URL, un petit analyseur de fichiers SWF a aussi été rajouté ainsi qu'un mini interpréteur javascript (qui n'en est qu'à ses balbutiements) basé sur <a href="https://code.google.com/p/pynarcissus/">PyNarcissus</a>. Ces modifications ont permis à <em>Wapiti</em> d'obtenir un score de 48% sur <a href="https://code.google.com/p/wivet/">Wivet</a>, ce qui le met à peu près au même niveau que deux de ses concurrents <em>NetSparker</em> et <em>w3af</em>.</p>
<h2 id="nouvelles-fonctionnalités">Nouvelles fonctionnalités</h2>
<p>Une limitation des anciennes versions ne permettait pas au logiciel d'injecter ses payloads dans les paramètres de l'URL sur les requêtes HTTP POST. C'est-à-dire que sur un formulaire envoyé par POST, seuls les champs <em>"input"</em> étaient attaqués et pas ceux présents dans l'URL (spécifiée via l'attribut <em>"action"</em> du formulaire). C'est maintenant corrigé. De plus, <em>Wapiti</em> est dorénavant capable de s'attaquer aux formulaires d'envoi de fichier : il gère le multipart. Les injections se font sur le nom de fichier envoyé qui est potentiellement mis en base de données par l'application web ou peut être passé à des commandes shell sans vérification préalable.</p>
<p>Des informations plus détaillées sont données quand une vulnérabilité a été trouvée. Ainsi, on retrouvera dans un rapport de scan la requête HTTP qui a causé le problème ainsi qu'une ligne de commande <em>cURL</em> permettant de reproduire le problème (très pratique pour avoir un proof-of-concept rapide).</p>
<p>Pour une liste exhaustive des nouveautés, je vous invite à lire <a href="http://my.opera.com/devloop/blog/2013/10/24/wapiti-2-3-0">cet article de mon blog</a>.</p>
<h2 id="remerciements">Remerciements</h2>
<p>Je tiens à remercier toutes les personnes m'ayant aidé sur cette nouvelle version. En particulier les membres de deux communautés liées à l'Open-Source qui méritent d'être connues, <em>Alionet.org</em> (pour leur aide sur les tests et le packaging pour <em>openSUSE</em>) et <em>Gimp-Attitude</em> (pour le nouveau logo).</p></div><div><a href="https://linuxfr.org/news/sortie-de-wapiti-2-3-0.epub">Télécharger ce contenu au format EPUB</a></div> <p>
<strong>Commentaires :</strong>
<a href="//linuxfr.org/nodes/100295/comments.atom">voir le flux Atom</a>
<a href="https://linuxfr.org/news/sortie-de-wapiti-2-3-0#comments">ouvrir dans le navigateur</a>
</p>
devoopBenoît SibaudFlorent Zarapalm123rootixclaudexZeroHeurehttps://linuxfr.org/nodes/100295/comments.atom