
mitmproxy用のコマンドインジェクションWebファズザースクリプト
説明:
このスクリプトは、リモートコマンド実行につながるコマンドインジェクションの脆弱性をファジングします。
類似のOWASP脆弱性についてはこちらで説明されています --> https://www.owasp.org/index.php/Command_Injection
スクリプトは、POST/PUTのボディ内のすべての値にOSコマンドを注入して実行を試みます。
実行の検出には、Web/ICMPトラフィックのリスニングや対象OS上のディレクトリ監視など、別のツールが必要です。
例えば、スクリプトがユーザーがボディを {"webfunction": "settime", "hour": "10", "minute": "00"} として1回のPOSTを実行したことを観測した場合、
スクリプトは5つのPOSTを生成します。
1) 元のPOST(そのまま)
{"webfunction": "settime", "hour": "10", "minute": "00"}
2) 1番目の値へのCI注入
{"webfunction": "settime;ping 10.10.10.10", "hour": "10", "minute": "00"}
3) 2番目の値へのCI注入
{"webfunction": "settime", "hour": "10;ping 10.10.10.10", "minute": "00"}
4) 3番目の値へのCI注入
{"webfunction": "settime", "hour": "10", "minute": "00;ping 10.10.10.10"}
5) 変数を元の値に戻すクリーンアップPOST
{"webfunction": "settime", "hour": "10", "minute": "00"}
ペイロードが実行された場合、攻撃者は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 スクリプトを使用してローカルホストのポート7777でリスニング実行
mitmweb --listen-port 7777 --ssl-insecure -s ./ci_fuzz/ci_fuzz.py
2)*mitmweb を ci_fuzz.py スクリプトを使用し、上記と同様に、かつアップストリームをローカルホストのBurpのようなGUIプロキシにフォワードして実行
mitmweb --listen-port 7777 --ssl-insecure --mode upstream:https://127.0.0.1:8080 -s ./ci_fuzz/ci_fuzz.py