Wapiti, un scanneur de vulnérabilités web

Posté par  . Modéré par Thomas Petazzoni.
Étiquettes :
1
3
août
2006
Sécurité
Wapiti est un logiciel libre développé en Python qui va se charger d'auditer la sécurité d'une application web en testant différentes attaques comme l'aurait fait un pirate. Ce logiciel libre est capable de détecter différentes failles de sécurité, par exemple : les injections SQL, les inclusions de fichiers locaux ou distants et les failles XSS.

Pour fonctionner, le logiciel extrait les liens et formulaires à attaquer. Pour chaque script acceptant des paramètres, il va appeler le script en question en testant chaque paramètre les uns après les autres. Toute la force de Wapiti se trouve dans le fait qu'il utilise les paramètres existants pour réaliser ses attaques. En utilisant un code Javascript inoffensif contenant l'url et le champ vulnérables encodés en hexadécimal et un système d'expressions régulières il est capable de retrouver quel script se cache derrière cette faille. Wapiti scanne l'arborescence une première fois pour récupérer les urls des scripts attaquables. Ensuite il va 'fuzzer' les paramètres et voir quelles failles sont présentes. Il re-scanne alors les pages pour voir s'il n'y a pas des XSS permanents.

Wapiti a été notamment utilisé par l'auteur pour traquer les failles de sécurité XSS dans un logiciel libre en PHP/MySQL, ce qui a permis d'identifier puis de corriger quelques failles de sécurité.

Aller plus loin

  • # précision sur la news

    Posté par  . Évalué à 9.

    J'ai utilisé Wapiti pour corriger les problèmes de failles de sécurité dans Dokeos, un logiciel libre de formation en ligne (e-learning).

    Il y a surement des failles que Wapiti ne détecte pas encore, mais il permet de faire un gros nettoyage.

    Sinon, pour remercier le créateur de Wapiti et l'encourager à continuer, Dokeos Company lui a fait un don de 600 EUR : http://www.dokeos.com/fr/news.php#146
    • [^] # Re: précision sur la news

      Posté par  . Évalué à 2.

      C'est dommage, la version 1.1.0 requiert python 2.4 à cause de cookielib, alors même que d'après le help l'authentification login%password ne fonctionne pas avec python 2.4 (BTW, c'est authentication en anglais ;-)

      • [^] # Re: précision sur la news

        Posté par  (site web personnel) . Évalué à 1.

        Une version 1.1.1 vient de voir le jour et corrige quelques bugs (dont un bug mineur de traduction cité dans cette page :-p )
        Pour ce qui est de l'auth (comme ça je suis sûr de ne pas me tromper) un développeur Python m'a avoué que le module existant était buggé avec la version 2.4 mais que ça devrait être corrigé pour la prochaine version.
        • [^] # Re: précision sur la news

          Posté par  . Évalué à 2.

          Merci pour les corrections :-) Je me souviens avoir galéré pour utiliser l'auth handler avec urllib2, pour finir par gérer ça directement (en ajoutant le header construit "à la main").
  • # Review

    Posté par  . Évalué à 1.

    Bon je viens de tester, et c'est plutot pas mal.

    Par contre, il manque à mon avis quelques fonctionnalités que j'ai du rajouter :
    * Possibilité d'exclure un répertoire (et tous ses sous-répertoires) et pas seulement un fichier
    * Un option pour prendre en compte aucun paramètres dans l'URL. Cela est très utile par exemple pour des forums où le nombre de paramètres peut être très important aors que les pages générés sont quasiment identiques. On peut même imaginer de rajouter une option pour ajouter une whitelist.

    Sinon un petit bug, dans wapity.py, à la ligne 326, il est possible que la variable u ne sont pas initialisée (si on a une une exception urllib2.URLError).

    Sinon, c'est parfait.
    Bon moi j'ai quelque pages à aller corriger :-)
    • [^] # Re: Review

      Posté par  . Évalué à 1.

      Oui, ce serait intéressant d'exclure un répertoire.

      Y-a-t-il quelque chose de prévue pour ne pas boucler dans les scripts à l'infini.

      Exemple : je teste wapiti sur une application comportant un calendrier php et il n'arrive pas à sortir du calendrier dès qu'il atteind celui-ci. Le calendrier n'est pas bloqué à une plage de temps et wapiti teste toutes les années.

      Merci

      Mathieu
      • [^] # Re: Review

        Posté par  (site web personnel) . Évalué à 1.

        Un problème similaire m'a déjà été reporté :p
        C'est à cette occasion que j'ai inclus la possibilité d'exclure un paramêtre des urls... pour l'instant c'est la seule possibilité.

        Quand à l'exclusion d'un répertoire je note...

        La prochaine version (1.1.3) corrigera juste un bug, je ne me suis pas attaqué aux nouvelles fonctionnalités pour l'instant

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.