Exploit PoC para CVE-2024-1813: inyección de objetos PHP en el plugin Simple Job Board de WordPress, logrando RCE no autenticado mediante una cadena de gadgets. Incluye laboratorio Docker para demostración segura.
De extremo a extremo: un visitante almacena un objeto PHP serializado a través del formulario público de solicitud, el administrador abre la lista de solicitantes y la cadena de gadgets suelta un webshell.
Inyección de Objetos PHP no autenticada en el plugin Simple Job Board para WordPress (PressTigers). Un visitante almacena un objeto PHP serializado a través del formulario público de solicitud; cuando un administrador abre más tarde la lista de solicitantes, el plugin lo deserializa y una cadena de gadgets de terceros lo convierte en ejecución remota de código.
| CVE | CVE-2024-1813 |
| Plugin | Simple Job Board (PressTigers) |
| Vulnerable | ≤ 2.11.0 |
| Parcheado | 2.11.1 |
| Tipo | Inyección de Objetos PHP (deserialización insegura) |
| Autenticación | Ninguna (inyección pre-autenticación) |
| Desencadenante | El administrador abre la lista de solicitantes (flujo normal) |
| CVSS | 9.8 |
📖 Análisis técnico completo: https://mobeta.fr/blog/
Este repositorio es el laboratorio y PoC complementarios. El análisis detallado (causa raíz, el doble
unserialize, la construcción de la cadena POP, la evasión de WAF) se encuentra en el artículo del blog.
.
├── sjb_cve_2024_1813.py # the PoC (builds + sends the payload)
├── LICENSE
└── lab/
├── docker-compose.yml # WordPress + MariaDB + vulnerable plugins
├── setup/setup.sh # one-shot provisioning (wp-cli)
└── trigger_exploit.sh # simulates the admin opening the applicants list
Reproduce la pila vulnerable: WordPress 6.9.4 / PHP 8.3 / MariaDB 10.11 con Simple Job Board 2.10.8 (origen y sumidero) y All In One SEO 4.5.6 (la cadena de gadgets).
cd lab
docker compose up -d # boot + auto-provision
docker compose logs setup # prints the site URL, admin creds and job_id
Valores por defecto del laboratorio: http://localhost:8081, administrador admin / admin123!.
# 1. Store the payload (pre-auth). Replace 4 with the job_id from the setup logs.
python3 sjb_cve_2024_1813.py http://localhost:8081 4 'id > /tmp/RCE_PROOF.txt'
# 2. Fire the sink (plays the admin opening the applicants list).
cd lab && ./trigger_exploit.sh
# 3. Check the result.
docker exec sjb_lab_wp cat /tmp/RCE_PROOF.txt
Opciones útiles del PoC:
--print-only - construir e imprimir el payload de red, sin tráfico de red.--field - nombre del campo POST (debe contener name; por defecto jobapp_full_name).--int-prefix '+' - variante de evasión de WAF del prefijo de longitud serializado.--proxy http://127.0.0.1:8080 - enrutar a través de Burp.unserialize() / maybe_unserialize() explícito en post_meta; prefiere unserialize($data, ['allowed_classes' => false]).vendor/composer/installed.json para que no se puedan identificar las versiones de las librerías con ámbito.Solo para pruebas de seguridad autorizadas y fines educativos. No ejecutes esto contra ningún sistema sin permiso explícito por escrito de su propietario.
MIT - consulta LICENSE.