
Скрипт веб-фаззера для инъекций команд для mitmproxy
Описание:
Этот скрипт фаззит на наличие уязвимостей Command Injection, приводящих к удаленному выполнению команд.
Подобные уязвимости OWASP объясняются здесь --> https://www.owasp.org/index.php/Command_Injection
Скрипт попытается выполнить команды ОС, внедряя их в каждое значение в теле POST/PUT.
Обнаружение выполнения требует другого инструмента, например, прослушивания веб/ICMP трафика или наблюдения за каталогом в целевой ОС и т.д.
Например, если скрипт обнаруживает, что пользователь выполнил один POST с телом, установленным в {"webfunction": "settime", "hour": "10", "minute": "00"}
Скрипт сгенерирует 5 POST'ов:
1) Оригинальный POST (как есть)
{"webfunction": "settime", "hour": "10", "minute": "00"}
2) Внедрение CI в 1-е значение
{"webfunction": "settime;ping 10.10.10.10", "hour": "10", "minute": "00"}
3) Внедрение CI во 2-е значение
{"webfunction": "settime", "hour": "10;ping 10.10.10.10", "minute": "00"}
4) Внедрение CI в 3-е значение
{"webfunction": "settime", "hour": "10", "minute": "00;ping 10.10.10.10"}
5) Очищающий POST для возврата переменных к исходному значению
{"webfunction": "settime", "hour": "10", "minute": "00"}
Если полезная нагрузка была выполнена, злоумышленник получит ICMP ping-пакет. В этом примере веб-приложение уязвимо к внедрению/выполнению команд через установку системного времени.
Предварительные требования:
-mitmproxy 3.0.0+
#"Virtualenv" method to run mitmproxy 3.0.0+ (ie: your distribution does not support 3.0.0+ binaries)
git clone https://github.com/mitmproxy/mitmproxy.git
#Follow the "Development setup" here -> https://github.com/mitmproxy/mitmproxy (simliar to below)
apt-get install python3-venv
cd mitmproxy
./dev.sh #If error missing python.h headers - try apt-get install python3-dev
#Confirm 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
Установка:
#Download ci_fuzz.py
git clone https://github.com/mvdevnull/ci_fuzz.git
Примеры использования:
*Set variables in the configuration section of ci_fuzz.py
1)*Run mitmweb using the ci_fuzz.py script listening on localhost port 7777
mitmweb --listen-port 7777 --ssl-insecure -s ./ci_fuzz/ci_fuzz.py
2)*Run mitmweb using the ci_fuzz.py script same as above and upstream forward to a GUI proxy like Burp on localhost
mitmweb --listen-port 7777 --ssl-insecure --mode upstream:https://127.0.0.1:8080 -s ./ci_fuzz/ci_fuzz.py