
Script de fuzzer web d'injection de commandes pour mitmproxy
Description:
Ce script fuzze les vulnérabilités d'injection de commandes entraînant une exécution de commandes à distance.
Les vulnérabilités OWASP similaires sont expliquées ici --> https://www.owasp.org/index.php/Command_Injection
Le script tentera d'exécuter des commandes OS en injectant dans chaque valeur du corps d'une requête POST/PUT.
La détection de l'exécution nécessite un autre outil, comme écouter le trafic web/icmp ou surveiller un répertoire sur le système cible, etc.
Par exemple, si le script observe qu'un utilisateur a effectué un seul POST avec le corps défini à {"webfunction": "settime", "hour": "10", "minute": "00"}
Le script générera 5 POST
1)Le POST original (tel quel)
{"webfunction": "settime", "hour": "10", "minute": "00"}
2)Injection CI sur la 1ère valeur
{"webfunction": "settime;ping 10.10.10.10", "hour": "10", "minute": "00"}
3)Injection CI sur la 2ème valeur
{"webfunction": "settime", "hour": "10;ping 10.10.10.10", "minute": "00"}
4)Injection CI sur la 3ème valeur
{"webfunction": "settime", "hour": "10", "minute": "00;ping 10.10.10.10"}
5)Un POST de nettoyage pour remettre les variables à leur valeur d'origine
{"webfunction": "settime", "hour": "10", "minute": "00"}
Si la charge utile était exécutée, l'attaquant recevrait un paquet ping ICMP. Dans cet exemple, l'application web est vulnérable à l'injection/exécution de commandes via le réglage de l'heure système.
Prerequisites:
-mitmproxy 3.0.0+
#Méthode "Virtualenv" pour exécuter mitmproxy 3.0.0+ (par exemple : votre distribution ne supporte pas les binaires 3.0.0+)
git clone https://github.com/mitmproxy/mitmproxy.git
#Suivez la "Configuration de développement" ici -> https://github.com/mitmproxy/mitmproxy (similaire à ci-dessous)
apt-get install python3-venv
cd mitmproxy
./dev.sh #Si erreur headers python.h manquants - essayez apt-get install python3-dev
#Confirmez la version 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
Installation:
#Téléchargez ci_fuzz.py
git clone https://github.com/mvdevnull/ci_fuzz.git
Exemples d'utilisation:
*Définissez les variables dans la section de configuration de ci_fuzz.py
1)*Exécutez mitmweb en utilisant le script ci_fuzz.py en écoute sur le port localhost 7777
mitmweb --listen-port 7777 --ssl-insecure -s ./ci_fuzz/ci_fuzz.py
2)*Exécutez mitmweb en utilisant le script ci_fuzz.py comme ci-dessus et transférez en amont vers un proxy GUI comme Burp sur localhost
mitmweb --listen-port 7777 --ssl-insecure --mode upstream:https://127.0.0.1:8080 -s ./ci_fuzz/ci_fuzz.py