
Befehlsinjektion Web-Fuzzer-Skript für mitmproxy
Description:
Dieses Skript fuzzt nach Command-Injection-Schwachstellen, die zu Remote-Befehlsausführung führen.
Ähnliche OWASP-Schwachstellen werden hier erklärt --> https://www.owasp.org/index.php/Command_Injection
Das Skript versucht, Betriebssystembefehle auszuführen, indem es in jeden Wert des Bodys einer POST/PUT-Anfrage injiziert.
Die Erkennung der Ausführung erfordert ein weiteres Tool, wie das Abhören von Web/ICMP-Datenverkehr oder das Überwachen eines Verzeichnisses auf dem Zielsystem usw.
Zum Beispiel, wenn das Skript beobachtet, dass ein Benutzer einen einzelnen POST mit dem Body {"webfunction": "settime", "hour": "10", "minute": "00"} durchgeführt hat,
generiert das Skript 5 POST-Anfragen:
1) Der ursprüngliche POST (wie er ist)
{"webfunction": "settime", "hour": "10", "minute": "00"}
2) CI-Injektion im 1. Wert
{"webfunction": "settime;ping 10.10.10.10", "hour": "10", "minute": "00"}
3) CI-Injektion im 2. Wert
{"webfunction": "settime", "hour": "10;ping 10.10.10.10", "minute": "00"}
4) CI-Injektion im 3. Wert
{"webfunction": "settime", "hour": "10", "minute": "00;ping 10.10.10.10"}
5) Ein Bereinigungspost, um die Variablen auf den ursprünglichen Wert zurückzusetzen
{"webfunction": "settime", "hour": "10", "minute": "00"}
Wenn die Payload ausgeführt wurde, würde der Angreifer ein ICMP-Ping-Paket erhalten. In diesem Beispiel ist die Webanwendung durch das Setzen der Systemzeit anfällig für Command Injection/Execution.
Prerequisites:
-mitmproxy 3.0.0+
#"Virtualenv"-Methode zum Ausführen von mitmproxy 3.0.0+ (d.h. Ihre Distribution unterstützt keine 3.0.0+-Binärdateien)
git clone https://github.com/mitmproxy/mitmproxy.git
#Befolgen Sie das "Development setup" hier -> https://github.com/mitmproxy/mitmproxy (ähnlich wie unten)
apt-get install python3-venv
cd mitmproxy
./dev.sh #Bei Fehler fehlende python.h-Header - versuchen Sie apt-get install python3-dev
#Bestätigen Sie die mitmproxy-Version 3.0.0+
. venv/bin/activate
(venv) root@kali:/usr/local/src/source-install/mitmproxy3# mitmproxy --version
Mitmproxy version: 3.0.0 (2.0.0dev0920-0x3c934b1a)
Python version: 3.5.4
Installation:
#Laden Sie ci_fuzz.py herunter
git clone https://github.com/mvdevnull/ci_fuzz.git
Usage Examples:
*Setzen Sie die Variablen im Konfigurationsabschnitt von ci_fuzz.py
1)*Führen Sie mitmweb mit dem ci_fuzz.py-Skript aus, das auf localhost Port 7777 hört
mitmweb --listen-port 7777 --ssl-insecure -s ./ci_fuzz/ci_fuzz.py
2)*Führen Sie mitmweb mit dem ci_fuzz.py-Skript wie oben aus und leiten Sie es upstream an einen GUI-Proxy wie Burp auf localhost weiter
mitmweb --listen-port 7777 --ssl-insecure --mode upstream:https://127.0.0.1:8080 -s ./ci_fuzz/ci_fuzz.py