
Preuve de concept et atténuation pour CVE-2019-9787 (WordPress XSS/CSRF/RCE). Démontre les correctifs de nettoyage, les cookies HttpOnly et la défense CSRF basée sur un hachage avec des modifications de code.
session.cookie_httponly = True
défense basée sur le hachage Le jeton de validation CSRF n'a pas été implémenté dans WordPress car, s'il l'était, cela gênerait les fonctionnalités de trackbacks et pingbacks de WordPress. Le serveur ne peut pas distinguer une requête CSRF illégale d'une requête légitime de PINGBACK/TRACEBACK ; WordPress accepte automatiquement un commentaire sans jeton CSRF correct comme une requête de PINGBACK et TRACEBACK et filtre ce commentaire avec un filtre de liste blanche.
Pour défendre cette vulnérabilité CSRF, nous ajoutons un nouveau champ dans le formulaire appelé hashnonce pour vérifier que le commentaire est envoyé par un administrateur. L'admin signe une signature sur la valeur du champ commentaire avec son cookie.
La signature de la valeur du champ commentaire utilise md5 pour générer la valeur de hachage (voir graphique).
Lorsque l'admin tente d'adopter PINGBACK et TRACEBACK et que le _wp_unfiltered_html ne peut pas être fourni, nous utilisons wp_verify_hashNonce. Si la validation échoue, une erreur sera signalée. Même si la validation réussit, l'erreur logique a été corrigée et "wp_filter_kses" sera utilisé pour filtrer les commentaires.
Code modifié :
la troisième méthode provient de https://github.com/sijiahi/Wordpress_cve-2019-9787_defense