Results 1 to 2 of 2

Thread: BlindElephant und Backtrack4 - Workaround um Python 2.5.2

Hybrid View

  1. #1
    Just burned his ISO
    Join Date
    Apr 2010
    Posts
    11

    Default BlindElephant und Backtrack4 - Workaround um Python 2.5.2

    Folgendes HowTo beschreibt im wesentlichen wie man das aufkommende Qualys WebApp Fingerprinting "BlindElephant" unter BackTrack 4 zum laufen bekommt.

    Komponenten:
    1. BlindElephant: BlindElephant Web Application Fingerprinter
    2. Python 2.7.2: Download Python

    Ein aktuell gepatchtes BT4 bringt die Python Version 2.5.2 mit sich. Blindelephant hätte allerdings gerne ein 2.6.x aber bitte kein Python 3.x, welches sich zusätzlich unter BT4 mit APT installieren lassen würde.

    Mittels
    Code:
    svn checkout https://blindelephant.svn.sourceforge.net/svnroot/blindelephant
    erhält man die entsprechende aktuelle Version der Quellen die später, dank Python nicht weiter beackert werden müssen.

    Anschließend wechselt man ins SVN Verzeichniss “blindelephant/trunk/src/blindelephant” wo man nun erfolgreich die “BlindElephant.py” finden sollte.

    Code:
    root@bt:/tmp# cd blindelephant/trunk/src/blindelephant/
    root@bt:/tmp/blindelephant/trunk/src/blindelephant# ls -la
    total 84
    drwxr-xr-x 4 root root  4096 Aug  3 11:21 .
    drwxr-xr-x 4 root root  4096 Aug  3 11:21 ..
    drwxr-xr-x 6 root root  4096 Aug  3 11:21 .svn
    -rw-r--r-- 1 root root  2987 Aug  3 11:21 BlindElephant.py
    -rw-r--r-- 1 root root 10120 Aug  3 11:21 Configuration.py
    -rw-r--r-- 1 root root 11014 Aug  3 11:21 DifferencesTables.py
    -rw-r--r-- 1 root root  1103 Aug  3 11:21 FileMassagers.py
    -rw-r--r-- 1 root root 11219 Aug  3 11:21 FingerprintUtils.py
    -rw-r--r-- 1 root root 15493 Aug  3 11:21 Fingerprinters.py
    -rw-r--r-- 1 root root  1427 Aug  3 11:21 Loggers.py
    -rw-r--r-- 1 root root  2813 Aug  3 11:21 Scanner.py
    -rw-r--r-- 1 root root     0 Aug  3 11:21 __init__.py
    drwxr-xr-x 5 root root  4096 Aug  3 11:21 dbs
    root@bt:/tmp/blindelephant/trunk/src/blindelephant#
    Ein “python -V” zeigt die aktuelle Python Version also die 2.5.2. Probieren wir nun das Programm zu bemühen uns dienlich zu sein:

    Code:
    python ./BlindElephant.py
    Error: url and appName are required arguments unless using -l, -u, or -h
    Usage: BlindElephant.py [options] url appName
    Options:
     -h, --help            show this help message and exit
     -p PLUGINNAME, --pluginName=PLUGINNAME
     Fingerprint version of plugin (should apply to web app
     given in appname)
     -s, --skip            Skip fingerprinting webpp, just fingerprint plugin
     -n NUMPROBES, --numProbes=NUMPROBES
     Number of files to fetch (more may increase accuracy).
     Default: 15
     -w, --winnow          If more than one version are returned, use winnowing
     to attempt to narrow it down (up to numProbes
     additional requests).
     -l, --list            List supported webapps and plugins
     
    Use "guess" as app or plugin name to attempt to attempt to
    discover which supported apps/plugins are installed.
    Was aber so nicht bleiben wir, wenn wir es in Aktion versetzen wollen:

    Code:
    python BlindElephant.py http://laws.qualys.com guess
    Probing...
    Traceback (most recent call last):
     File "BlindElephant.py", line 47, in <module>
     apps = g.guess_apps()
     File "/tmp/blindelephant/trunk/src/blindelephant/Fingerprinters.py", line 214, in guess_apps
     self.error_page_fingerprint = wafu.identify_error_page(self.url)
     File "/tmp/blindelephant/trunk/src/blindelephant/FingerprintUtils.py", line 58, in identify_error_page
     data = urlread_spoof_ua(url)
     File "/tmp/blindelephant/trunk/src/blindelephant/FingerprintUtils.py", line 241, in urlread_spoof_ua
     data = urllib2.urlopen(req, timeout=TIMEOUT).read()
    TypeError: urlopen() got an unexpected keyword argument 'timeout'
    Eine kurze Suche im Netz könnte den Researcher nun dazu bringen, dass die urlib2.urlopen Funktion von Python: a) eine Built-In Funktion ist und b) in Python 2.5.2 keinen Parameter “timeout” kennt und ihn daher auch nicht akkzeptiert, was hier zu einem Programmabbruch führt.

    Würde man nun sein BT4 mit Python3.x per APT beglücken, würde es der Lösung letztendlich nicht dienlich sein:

    Code:
    python3.0 BlindElephant.py http://laws.qualys.com guess
    Traceback (most recent call last):
     File "BlindElephant.py", line 2, in <module>
     import Fingerprinters as wafp
     File "/tmp/blindelephant/trunk/src/blindelephant/Fingerprinters.py", line 73
     print "ver_list before winnowing:"
     ^
    SyntaxError: invalid syntax
    Sei’s drum – BlindElephant scheint ja noch in den Kinderschuhen zu stecken und “funktioniert halt einfach noch nicht”???

    Schelm wer denkt, dass wir es dabei belassen. Wir haben hiermit soeben rausgefunden, dass die README vom BlindElephant nicht lügt und wir ein Python >= 2.6.x brauchen und das es noch nicht mit einem Python 3.x funktioniert.
    Besorgen wir uns nun also ein Python, dass den Anforderungen entspricht und machen uns die Hände schmutzig ohne dabei das eigene System zu versaubeuteln.

    Ein entsprechendes Python zwischen 2.6 und 3.x findet man unter Download Python [3]. Dieses lässt sich via:

    Code:
    ./configure --prefix=/opt/python2.7
    make
    make install
    ins angegebene –prefix Verzeichniss installieren und anschließend auch dort ausführen, ohne die anderen Systemkomponenten zu beeinträchtigen:

    Code:
    root@bt:/tmp/blindelephant/trunk/src/blindelephant# /opt/python2.7/bin/python BlindElephant.py http://laws.qualys.com guess
    Probing...
    Possible apps:
    movabletype
    Auch ein blinder Elefant findet mal eine Erdnuss – am o. g. Beispiel ist also eine WebApp namens “movabletype” aktiv, die wir uns nun mit folgendem Aufruf näher angucken wollen um eine Versionsnummer zu finden:

    Code:
    root@bt:/tmp/blindelephant/trunk/src/blindelephant# /opt/python2.7/bin/python BlindElephant.py http://laws.qualys.com movabletype
    Loaded /tmp/blindelephant/trunk/src/blindelephant/dbs/movabletype.pkl with 96 versions, 2229 differentiating paths, and 209 version groups.
    Starting BlindElephant fingerprint for version of movabletype at http://laws.qualys.com
     
    Hit http://laws.qualys.com/mt-static/mt.js
    Possible versions based on result: 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM
     
    Hit http://laws.qualys.com/mt-static/js/tc/client.js
    Possible versions based on result: 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM
     
    Hit http://laws.qualys.com/mt-static/css/main.css
    Possible versions based on result: 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM
     
    Hit http://laws.qualys.com/tools/run-periodic-tasks
    File produced no match. Error: Error code: 404 (Not Found)
     
    Hit http://laws.qualys.com/mt-static/js/tc/tagcomplete.js
    Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM
     
    Hit http://laws.qualys.com/mt-static/js/edit.js
    Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM
     
    Hit http://laws.qualys.com/mt-static/js/tc/mixer/display.js
    Possible versions based on result: 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM
     
    Hit http://laws.qualys.com/mt-static/js/archetype_editor.js
    Possible versions based on result: 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM
     
    Hit http://laws.qualys.com/mt-static/js/tc/mixer.js
    Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM
     
    Hit http://laws.qualys.com/mt-static/js/tc/tableselect.js
    Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM
     
    Hit http://laws.qualys.com/mt-static/js/tc/focus.js
    Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM
     
    Hit http://laws.qualys.com/mt-static/js/tc.js
    Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM
     
    Hit http://laws.qualys.com/mt-static/css/simple.css
    Possible versions based on result: 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM
     
    Hit http://laws.qualys.com/mt-static/mt_ja.js
    Possible versions based on result: 4.2-en, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.23-en-OS, 4.24-en, 4.24-en, 4.24-en-COM
     
    Hit http://laws.qualys.com/mt-static/js/tc/gestalt.js
    Possible versions based on result: 4.1-en, 4.1-en-CS, 4.2-en, 4.21-en, 4.21-en, 4.21-en-COM, 4.22-en, 4.22-en, 4.22-en-COM, 4.23-en, 4.23-en, 4.23-en-COM, 4.24-en, 4.24-en, 4.24-en-COM
     
     
    Fingerprinting resulted in:
    4.22-en
    4.22-en-COM
    4.23-en
    4.23-en-COM 
    Best Guess: 4.23-en-COM
    Best Guess… lasst uns probieren raten durch Wissen zu ersetzen und den Elephanten etwas genauer hinsehen zu lassen. Die Option “-w” schiebt noch ein paar mehr Vergleiche mit in das Fingerprinting und kann, je nach eingesetztern WebApp erfolgsversprechender sein:

    Code:
    root@bt:/tmp/blindelephant/trunk/src/blindelephant# /opt/python2.7/bin/python BlindElephant.py -h
    ...
      -w, --winnow          If more than one version are returned, use winnowing
                            to attempt to narrow it down (up to numProbes
                            additional requests).
    ...
    Viel Spaß beim Fingerprinten....

  2. #2
    Moderator S3M73X's Avatar
    Join Date
    Feb 2010
    Posts
    103

    Default Re: BlindElephant und Backtrack4 - Workaround um Python 2.5.2

    Nettes Tutorial. Habe es gerade auf BT4 R1 nachvollzogen.
    Meiner Meinung nach wird das Tool aber ein wenig zu sehr gehyped, da der Ansatz selber ja nichts neues ist und es schon seit einiger Zeit Tools dafuer da sind, deshalb kapier ich auch nicht dass sowas auf der Blackhat gezeigt wird... ist halt doch nicht so uber-leet wie man denkt. ^^

    Is ganz witzig allerdings hat es eine Drupal-Installation nicht erkannt wo man im HTML-Source der Page sehen kann dass es Drupal ist weil naemlich drupal drin steht...
    Nach einem expliziten Scan imt drupal konnte man sich dann aus 5 Versionen eine aussuchen wobei er als "best-guess" eine dev-version rausgehaun hat. Auch Versuche mit -w und 50 heruntergeladenen Files brachten keine hoehere Genauigkeit.

    Wenn ich jetzt boese waere wuerde ich auf die Papers von Qualys verweisen welche sie revidieren mussten nachdem sich z.B. leute von phpBB eingeschaltet haben und den Jungs erklaert haben dass ihre Forschungsergebnisse quasi totaler Quatsch sind was phpBB angeht (genaueres hier ->https://community.qualys.com/message/1273).



    FAZIT:
    + gutes HOWTO
    + nettes Tool
    + Tool bietet seine Funktion als Library-Schnittstelle fuer eingene Python-Tools an
    - Results ungenau / imho zu schwach

    Webapps sind keine Raketenwissenschaft mehr und die Angriffstechniken auch nicht bahnbrechend oder hochkomplex von daher haette ich ein wenig mehr erwartet. Werde es noch ein wenig eingehender testen. Vielleicht wirds ja bald in w3af/metasploit integriert und noch etwas mit mehr Daten gefuettert. Typo3 waere z.B. wichtig). Na mal sehen was draus wird, das Potential ist schon da.

    edit: den offsec-blog hat es auch nicht als wordpress erkannt und auch nach dem angeben von wordpress kommt nix... einziger erfolg war ein phpbb was erkannt wurde. ahja okay und grad hab ich noch den blog vom deutschen bt-team getestet das hats auch hinbekommen.
    Last edited by S3M73X; 08-15-2010 at 03:05 PM. Reason: grammar

Similar Threads

  1. Python Help
    By hinoshori in forum Beginners Forum
    Replies: 2
    Last Post: 03-18-2010, 08:32 PM
  2. python error
    By h4x0r in forum OLD BackTrack 4 Bugs and Fixes
    Replies: 2
    Last Post: 01-21-2010, 01:03 PM
  3. Python
    By freemymind in forum OLD Programming
    Replies: 3
    Last Post: 08-19-2009, 05:27 AM
  4. Updating Python to 2.5.1 on BT2
    By jackdanielz in forum OLD Newbie Area
    Replies: 2
    Last Post: 02-11-2008, 06:07 PM
  5. BT3 with issues with integrated video + workaround
    By Darkpaw in forum OLD BT3beta Bugs and Fixes
    Replies: 3
    Last Post: 01-09-2008, 04:24 PM

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •