Shocker
Ein Werkzeug zum Auffinden und Ausnutzen von Servern, die anfällig für Shellshock sind
Ref: https://en.wikipedia.org/wiki/Shellshock_(software_bug)
Veröffentlicht als Open Source von NCC Group Plc - https://www.nccgroup.trust/
Entwickelt von:
- Tom Watson, tom [dot] watson [at] nccgroup [dot] trust
https://github.com/nccgroup/shocker
Veröffentlicht unter AGPL, siehe LICENSE für weitere Informationen
Hilfetext
Verwendung:
shocker.py
-h, --help Zeigt diese Hilfemeldung an und beendet das Programm
--Host HOST, -H HOST
Ein Ziel-Hostname oder eine IP-Adresse
--file FILE, -f FILE Eine Datei mit einer Liste von Zielen
--port PORT, -p PORT Die Zielportnummer (Standard=80)
--command COMMAND Auszuführender Befehl (Standard=/bin/uname -a)
--cgi CGI, -c CGI Einzelnes CGI zum Überprüfen (z.B. /cgi-bin/test.cgi)
--proxy PROXY MOMENTAN ETWAS KAPUTT Proxy in der Form 'ip:port'
--ssl, -s SSL verwenden (Standard=False)
--threads THREADS, -t THREADS
Maximale Anzahl an Threads (Standard=10, max=100)
--verbose, -v Ausführliche Ausgabe
Anwendungsbeispiele
./shocker.py -H 127.0.0.1 --command "/bin/cat /etc/passwd" -c /cgi-bin/test.cgi
Scannt nach http://127.0.0.1/cgi-bin/test.cgi und versucht bei Erfolg den Befehl
cat /etc/passwd auszuführen
./shocker.py -H www.example.com -p 8001 -s
Scannt www.example.com auf Port 8001 mit SSL für alle Skripte in cgi_list und
versucht bei einem Fund den Standard-Exploit
./shocker.py -f ./hostlist
Scannt alle in der Datei ./hostlist aufgeführten Hosts mit den Standardoptionen
Abhängigkeiten
Python 2.7+
Änderungsprotokoll
Änderungen in Version 1.1 (Juni 2018)
- Einige zusätzliche Debugging-Funktionen hinzugefügt und Hilfetext korrigiert
Änderungen in Version 1.0 (März 2016)
- Einige zusätzliche Skripte beigetragen und Aktualisierungen von Kommentaren, URLs und Kontaktdaten
Änderungen in Version 0.72 (Dezember 2014)
- Kleinere Korrekturen an Logik und Tippfehlern
Änderungen in Version 0.71 (Dezember 2014)
- Timeout für urllib2.urlopen-Anfragen mit einem globalen 'TIMEOUT' hinzugefügt
Änderungen in Version 0.7 (November 2014)
- Interaktive 'pseudo console' zur weiteren Ausnutzung eines ausgewählten verwundbaren Servers hinzugefügt
- Versucht, Probleme mit der Ausgabepufferung zu beheben, indem sys.stdout in eine Klasse eingewickelt wurde, die bei jedem Schreibaufruf leert
- Fortschrittsanzeige für zeitaufwändige Aufgaben hinzugefügt, um nicht-verbose Benutzer zu beruhigen
Änderungen in Version 0.6 (Oktober 2014)
- Verhindert, dass Rückgabecodes außer 200 als Erfolg gewertet werden
- Möglichkeit hinzugefügt, mehrere Ziele in einer Datei anzugeben
- Die Liste der zu exploitierenden Skripte (cgi_list) in eine Datei ausgelagert
- Einige Formatierungsprobleme in der Ausgabe behoben
- Regex für gültige Hostnamen/IP-Adressen korrigiert, um einsilbige Hostnamen zu erlauben
Änderungen in Version 0.5 (Oktober 2014)
- Möglichkeit hinzugefügt, ein einzelnes Skript anstelle der gesamten cgi_list anzugeben
- Timeout für Socket-Operationen bei der Host-Prüfung eingeführt
- Einige Anwendungsbeispiele im Skript-Header hinzugefügt
- Epilog im Hilfetext hinzugefügt, der auf das Vorhandensein von Beispielen hinweist
Änderungen in Version 0.4 (Oktober 2014)
- Thread-Anzahlbegrenzung eingeführt, standardmäßig 10
- Farbunterstützung entfernt, bis ich herausfinde, wie sie unter Windows und *nix gleichermaßen funktioniert
- Rechtschreibkorrekturen
- Umfassendere cgi_list
- success_flag aus der Ausgabe entfernt
Vor 0.4 (Oktober 2014)
TODO
- HTTP/200-Antworten korrekt identifizieren und darauf reagieren – Fehlalarme – Niedrige Priorität/Aufwand
- Curses für *nix-Systeme implementieren – Für die gesamte Anwendung oder nur die Pseudoterminal? – Niedrige Priorität/Schönheit
- Die anfängliche Host-Prüfung threaden, da jetzt mehrere Ziele unterstützt werden (und dies zeitaufwändig sein kann)
- Änderung von verbose zu einem ganzzahligen Wert – leise, normal, ausführlich, debuggen?
- Option zum Überspringen der anfänglichen Host-Prüfung aus Geschwindigkeitsgründen hinzufügen?
- Zusammenfassung der Ergebnisse vor dem Beenden hinzufügen
- Ergebnisse in einer Datei speichern? Format?
- Irgendwann sollen mehrere mögliche Vektoren einbezogen werden, aber derzeit wird nur einer geprüft.
- Farbunterstützung für Windows und *nix hinzufügen – Niedrige Priorität/Schönheit
- Timeout im interaktiven Modus für Befehle, die nicht zurückkehren (z.B. /bin/cat /dev/zero)
- Verschönern – Niedrige Priorität/Schönheit (offensichtlich)
- Unterstützung für das Scannen und Ausnutzen von SSH und SMTP hinzufügen? https://isc.sans.edu/diary/Shellshock+via+SMTP/18879
- SOCKS-Proxy-Unterstützung hinzufügen, möglicherweise mit https://github.com/rpicard/socksonsocks/ von Rober Picard
- Andere Dinge. Wahrscheinlich.
Dank an...
Anthony Caulfield @ NCC für Zeit und Mühe beim Überprüfen früherer Versionen
Brendan Coles @ NCC für seine Unterstützung und Beiträge