no one is safe ...

Metasploit - hacking websites

Webserver, bzw. die darauf gehosteten Webseiten, sind häufig ein essentielles Instrument für Unternehmen. Diese Webauftritte können Webshops, Foren, Blogs und viele weitere dynamische wie statische Inhalte beheimaten, die sehr schnell einen sehr hohen Komplexitätsgrad mit hohem Angriffspotential erreichen können.


Neben den typischen Schwachstellen der eingesetzten Webserver die sich durch geeigneten Exploitcode ausnützen lassen, ist es bei den darauf laufenden Webanwendungen sehr häufig zu beobachten, dass es gravierende Schwächen in der Anwendungslogik gibt. Solche Fehler bzw. Schwachstellen ermöglichen unter Anderem folgende Angriffsszenarien:

  • Content Injection
  • Cross Site Request Forgery (CSRF)
  • Cross Site Scripting (XSS)
  • Failure to Restrict URL Access
  • File Execution
  • Information disclosure
  • SQL Injection

Die dargestellten Angriffe lassen sich im Normalfall nicht von herkömmlichen Firewalls erkennen oder filtern. Angriffe dieser Art durchlaufen somit ungehindert die vorhandenen Sicherheitsmechanismen (Firewall), schlagen ungefiltert an der Webanwendung auf und können dort erheblichen Schaden anrichten. Um dieses Gefährdungspotential noch weiter anzuheben werden in den meisten Fällen keine speziellen Tools für einen erfolgreichen Angriff einer Webanwendung benötigt. Im Normalfall reicht ein typischer Webbrowser für die Erkennung und den erfolgreichen Exploitingvorgang vollkommen aus. Um solche Angriffe erfolgreich abwehren zu können muss als erster Schutzmechanismus die Webanwendung an sich robust gestaltet bzw. programmiert werden. Bei der Entwicklung einer Applikation muss beachtet werden, dass alle Eingaben und Werte die an die Anwendung übergeben werden können im ersten Schritt als nicht vertrauenswürdig einzustufen sind und dementsprechend einer genauen Prüfung und Filterung unterzogen werden müssen. Neben dieser Härtung der Webanwendung und des Webservers sollten spezielle Webfilter (Web Application Firewall – WAF [24]) eingesetzt werden um vor Angriffen auf Anwendungsbasis geschützt werden.

Dieser Artikel stellt die Testmöglichkeiten, die Metasploit für Webanwendungen bietet, möglichst detailliert dar. Er befasst sich im Gegensatz zu den bisherigen Artikel nicht nur mit dem direkten Ausnützen von bekannten Schwachstellen um ein System zu kompromittieren, sondern vielmehr mit der Erkennung möglicher Angriffspunkte in der zu auditierenden Applikation. Die Webanwendung an sich als Angriffsvektor bietet in häufigen Fällen einen sehr hohen Erfolgsfaktor, da sehr viele Webanwendungen keine durchgängige, auf Sicherheit ausgelegte, Anwendungslogik aufweisen. Die dadurch entstehenden Problembereiche lassen sich in vielen Fällen für weitere Informationsgewinnung, für Angriffe auf User der Anwendung (z.B. XSS) oder auch für eine vollständige Kompromittierung (z.B. SQL Injection oder File Execution) einsetzen.

Die in diesem Artikel dargestellten Angriffe basieren auf der in Listing 1 dargestellten Metasploit Version 3.3.1. Als Linuxdistribution wird, Backtrack 4 (final) eingesetzt. Da die aktuelle SVN Version von Metasploit weitreichende Überarbeitungen im Datenbankbereich erfährt, wurde für die praktischen Beispiele dieses Artikels die etwas ältere Metasploit Version nachinstalliert.

Listing 1: Metasploit Installation

root@bt:~# wget http://www.metasploit.com/releases/framework-3.3.1-linux-i686.run
--2010...
21:08:18--  http://www.metasploit.com/releases/framework-3.3.1-linux-i686.run
Resolving
www.metasploit.com... 216.75.1.230
Connecting to www.metasploit.com|216.75.1.230|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 35338512 (34M) [application/octet-stream]
Saving to: `framework-3.3.1-linux-i686.run'

100%[========================================>] 35,338,512  1.67M/s   in 32s

2010-01-24 21:08:50 (1.06 MB/s) - `framework-3.3.1-linux-i686.run' saved [35338512/35338512]

