Ein NSE-Script für den Netzwerkscanner Nmap. Es erweitert dessen Funktionsumfang, sodass beim Port-Scanning auch von einem HTTP- oder HTTPS-Server unterstützten HTTP-Methoden mit ausgegeben werden.
Einsatzzweck
Wer überprüfen möchte, ob im eigenen Netz auch wirklich nur die gewünschten Dienste laufen, verwendet dafür vielleicht Nmap. Wenn beim Scannen jetzt ein offener Port 80 gefunden wird, und es handelt sich bei der Maschine um einen Webserver, wird man sich wohl kaum Gedanken machen. Aber eventuell ist der Webserver falsch konfiguriert und WebDAV ist versehentlich eingeschaltet. Also sollte man sich ggf. doch Gedanken machen, denn der Web-Content kann über WebDAV geändert werden!
http-methods.nse ist u. a. dafür geschrieben, diesen kleinen aber feinen Unterschied aufzuzeigen. Normalerweise meldet es nur die HTTP-Methoden GET,HEAD,POST,OPTIONS,TRACE. Wenn dagegen WebDAV aktiviert ist, kommen weitere Methoden hinzu, z. B. PROPFIND, DELETE, …
Die Tatsache, dass diese Methoden aktiviert sind, kann aber auch ein "false positiv" sein, wenn der Admin die zusätzlichen Methoden zwar grundsätzlich aktiviert hat, diese aber nur von bestimmten Usern oder bestimmten Quell-IPs aus zulässt. Daher kann beim Aufruf der Parameter http-methods.retest mitgegeben werden. Dann wird jede der gefundenen Methoden auch tatsächlich ausprobiert und der Response-Code angezeigt.
Oder vielleicht besagt die Security Policy eines Unternehmens, dass die Methode TRACE grundsätzlich disabled werden muss. Mit http-methods.nse lässt sich die Einhaltung sehr schnell verifizieren.
Installation und Test - aktuelles Stable Release
Ab nmap Release 5.50 ist http-methods.nse bereits enthalten, also einfach Nmap herunterladen, installieren und starten:
root@localhost ~ # nmap -p 80 --script http-methods dunno.dyndns.info Starting Nmap 5.50 ( http://nmap.org ) at 2011-02-02 12:33 CET Nmap scan report for dunno.dyndns.info (127.128.129.130) Host is up (0.00032s latency). PORT STATE SERVICE 80/tcp open http | http-methods: GET HEAD POST OPTIONS TRACE | Potentially risky methods: TRACE |_See http://nmap.org/nsedoc/scripts/http-methods.html MAC Address: 00:E0:7D:E7:07:FA (Netronix) root@localhost ~ #
Dabei wird http-methods.nse als einziges Script aufgerufen. Um alle default-scripts (incl. http-methods.nse) laufen zu lassen, lautet der Aufruf entsprechend:
nmap -p 80 --script default dunno.dyndns.info
Oder kurz:
nmap -p 80 -sC dunno.dyndns.info
Ist zusätzlich ein duchprobieren aller gefundener Methoden gewünscht, muss der Parameter http-methods.retest=1 mitgegeben werden:
root@localhost ~ # nmap -p 80 --script http-methods --script-args http-methods.retest=1 dunno.dyndns.info Starting Nmap 5.50 ( http://nmap.org ) at 2011-02-02 12:49 CET Nmap scan report for dunno.dyndns.info (127.128.129.130) Host is up (0.00030s latency). PORT STATE SERVICE 80/tcp open http | http-methods: GET HEAD POST OPTIONS TRACE | Potentially risky methods: TRACE | See http://nmap.org/nsedoc/scripts/http-methods.html | GET / -> HTTP/1.1 200 OK | | HEAD / -> HTTP/1.1 200 OK | | POST / -> HTTP/1.1 404 Not Found | | OPTIONS / -> HTTP/1.1 200 OK | |_TRACE / -> HTTP/1.1 200 OK MAC Address: 00:E0:7D:E7:07:FA (Netronix) root@localhost ~ #
Details siehe Modul-Doku http-methods.
Weitere Infos generell zur Verwendung von NSE-Scripts siehe https://nmap.org/man/de/man-nse.html
Installation und Test - älteres Release
Wer von Nmap noch eine ältere Version (z. B. die der Distribution) im Einsatz hat (und diese auch beibehalten möchte), kann http-methods.nse auch nachinstallieren (getestet nur mit Nmap 5.21).
Erst einmal http-methods.nse runterladen.
Zum ausprobieren kann man den vollständigen Pfad zum Script einfach eingeben:
root@localhost ~ # nmap --script <path>/http-methods.nse dunno.dyndns.info Starting Nmap 5.21 ( http://nmap.org ) at 2010-02-06 20:05 CET NSE: Script Scanning completed. Nmap scan report for dunno.dyndns.info (127.128.129.130) Host is up (0.00089s latency). PORT STATE SERVICE 80/tcp open http |_http-methods: OPTIONS / request returned: GET,HEAD,POST,OPTIONS,TRACE Nmap done: 1 IP address (1 host up) scanned in 0.29 seconds root@localhost ~ #
bzw. mit retest
root@localhost ~ # nmap -p 80 --script <path>/http-methods.nse --script-args http-methods.retest=true dunno.dyndns.info Starting Nmap 5.21 ( http://nmap.org ) at 2010-02-06 20:06 CET NSE: Script Scanning completed. Nmap scan report for dunno.dyndns.info (127.128.129.130) Host is up (0.00069s latency). PORT STATE SERVICE 80/tcp open http | http-methods: OPTIONS / request returned: GET,HEAD,POST,OPTIONS,TRACE | HTTP Status for GET / is 200 OK | HTTP Status for HEAD / is 200 OK | HTTP Status for POST / is 200 OK | HTTP Status for OPTIONS / is 200 OK |_ HTTP Status for TRACE / is 200 OK Nmap done: 1 IP address (1 host up) scanned in 0.28 seconds root@localhost ~ #
Um es öfters zu benutzen, empfiehlt es sich dagegen, http-methods.nse in der eigenen Nmap-Installation vollständig zu integrieren. Dazu legt man es im gleichen Pfad ab, wie die übrigen (mitgelieferten) NSE-Scripts, meist /usr/share/nmap/scripts oder /usr/local/share/nmap/scripts. Da Nmap aber nicht bei jedem Aufruf die ganze Verzeichnisstruktur einliest, sondern auf eine "Datenbank" zurückgreift, muss man diese anschliessend noch aktualisieren:
nmap --script-updatedb
Anschliessend kann das Script verwendet werden, wie jedes mitgelieferte, beim Aufruf reicht es nur den Namen anzugeben…
nmap -p 80 --script http-methods dunno.dyndns.info
…oder man kann eine ganze Kategorie von Scripts auf einmal auf den oder die gescannten Rechner loslassen:
nmap -p 80 --script safe dunno.dyndns.info
LUA
Übrigens: NSE-Scripts sind in der Scriptsprache LUA zu schreiben. Wer Interesse hat, eigene Erweiterungen für nmap zu schreiben, schaut sich daher am besten die offizielle Dokumentation von LUA an.