mercredi, juillet 02, 2008

Ratproxy un parser de vulnérabilités passif pour les Web Services

N'étant pas un furieux de la prog' (chacun son boulot), j'avoue avoir passé pas mal de temps à tester des scanners passifs de vuln' web à base des différents parser www dispo' ; que cela soit les vieux parser Perl, le bizaroïde hpricot (en Ruby) ou un bricolage de Python (ça c'est pour le troll). Bref, un passe-temps beaucoup plus sympa que la rédaction de propales.

Après avoir pratiquer, puis écarter le célèbre nikto, w3af avec son code source super bien documenté et l'étonnant sts-scanner, en raison de leur trop grande agressivité, j'ai finalement jeté mon dévolu sur l'outil Ratproxy de Michal Zalewski qui semble de loin le plus prometteur.

Le fait est qu'il devient de plus en plus difficile de dénicher des Pentests d'appli Web qui soient sur plate-forme de test ou de pré-prod'. De toute manière, lorsque l'on insiste un peu trop lourdement pour disposer d' un environnement hors prod', on s'en tire souvent avec une base boguée datant de 2 ans et des versions d'appli du type 0.1.0.27 qui semblent sorties tout droit d'un mauvais trip de pisseur de code stagiaire.

De toute façon, on a l'air crétin au kick-off en face du gros malin de développeur en chef qui n'arrête pas de vous contrer en affirmant que la nouvelle version n'est plus vulnérable... A moins d'avoir deux jours complets à passer sur l'appli (cela arrive encore) ou bien être assez cinglé pour utiliser un Canvas ou un Core Impact sur de la prod' (même en passant toutes mes nuits sur les sources, je n'aurais pas d'avantage confiance en leurs rootkit-maison) on est parfois tenté d'utiliser un scanner de vuln' Web pour ne pas rater son RER (Ivry la bataille, ça fait loin de la Défense...).

Mais voila, en prod, l'utilisation d'un de ces scanners est un véritable suicide. Sans compter les dénis de service sur les répartiteurs de charge poussifs, un tel outil génère toujours un nombre incalculable de XSS qui sont autant de nano-bombes à fragmentation vertes fluo portant votre dédicace... D'où ma recherche d'une solution pouvant soit être utilisée en proxy passif lors de l'exploration de l'appli' avec détection à la volée des vuln' ou soit pouvant être utilisée à partir des logs d'un Burp Proxy, de WebScarab (ou même de Paros).

Sts-scanner avait l'air bien partie sur le papier, sachant qu'il prend les logs de Burp. Burp reste aujourd'hui mon outil préféré, bien qu'il soit beaucoup moins stable sous linux que sous Windows (si vous avez une astuce pour agrandir la RAM allouée à un processus java sous Linux je suis preneur). Cependant, j'ai vite déchanté lorsque je me suis aperçu que les logs de Burp lui permettaient uniquement de traduire le javascript et le java pour passer les mécanismes d'authentification (hpricot ne comprend ni le javascript, ni le java, et pour ce qui est des technos Web2.0...) et qu'il était finalement un pur scanner actif avec tout l'arsenal d'XSS qui va bien...

Ratproxy semble l'outil que j'attendais depuis longtemps, il parle le JSON (avec un peu de bol on doit pouvoir également lancer les premiers tests sur les identifiants UDDI et DISCO) et surtout son option -d permet de choisir finement les domaines à tester (ce qui est souvent indispensables avec les appli' métier de nos chères fusions/acquisition/filiales-à-15%_du_capital...)

N'ayant pas sous la main d'appli Web Services permettant de tester pleinement Ratproxy, je vous promets de vous faire une retour d'expérience plus complet dans les prochaines semaines (peut être la semaine prochaine si le client est au rendez-vous)...

5 commentaires:

  1. Les scanners automatiques ça apprend à bien pipoter pour justifier pourquoi les administrateurs ont reçu 300 e-mails dans la nuit et qui contiennent du texte bizarre...
    Je n'arrive toujours pas à faire confiance non plus dans Acunetix. C'est bourré d'options dures à trouver et qui ne sont pas poussées à fond. Pourquoi il recherche seulement phpMyAdmin et pas phpmyadmin ou PhpMyAdmin ? Pourquoi il ne recherche pas les répertoires Nagios et les autres applications connues ?
    Maintenant utiliser un proxy-passif et bidouiller tranquillement avec firefox/tamper data/firebug ça le fait pas mal aussi.
    Et puis s'il y a moyen de bien logguer tout ce qui a été fait pour tracer les actions...
    Par exemple paros trace les requêtes de l'utilisateur mais pas de son scanner automatique... Alors il faut croiser les doigts pour qu'il ne tombe pas sur un formulaire qui va spammer les admins :)
    Sinon burp est bien appréciable pour les bruteforces mais là encore il faut se faire ses propres listes parce que celles de base ...

    RépondreSupprimer
  2. Je me suis bien enflammé sur Ratproxy, car il semblait complémentaire de l'utilisation que l'on peut faire d'outils comme Burp ou Paros.

    Michal n'a pas rejoint la dream Team de Google pour rien. Tu remarqueras qu'il à ton âge Flo !!

    Sinon, il reste pas mal de choses à faire pour compléter cet outil qui est passé cette semaine dans l'Open Source.

    J'ai lu rapidement le code, ce n'est pas aussi bô que w3af, mais cela reste compréhensible pour du C.

    Il reste cependant hyper concentré sur les failles XSS et Jason. Je suis certain de ne pas l'utiliser lors d'un audit de scripts CGI sur une console d'admin façon Windweb sur VxWork...

    RépondreSupprimer
  3. Je vais tester bientôt un scanner passif pour un site Web classique en prod' (Web 1.0 avec uniquement des GET et des POST sans appels DOM dans tous les sens). On peut le trouver ici : http://www.edge-security.com/proxystrike.php

    RépondreSupprimer
  4. Décidément, ratproxy est bien le meilleur choix, même pour les appli' web à la sauce 1.0. Attention à ne pas utiliser les options -XC qui le rendent agressif sur la prod'...

    RépondreSupprimer
  5. burp suite > paros


    va jeter un oeuil sur la 1.2 qui arrive d'ici noel !!!

    je suis utilisateur commercial depuis le debut, preferable de cracher ~125$ USD sur ce soft que de cracher 30,000$ USD pour une merde comme appscan, webinspect

    RépondreSupprimer