
Prova de conceito em Python para CVE-2026-15667, uma inclusão local de arquivo autenticada no plugin WordPress Eventin através do campo REST event_layout.
CVE-2026-15667 WordPress Event Solution LFI POC
Eventin (plugin WordPress wp-event-solution) ≤ 4.1.22 — inclusão de arquivo local autenticada (Contributor+) através do campo REST event_layout.
Apenas para testes autorizados. Não execute isto contra sistemas que não possui ou para os quais não tem permissão de teste.
Requer: Python 3, apenas biblioteca padrão.
python3 cve-2026-15667-eventin-lfi.py -u http://TARGET --test
python3 cve-2026-15667-eventin-lfi.py -u http://TARGET --test --uname USER --password PASS
python3 cve-2026-15667-eventin-lfi.py -u http://TARGET --file /etc/passwd --uname USER --password PASS
python3 cve-2026-15667-eventin-lfi.py -u http://TARGET --file /etc/passwd --session 'wordpress_logged_in_HASH=...'
| Flag | O que faz |
|---|
-u / --url | Raiz do site WordPress (obrigatório). http:// ou https://; um hostname é tentado como HTTPS primeiro, depois HTTP. TLS autoassinado é tentado novamente automaticamente. |
--test | Convidado: versão do plugin + rota REST. Com autenticação: envia um traversal via POST e reporta se foi armazenado |
--file PATH | Inclui PATH através do LFI e imprime a saída. Requer autenticação |
--uname | Nome de usuário do WordPress (Contributor+) |
--password | Senha do WordPress |
--session | Cabeçalho Cookie do navegador (ou wordpress_logged_in_*=...). Ignora /wp-login.php |
--uname/--password e --session são intercambiáveis. Precisa de um par ou do cookie para --file e para a metade autenticada de --test.
--test sem credenciais é não autenticado (readme + /wp-json/eventin/v2/events). A inclusão em si não é.
O plugin inclui {layout}.php, então --file /etc/passwd solicita /etc/passwd.php. Passe um caminho .php, ou um caminho que exista após .php ser anexado.
Stdout: VERSION, ROUTE, PRESENT, NEED_AUTH, VULNERABLE, NOT_VULNERABLE, AUTH_FAILED, conteúdo do arquivo.
CVE: CVE-2026-15667. Reportado por Wordfence PRISM.