root@bt:~# ls -l framework-3.3.1-linux-i686.run
-rw-r--r-- 1 root root 35338512 Dec  1 04:12 framework-3.3.1-linux-i686.run

root@bt:~# chmod 755 framework-3.3.1-linux-i686.run

root@bt:~# mv /opt/metasploit3 /opt/metasploit3-dev

root@bt:~# ./framework-3.3.1-linux-i686.run
Verifying archive integrity... All good.
Uncompressing Metasploit Framework v3.3.1 Installer (32-bit)........

Metasploit Framework v3.3.1 Release
    Report Bugs: msfdev@metasploit.com

This installer will place Metasploit into the /opt/metasploit3 directory.
Continue (yes/no) > yes
Extracting the Metasploit operating environment...

Extracting the Metasploit Framework...

Installing links into /usr/local/bin...

Installation complete.

Would you like to automatically update Metasploit?
AutoUpdate? (yes/no) > no

Warning: Automatic updates are disabled, update manually with:
$ sudo msfupdate

Would you like to update Metasploit right now?
Update? (yes/no) > no
Launch the Metasploit console by running 'msfconsole'

Exiting the installer...

root@bt:~# /opt/metasploit3/msf3/msfconsole

       =[ metasploit v3.3.1-release [core:3.3 api:1.0]
+ -- --=[ 452 exploits - 218 auxiliary
+ -- --=[ 192 payloads - 22 encoders - 8 nops
       =[ svn r7655 updated 54 days ago%c (2009.12.01)

msf > version
Framework: 3.3.1-release.7654
Console  : 3.3.1-release.7537


Wmap – the basics

Im Open Source Bereich fällt die Verfügbarkeit von Webapplication Vulnerability Scannern etwas bescheiden aus. Neben Nikto [20] gibt es weitere kleine Tools die jeweils Teilbereiche einer vollständigen Webanalyse abdecken dem Funktionsumfang kommerzieller Schwachstellenscanner wie Appscan, Webinspect oder Acunetix jedoch weit unterlegen sind. W3AF [21] ist zwar auf einem guten Weg die Lücke zwischen kommerzieller und Open Source basierter Software aufzufüllen, wird sich allerdings erst in einiger Zeit mit professionellen Werkzeugen messen können.

Metasploit als Exploiting Framework ist prinzipiell nicht für vollständige Sicherheitsanalysen von Webanwendungen gedacht, dennoch bringt es gewisse grundlegende Tests mit, die regelmäßig für interessante Ergebnisse als Basis für weiteres Angriffspotential sorgen. Die vorhandenen Directory und Filescanner von Wmap bringen beispielsweise ältere Dateiversionen, Backup Files oder ungeschützte Directory Listings zum Vorschein. Zusätzlich werden Verzeichnisse auf vorhandene Schreibrechte mit der HTTP PUT Methode geprüft, erkannte Parameter werden auf Anzeichen für SQL Injection getestet und ungeschützte administrative Interfaces kommen ebenso zu Tage wie HTTP Optionen oder die unterstützten SSL Ciphers die der Webserver bietet.

Als ersten Anhaltspunkt für den Einsatz von WMAP, befindet sich im Unterverzeichnis “documentation” eine Textdatei die den typischen Ablauf und die Funktionsweise von Wmap beschreibt.

Weitere Informationen die Wmap für eine korrekte Funktionsweise benötigt, befinden sich im Unterverzeichnis „data/wmap“. In diesem Verzeichnis befinden sich die in Listing 2 dargestellten Textdateien, die Auskunft darüber geben, welche Files und Directories von Wmap gesucht werden und wie Webseiten mit dem Statuscode 404 von Wmap erkannt werden können. Diese Konfigurationsdateien können manuell durch zusätzliche Werte oder Suchbegriffe ergänzt werden. Das in Listing 3 dargestellte Sample Profile eignet sich sehr gut für die Erstellung eigener Analyse Profile die nur die je nach Einsatzgebiet gewünschten Module ausführen. Beispielsweise kann das sehr zeitintensive Modul “wmap_brute_dirs” von typischen Audits ausgeschlossen werden. Die hier entfernten Module lassen sich im Anschluss über die Konsole oder die CLI jederzeit manuell ausführen.

Listing 2: Wmap data directory

root@s3cur1ty:/pentest/exploits/framework3# ls data/wmap/
wmap_404s.txt 
wmap_dirs.txt 
wmap_files.txt 
wmap_sample_profile.txt

Listing 3: Wmap sample profile

root@s3cur1ty:/pentest/exploits/framework3# cat ./data/wmap/wmap_sample_profile.txt
#
# WMAP Sample Profile
# wmap_run -e /path/to/profile
#
frontpage
frontpage_login
lucky_punch
options
version
wmap_backup_file
wmap_blind_sql_query
#wmap_brute_dirs
wmap_copy_of_file
wmap_dir_listing
wmap_dir_scanner
wmap_file_same_name_dir
wmap_files_dir
wmap_prev_dir_same_name_file
wmap_replace_ext
wmap_ssl_vhost
wmap_verb_auth_bypass
wmap_vhost_scanner
writable

Das in Listing 3 dargestellte Sample Profile lässt sich um weitere Module ergänzen. Folgende Liste stellt weitere Module dar die sich im Rahmen einer Webanalyse einbinden lassen:

  • wmap_ssl
  • wmap_webdav_internal_ip
  • wmap_soap_xml
  • wmap_robots_txt
  • wmap_webdav_website_content
  • wmap_cert
  • wmap_webdav_scanner
  • tomcat_manager
  • tomcat_administration
  • wmap_svn_scanner
  • ms09_020_webdav_unicode_bypass
  • wmap_dir_webdav_unicode_bypass
  • wmap_blind_sql_query
  • wmap_error_sql_injection

Weiterführende Informationen zu den einzelnen Modulen, könnenüber die msfconsole abgerufen werden. Für wmap_cert würde der Befehl analog zu allen anderen Modulen folgendermaßen lauten:


msf > search wmap_cert
msf > info scanner/http/wmap_cert

Die msfcli verwendet man an dieser Stelle folgendermaßen:


# ./msfcli | grep wmap_cert
# ./msfcli auxiliary/scanner/http/wmap_cert O

Um mit Wmap eine Schwachstellenanalyse einer Webapplikation durchführen zu können muss im ersten Schritt, wie in Listing 4 dargestellt wird, eine Metasploit bzw. Wmap Datenbank erstellt werden. Diese Datenbank wird anschließend von Ratproxy verwendet um die gecrawlten URLs und damit die erkannte Seitenstruktur für Metasploit abzulegen. Im Anschluss an den manuellen Crawlingvorgang mit Ratproxy werden diese Ergebnisse von Metasploit geladen, um darauf aufbauend die aus den erkannten URLs vorhandene Struktur der Webseite nachzubilden. Basierend auf den erkannten URLs bzw. der Struktur der Webseite werden die im Profil definierten Module ausgewählt. Die erkannte Webseitenstruktur lässt sich, wie in Listing 6 dargestellt wird, mit dem Metasploit Befehl wmap_website darstellen.

Listing 4: Datenbank erstellen und Wmap laden

msf > db_create wmap.db
[*] Creating a new database instance...
[*] Successfully connected to the database

[*] File: wmap.db
msf > load db_wmap
[*] =[ WMAP v0.6 - et [  ] metasploit.com
[*] Successfully loaded plugin: db_wmap

msf > wmap_ <Tab>+<Tab>
wmap_proxy
wmap_run
wmap_sql
wmap_targets
wmap_website


Ratproxy – the basics

Bei Ratproxy handelt es sich um ein passives Schwachstellenanalysetool für Webapplikationen. Ratproxy fungiert, wie in Abbildung 1 dargestellt ist, als Proxy der den ein- und ausgehenden http-Datenstrom auf mögliche Schwachstellen analysiert. Es handelt sich dabei um keinen automatischen Crawlingvorgang, der Anwendungstester muss entweder ein weiteres Tool zur Automatisierung dieses Vorgangs einsetzen oder er erfasst die Webanwendung manuell mit einem Browser.


Aus Abbildung 1 wird ersichtlich, dass Ratproxy, als Kommunikationsschnittstelle zwischen Client und Ziel System, jeglichen HTTP(S) Traffic vermittelt, analysiert und für die weitere Verwendung von Metasploit in einer Datenbank speichern kann.

Mit Hilfe von Ratproxy lassen sich unter anderem folgende Probleme einer Webanwendung erkennen [6]:

  • dynamic cross-site trust model considerations
  • script inclusion issues
  • content serving problems
  • insufficient XSRF and XSS defenses

Die erkannten, möglichen Schwachstellen können, wie in Abbildung 3 dargestellt ist, in einem übersichtlichen HTML Report mit Kritikalitäten zusammengefasst werden.

Um Ratproxy für den Crawlingvorgang und somit als Basis der Metasploit Datenbank zu verwenden, reicht im Normalfall folgender Aufruf aus:


root@s3cur1ty:/pentest/web/ratproxy# ./ratproxy -v /pentest/exploits/framework3/ -b wmap.db

Durch diesen Aufruf agiert Ratproxy als passiver Proxy (standardmäßig auf Port 8080), der die erkannten Pfade in die WMAP Datenbank (Parameter –b wmap.db) schreibt und den Datenstrom zugleich auf mögliche Schwachstellen analysiert. Der Port lässt sich durch den Parameter –p bei Bedarf anpassen. Im Anschluss werden die ermittelten Pfadinformationen von Metasploit als Grundlage für weitere Analysevorgänge herangezogen.

Wichtig: Die eingesetzte Version von Ratproxy muss gepatcht sein. In Backtrack 4 kommt bereits die für Metasploit vorbereitete Version zum Einsatz. Kommt eine andere Linuxdistribution zum Einsatz, muss Ratproxy, wie in Listing 5 dargestellt, vorbereitet werden.

Listing 5: Ratproxy Patchvorgang

cd /root/metasploit
wget http://ratproxy.googlecode.com/files/ratproxy-1.51.tar.gz
tar
xzf ratproxy-1.51.tar.gz
cd ratproxy
patch -d . < /root/metasploit/external/ratproxy/ratproxy_wmap.diff
make

Neben den passiven Tests bietet Ratproxy auch die Möglichkeit weitere aktive Tests durchzuführen. Ein Aufruf für die aktive Prüfung und dem Abspeichern zusätzlicher Logfiles (in diesem Fall mit dem Namen testfile) könnte beispielsweise folgendermaßen aussehen:


root@s3cur1ty:/pentest/web/ratproxy# ./ratproxy -v /pentest/exploits/framework3/ -b wmap1.db -w testfile -d testfire.net –XClfscm


WICHTIG: Ratproxy fungiert dadurch nicht weiter passiv, sondern versucht durch aktiven Eingriff in die Kommunikation weitere Schwachstellen der Webapplikation zu erkennen. Dieser aktive Eingriff ermöglicht es, weitere Schwachstellen wie beispielsweise Cross Site Scripting, mit höherer Wahrscheinlichkeit zu erkennen. Die Kombination von Ratproxy mit aktiven Tests und Wmap ermöglicht somit eine wesentlich höhere Erkennungsrate potentieller Schwachstellen in der Webanwendung.

Der daraus resultierende HTML Report lässt sich mit dem mitgelieferten Script „ratproxy-report.sh“ aus dem erstellten Logfile generieren und anschließend in einem Browser grafisch darstellen.


root@m1k3-desktop:/pentest/web/ratproxy# ./ratproxy-report.sh testfile > testfile.html


Der in Abbildung 3 dargestellte Report beinhaltet eine Auflistung der erkannten Schwachstellen mit weiteren Details wie kritisch diese ist, die getesteten URLs und die Parameter. Dieser Report stellt eine gute Ausgangsbasis für weitere, manuelle Tests dar und ermöglicht durch die vorhandenen Informationen meistens auch eine gute Nachvollziehbarkeit der Schwachstellen.

Analyse mit Metasploit

Im Anschluss an den Crawlingvorgang und der Analyse mit Ratproxy, befinden sich alle für die Metasploit Analyse benötigten Informationen in dem erstellten Datenbankfile. Damit Metasploit bzw. Wmap auf diese Informationen zugreifen kann, muss diese Datei mit db_connect geladen werden. Nach erfolgreichem Ladevorgang lassen sich über die folgenden Metasploit Befehle weitere Informationen abrufen beziehungsweise lässt sich der eigentliche Testvorgang initiieren.

  • wmap_targets
  • wmap_website
  • wmap_run
  • wmap_reports

Jeder dieser Befehle bringt, wenn er ohne Parameter aufgerufen wird, eine kurze Beschreibung als Hilfsfunktion mit. Um einen Testvorgang durchführen zu können muss, wie in Listing 6 dargestellt wird, erst ein Zielsystem ausgewählt werden. Sobald dieses Ziel ausgewählt wurde lässt sich die erkannte Struktur der Webseite abrufen und anschließend der Scanvorgang starten (Listing 7).

Listing 6: Ladevorgang der Webseitenstruktur

msf > db_connect wmap.db
[*] Successfully connected to the database
[*] File: wmap.db

msf > wmap_targets
[*] Usage: wmap_targets [options]
        -h              Display this help text
        -p              Print all available targets
        -r              Reload targets table
        -s [id] Select target for testing
        -a [url]        Add new target

msf > wmap_targets -p
[*]    Id. Host                                 Port    SSL
[*] Done.

msf > wmap_targets -r
[*] Added. 65.61.137.117 80 0

msf > wmap_targets -p
[*]    Id. Host Port    SSL
[*]    1. 65.61.137.117 80
[*] Done.

msf > wmap_targets -s 1

msf > wmap_website
[*] Website structure
[*] 65.61.137.117:80 SSL:0
ROOT_TREE
+------search.aspx
+------feedback.aspx
|       images
|       +------icon_top.gif
+------default.aspx
|       testfireappl
|       |       storefront
|       |       |       testfire_files
|       |       |       +------help_graphic.gif
|       bank
|       +------login.aspx
[*] Done.

Listing 7: Wmap Testvorgang

msf > wmap_run
[*] Usage: wmap_run [options]
        -h              Display this help text
        -t              Show all matching exploit modules
        -e [profile]    Launch profile test modules against all matched targets.
                        No profile runs all enabled modules.

msf > wmap_run -t
[*] Loaded auxiliary/scanner/http/wmap_ssl ...
[*] Loaded auxiliary/scanner/http/wmap_webdav_internal_ip ...
[*] Loaded auxiliary/scanner/http/options ...
[*] Loaded auxiliary/scanner/http/wmap_vhost_scanner ...
[*] Loaded auxiliary/scanner/http/wmap_soap_xml ...
[*] Loaded auxiliary/scanner/http/wmap_robots_txt ...
[*] Loaded auxiliary/scanner/http/wmap_webdav_website_content ...
[*] Loaded auxiliary/scanner/http/wmap_verb_auth_bypass ...
[*] Loaded auxiliary/scanner/http/wmap_cert ...
[*] Loaded auxiliary/scanner/http/frontpage_login ...
[*] Loaded auxiliary/scanner/http/version ...
[*] Loaded auxiliary/scanner/http/wmap_webdav_scanner ...
[*] Loaded auxiliary/admin/http/tomcat_manager ...
[*] Loaded auxiliary/admin/http/tomcat_administration ...
[*] Loaded auxiliary/scanner/http/wmap_svn_scanner ...
[*] Loaded auxiliary/scanner/http/wmap_files_dir ...
[*] Loaded auxiliary/scanner/http/wmap_brute_dirs ...
[*] Loaded auxiliary/scanner/http/writable ...
[*] Loaded auxiliary/scanner/http/wmap_dir_listing ...
[*] Loaded auxiliary/scanner/http/wmap_copy_of_file ...
[*] Loaded auxiliary/scanner/http/ms09_020_webdav_unicode_bypass ...
[*] Loaded auxiliary/scanner/http/wmap_dir_webdav_unicode_bypass ...
[*] Loaded auxiliary/scanner/http/wmap_replace_ext ...
[*] Loaded auxiliary/scanner/http/wmap_prev_dir_same_name_file ...
[*] Loaded auxiliary/scanner/http/wmap_file_same_name_dir ...
[*] Loaded auxiliary/scanner/http/wmap_dir_scanner ...
[*] Loaded auxiliary/scanner/http/wmap_backup_file ...
[*] Loaded auxiliary/scanner/http/wmap_blind_sql_query ...
[*] Loaded auxiliary/scanner/http/wmap_error_sql_injection ...
[*] Analysis completed in 7.2228090763092 seconds.
[*] Done.

msf > wmap_run –e
… Testvorgang der Webseite …

msf > wmap_reports
[*] Usage: wmap_reports [options]
        -h Display this help text
        -p Print all available reports
        -s [id] [file]  Select report for display
        -x [id] [file]  Display XML report

msf > wmap_reports -p
[*] Id. Created                         Target (host,port,ssl)
1.  Tue Dec 08 06:24:00 -0500 2009 65.61.137.117,80,0
[*] Done.

msf > wmap_reports -s 1
        WMAP REPORT: 65.61.137.117,80,0 Metasploit WMAP Report [Tue Dec 08 06:24:00 -0500 2009]
        WEB_SERVER OPTIONS: OPTIONS, TRACE, GET, HEAD  [Tue Dec 08 06:24:07 -0500 2009]
        WEB_SERVER TYPE: Microsoft-IIS/6.0 ( Powered by ASP.NET )  [Tue Dec 08 06:30:34 -0500 2009]
        … weitere Reportingdetails …

Wmap erstellt im Anschluss an den Scanvorgang einen übersichtlichen, textbasierten Report, der alle relevanten bzw. erkannten Informationen und Details über mögliche Schwachstellen dokumentiert. (Abrufbar über „wmap_reports –s ) Er sollte in jedem Fall detailliert auf Schwachstellen wie auch auf False Positives (gemeldete Schwachstellen die nicht vorhanden sind) geprüft werden.

Automatisierter Crawlingvorgang:

Bei Analysen sehr umfangreicher Webseiten kann neben dem manuellen Crawlingvorgang zusätzlich auch eine automatisierte Indizierung der Webseite durchgeführt werden. Dies lässt sich prinzipiell mit jedem proxyfähigen Crawler realisieren. Folgende Vorgehensweise zeigt die Schritte eines solchen Vorgangs unter Zuhilfenahme des Linuxtools wget dar.

  1. Erstellen der Wmap Datenbank
    msf > db_create wmap.db
    msf > load db_wmap
  2. Proxyeinstellungen vornehmen:
    export http_proxy=http://localhost:8080
  3. Proxyeinstellungen prüfen:
    root@s3cur1ty:/pentest/web/ratproxy# echo $http_proxy
  4. Start von Ratproxy
  5. Start des automatisierten Crawlingvorganges:
    wget --spider --user-agent= -r –d -v | tee wget-crawling.txt
  6. Weitere Analyse mit Wmap

Der erste Schritt erstellt, die Wmap Datenbank und lädt das Wmap Modul in Metasploit. Um einen automatisierten Crawlingvorgang über Ratproxy vorzunehmen, muss die Linux Umgebungsvariable (http_proxy) wie in Schritt 2 angepasst werden. Anschließend kann Ratproxy gestartet und der Crawlingvorgang mittels wget angestoßen werden. Um eine möglichst vollständige Indizierung der Webseite zu erreichen, sollte dieser automatisierte Crawlingvorgang durch manuelles Crawling mit einem Browser ergänzt werden. Im Anschluss an die Erfassung der zu untersuchenden Webseite wird die zuvor beschriebene Analyse mit Wmap durchgeführt.

Globale Variablen:

Manche Webseiten blockieren einen direkten Zugriff auf die IP Adresse der Webseite. Dementsprechend muss für eine Analyse der Hostname übertragen werden. Um dies in Wmap abzubilden gibt es die Möglichkeit weitere Optionen der einzelnen Module „global“ zu setzen. Für den Fall, dass der Zugriff auf die IP Adresse blockiert wird, ermöglichen unterschiedliche Metasploit Module die Angabe der VHOST Variable, Dies lässt sich in der Metasploit Konsole mit folgenden Kommandos bewerkstelligen:

msf > setg VHOST www.s3cur1ty.de
VHOST => www.s3cur1ty.de
msf > setg DOMAIN s3cur1ty.de
DOMAIN => s3cur1ty.de

Eine weitere sehr häufig benötigte Option für die Analyse von Webauftritten ist der User Agent. Default mäßig wird bei den durchgeführten Requests kein User-Agent angegeben wodurch manche Webfilter, wie beispielsweise mod-security, den Zugriff blockieren. Um dies zu verhindern lässt sich die Option UserAgent „global“ setzen und somit zu den durchgeführten Requests hinzufügen.

msf > setg UserAgent testagent
UserAgent => testagent

Die möglichen Optionen zu jedem Modul lassen sich beispielsweise folgendermaßen mit der msfcli oder der msfconsole abrufen:

root@m1k3-desktop:# /pentest/exploits/framework3/msfcli auxiliary/scanner/http/wmap_replace_ext O

msf > info auxiliary/scanner/http/wmap_replace_ext

Basic Authentication:

Hinter dem Begriff Basic Authentication [22] verbirgt sich einen relativ einfacher Authentifizierungsmechanismus, der von allen aktuellen Browsern unterstützt wird. Solche Schutzmaßnahmen sind sehr häufig bei Entwicklungssystemen die noch nicht produktiv eingesetzt werden zu finden. Um solche Systeme zu überprüfen, muss die Möglichkeit gegeben sein Benutzernamen und Passwort mitzugeben. Folgendes Kapitel stellt die Möglichkeiten dar eine Webseite die mit dieser Authentifzierungsmaßnahme geschützt ist mit Wmap zu überprüfen.

Der eigentliche manuelle Crawlingvorgang stellt durch die Möglichkeit das Passwort im Browser einzugeben keine Probleme dar. Der automatisierte Vorgang hängt jedoch vom eingesetzten Crawler ab. Für wget helfen beispielsweise folgende Parameter:


--http-user=
--http-password=

Um Metasploit bzw. Wmap ebenso mit diesen Benutzerdaten zu versorgen gibt es für Basic Authentication folgende Advanced Options:


BasicAuthPass
BasicAuthUser

Diese Parameter können wiederum als globale Einstellungen für alle Module mit dem Befehl setg angepasst werden.

Datenbank:

Bei der verwendeten Datenbank handelt es sich standardmäßig um eine Sqlite v3 Datenbank die auch mit einem typischen Client geöffnet und bearbeitet werden kann. Um eine andere Datenbank, wie beispielsweise Sqlite v2, MySQL oder PostgreSQL zu verwenden kann der Befehl db_driver genutzt werden.

Folgende Befehle geben einen Überblick über die Datenbank und deren Inhalt:


sqlite> .databases
sqlite> .tables
sqlite> select * from sqlite_master;
sqlite> select * from targets;
sqlite> select * from requests;

In Listing 7 sind einige dieser Befehle mit der entsprechenden Ausgabe dargestellt. Weitere Informationen zum Umgang mit der Datenbank sind zudem unter der Referenz [23], im Plugins Verzeichnis und in der Dokumentation der Metasploit Datenbank zu finden („documentation/database.txt“).

Listing 7: Datenbank Beispiele

msf > db_driver
[*]    Active Driver: sqlite3
[*]        Available: sqlite3, postgresql
[*]     DB Support: Enable the mysql driver with the following command:
[*]                 $ gem install mysql

msf > db_driver postgresql
[*] Using database driver postgresql

msf > db_driver sqlite3
[*] Using database driver sqlite3

root@m1k3-desktop:/# sqlite3 /pentest/exploits/framework3/wmap-1.db
sqlite> .databases
seq  name             file
---  ---------------  ----------------------------------------------------------
0    main             /pentest/exploits/framework3/wmap-1.db
1    temp             /var/tmp/etilqs_bXSKncjQvutUmxy

sqlite> .tables
clients    notes       reports     services    vulns
hosts       refs        requests    targets     vulns_refs

sqlite> select * from targets;
1|91.121.139.160|80|0|1


Testumgebung:

An dieser Stelle muss ausdrücklich festgehalten werden, dass die beschriebenen Vorgänge ausschließlich in einer gesicherten Testumgebung zur Anwendung gebracht werden dürfen. Werden Angriffe dieser Art auf Systemen durchgeführt, für die keine ausdrückliche Erlaubnis erteilt wurde, stellt dies unter Umständen eine strafrechtlich relevante Handlung dar. Folgende Systeme können beispielsweise für eine Testumgebung eingesetzt werden:

Laborsysteme:

  • Moth [8] - weitere verwundbare Systeme die auch im Internet immer wieder anzutreffen sind.
  • Badstore [9] - ein kleiner, verwundbarer Webshop als Zeitvertreib
  • DVL [10] - bringt eine Umfangreiche Trainingsumgebung, sowie einen kleinen aber durchaus effektiven Lehrgang mit.
  • Mutillidae [11] - ein hilfreicher Lehrgang der leider noch nicht fertig ist aber die Grundlagen sehr gut beschreibt
  • Foundstone Hacme Systeme [12] - Ein sehr bekannter Allzeit Klassiker
  • Damn Vulnerable Web App [13]
  • OWASP – Webgoat [14]

Online - Systeme:

  • Acunetix PHP Testwebsite [15]
  • Acunetix ASP Testwebsite [16]
  • Watchfire Testseite [17]
  • Online Hackme Bank [18]
  • Crackme Bank [19]


Im Internet

  1. http://httpd.apache.org/security_report.html - Apache Security Report
  2. http://www.owasp.org/index.php/Top_10_2007 - OWASP Top 10
  3. http://www.defcon.org/images/defcon-17/dc-17-presentations/defcon-17-efr... - Defcon Präsentation von Wmap
  4. http://carnal0wnage.blogspot.com/2008/11/metasploit-and-wmap_24.html - Carnal0wnage HowTo zu Wmap
  5. http://www.vulnerabilityassessment.co.uk/wmap_meta.htm
  6. http://code.google.com/p/ratproxy/ - Google Code Seite zu Ratproxy
  7. http://code.google.com/p/ratproxy/wiki/RatproxyDoc - Google Code Wiki zu Ratproxy
  8. http://www.bonsai-sec.com/en/research/moth.php - Moth Testumgebung
  9. http://www.badstore.net/ - BadstoreTestumgebung
  10. http://www.damnvulnerablelinux.org/ - DVL Testumgebung
  11. http://www.irongeek.com/i.php?page=security/mutillidae-deliberately-vuln... - Mutillidae Testumgebung
  12. http://www.foundstone.com/us/resources-free-tools.asp - Foundstone Free Tools
  13. http://dvwa.co.uk/ - DVWA Testumgebung
  14. http://www.owasp.org/index.php/Category:OWASP_WebGoat_Project – OWASP Webgoat Projekt
  15. http://testphp.acunetix.com/ - Acunetix PHP Testwebseite
  16. http://testaspnet.acunetix.com/ - Acunetix ASP Testwebseite
  17. http://demo.testfire.net/ - Appscan Testwebseite
  18. http://zero.webappsecurity.com/banklogin.asp?serviceName=FreebankCaastAc...
  19. http://crackme.cenzic.com/Kelev/view/home.php - Crackme Bank Testwebseite
  20. http://cirt.net/nikto2 - Nikto2
  21. http://w3af.sourceforge.net/ - W3af
  22. http://en.wikipedia.org/wiki/Basic_access_authentication - Wikipedia Artikel zu Basic Authentication
  23. http://www.sqlite.org/sqlite.html - Sqlite Informationen
  24. http://de.wikipedia.org/wiki/Web_Application_Firewall - Wikipedia Artikel zu WAF
  25. http://www.s3cur1ty.de/metasploit – Weitere Infos zu dieser Artikelserie
  26. http://www.offensive-security.com/blog/backtrack/backtrack-4-final-release/ - BT 4 final release
  27. http://www.social-engineer.org/framework/Podcast/005_-_Exclusive_Intervi... - Interview mit Backtrack Entwicklern
  28. http://back-track.de – deutschsprachige Backtrack Community Webseite
  29. http://www.s3cur1ty.de/script-basic-webaudit - Basic MSF-Webaudit Script