
Analisa o Forminator do WordPress quanto ao RCE não autenticado CVE-2026-15748. Detecta sites vulneráveis, rastreia formulários, extrai nonces e executa testes de upload seguros.
Um scanner de pesquisa de segurança e avaliação de vulnerabilidades baseado em Python para identificar instalações do WordPress que utilizam o plugin Forminator e avaliar a exposição relacionada à versão.
Apenas para Fins Educacionais e Testes Autorizados
Execute este projeto apenas contra sistemas que você possui ou para os quais tem permissão explícita de avaliação.
CVE-2026-15748 é uma vulnerabilidade associada ao plugin Forminator para WordPress.
Este projeto fornece um scanner para pesquisa de segurança e testes autorizados. Ele executa uma sequência de verificações passivas e em nível de aplicação para identificar o WordPress, localizar o Forminator, determinar a versão instalada quando possível, inspecionar páginas e formulários relevantes e relatar a avaliação resultante.
O scanner destina-se a ajudar pesquisadores de segurança a compreender a exposição de ambientes WordPress autorizados, sem tratar o resultado do scanner como prova absoluta de explorabilidade.
O scanner segue este fluxo de trabalho geral:
Target
|
v
Normalize URL
|
v
Detect WordPress
|
+---- not detected ----> NOT WORDPRESS
|
v
Crawl relevant pages
|
v
Detect Forminator
|
v
Detect Forminator version
|
v
Compare version
|
v
Inspect forms
|
v
Generate result
| Recurso | Descrição |
|---|---|
| Detecção de WordPress | Detecta se o alvo parece usar WordPress. |
| Detecção do Forminator | Procura por indicadores do plugin Forminator. |
| Detecção de Versão | Tenta identificar a versão instalada do Forminator a partir das fontes disponíveis. |
| Verificação de Versão | Compara a versão detectada com o valor configurado em VULN_MAX. |
| Rastreamento do Site | Coleta páginas relevantes e links internos para inspeção adicional. |
| Detecção de Sitemap | Verifica locais comuns de sitemap do WordPress. |
| Detecção de Formulários | Procura por formulários e elementos de formulário relevantes do Forminator. |
| Detecção de Nonce | Tenta identificar um nonce do Forminator nos dados de formulário detectados. |
| Multithreading | Suporta o processamento de múltiplos alvos simultaneamente. |
| Tratamento de Retentativas | Repete requisições falhas de acordo com o limite configurado. |
| Atraso entre Requisições | Adiciona um atraso aleatório configurável entre as requisições. |
| Resultados Detalhados | Grava os resultados da avaliação coletados em um arquivo de resultados detalhado. |
requestspackagingurllib3Instale os pacotes necessários:
pip install requests packaging urllib3
Ou:
python -m pip install requests packaging urllib3
Clone o repositório:
git clone https://github.com/yora1928/cve-2026-15748.git
Entre no diretório do projeto:
cd cve-2026-15748
Instale as dependências:
pip install requests packaging urllib3
Verifique a instalação do Python:
python --version
A configuração do scanner é definida diretamente no código-fonte:
TIMEOUT = 15
THREADS = 8
VULN_MAX = "1.56.1"
MAX_RETRIES = 3
DELAY_MIN = 1.0
DELAY_MAX = 2.5
CRAWL_DEPTH = 2
| Variável | Padrão | Descrição |
|---|---|---|
TIMEOUT | 15 | Tempo limite da requisição HTTP. |
THREADS | 8 | Número de threads de trabalho usadas para o escaneamento. |
VULN_MAX | 1.56.1 | Versão máxima tratada como afetada pela avaliação de versão do scanner. |
MAX_RETRIES | 3 | Número máximo de tentativas de repetição para requisições com falha. |
DELAY_MIN | 1.0 | Atraso mínimo entre requisições. |
DELAY_MAX | 2.5 | Atraso máximo entre requisições. |
CRAWL_DEPTH | 2 | Profundidade máxima de rastreamento. |
Os valores acima descrevem a configuração atual do código-fonte do scanner.
O scanner aceita uma única URL de destino ou um arquivo de texto contendo várias URLs de destino.
python cve-2026-15748.py -u https://target.com
-u e --url especificam um único URL de destino.
Use este modo ao realizar uma avaliação contra um único ambiente autorizado.
Crie um arquivo como targets.txt:
https://target1.example
https://target2.example
https://target3.example
Em seguida, execute:
python cve-2026-15748.py -f targets.txt
-f e --file especificam a lista de alvos.
Cada linha não vazia é tratada como um alvo.
A configuração padrão usa 8 threads.
Por exemplo:
python cve-2026-15748.py -f targets.txt -t 10
Ou:
python cve-2026-15748.py -f targets.txt -t 5
-t altera o número de threads de trabalho usadas pelo scanner.
O scanner também fornece um modo opcional --upload:
python cve-2026-15748.py -u https://lab.example.com --upload
Para múltiplos alvos autorizados:
python cve-2026-15748.py -f authorized-targets.txt -t 5 --upload
Este modo pode realizar uma requisição POST/upload contra um endpoint do Forminator quando as condições relevantes são atendidas.
Use --upload apenas em sistemas onde este teste é explicitamente autorizado.
| Comando | Finalidade |
|---|---|
-u, --url | Escaneia uma única URL de destino. |
-f, --file | Lê múltiplos alvos a partir de um arquivo. |
-t | Define o número de threads de escaneamento. |
--upload | Habilita o modo de teste de upload para um alvo autorizado. |
Alvo único:
python cve-2026-15748.py -u https://target.com
Múltiplos alvos:
python cve-2026-15748.py -f targets.txt
Múltiplos alvos com concorrência personalizada:
python cve-2026-15748.py -f targets.txt -t 10
Teste de upload autorizado em laboratório:
python cve-2026-15748.py -u https://lab.example.com --upload
O scanner executa várias etapas durante uma avaliação.
A URL de destino é normalizada antes que as requisições sejam feitas, para que as verificações subsequentes utilizem um formato de URL consistente.
O scanner verifica indicadores e endpoints comuns do WordPress, incluindo:
/wp-login.php
/wp-json
/xmlrpc.php
/wp-content
Ele também procura nas respostas indicadores como:
wp-content
wp-includes
Se o WordPress não puder ser identificado, o scanner reporta:
[NOT WORDPRESS]
O scanner cria uma lista de páginas a partir de caminhos comuns, localizações de sitemap e links internos descobertos a partir do alvo.
Exemplos de caminhos verificados incluem:
/contact
/kontak
/hubungi-kami
/form
/forms
/formulir
/upload
/unggah
/submit
/kirim
/gallery
/kontribusi
/daftar
/pendaftaran
/registration
/register
/file-upload
/submit-document
/unggah-berkas
/upload-file
Locais comuns de sitemap incluem:
/sitemap.xml
/sitemap_index.xml
/wp-sitemap.xml
O crawler é limitado por CRAWL_DEPTH.
O scanner procura por identificadores do Forminator, tais como:
forminator-form-<ID>
Para formulários detectados, ele verifica elementos relevantes, tais como:
type="file"
e:
<select>
Ele também tenta obter:
form_id
nonce
a partir do HTML do formulário.
O scanner tenta determinar a versão do Forminator a partir de informações expostas pelo alvo.
Uma das fontes é um caminho de asset semelhante a:
/wp-content/plugins/forminator/...
com um parâmetro de versão:
?ver=X.X.X