
Escanea WordPress Forminator en busca de CVE-2026-15748, RCE sin autenticación. Detecta sitios vulnerables, rastrea formularios, extrae nonces y ejecuta pruebas de subida seguras.
Un escáner de investigación de seguridad y evaluación de vulnerabilidades basado en Python para identificar instalaciones de WordPress que utilizan el plugin Forminator y evaluar la exposición relacionada con la versión.
Solo para fines educativos y pruebas autorizadas
Ejecute este proyecto únicamente contra sistemas que sean de su propiedad o para los que tenga permiso explícito de evaluación.
CVE-2026-15748 es una vulnerabilidad asociada con el plugin Forminator para WordPress.
Este proyecto proporciona un escáner para investigación de seguridad y pruebas autorizadas. Realiza una secuencia de comprobaciones pasivas y a nivel de aplicación para identificar WordPress, localizar Forminator, determinar la versión instalada cuando sea posible, inspeccionar las páginas y formularios relevantes, e informar de la evaluación resultante.
El escáner está diseñado para ayudar a los investigadores de seguridad a comprender la exposición de entornos WordPress autorizados sin tratar el resultado de un escáner como prueba absoluta de explotabilidad.
El escáner sigue este flujo de trabajo general:
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
| Característica | Descripción |
|---|---|
| Detección de WordPress | Detecta si el objetivo parece usar WordPress. |
| Detección de Forminator | Busca indicadores del plugin Forminator. |
| Detección de versión | Intenta identificar la versión de Forminator instalada a partir de las fuentes disponibles. |
| Verificación de versión | Compara la versión detectada con el valor configurado VULN_MAX. |
| Rastreo del sitio web | Recopila páginas relevantes y enlaces internos para su posterior inspección. |
| Detección de sitemap | Comprueba las ubicaciones comunes de sitemap de WordPress. |
| Detección de formularios | Busca formularios y elementos de formulario de Forminator relevantes. |
| Detección de nonce | Intenta identificar un nonce de Forminator en los datos del formulario detectado. |
| Multihilo | Admite el procesamiento de múltiples objetivos de forma concurrente. |
| Gestión de reintentos | Reintenta las solicitudes fallidas según el límite configurado. |
| Retardo entre solicitudes | Añade un retardo aleatorio configurable entre solicitudes. |
| Resultados detallados | Escribe los resultados de la evaluación recopilados en un archivo de resultados detallado. |
requestspackagingurllib3Instala los paquetes necesarios:
pip install requests packaging urllib3
O:
python -m pip install requests packaging urllib3
Clona el repositorio:
git clone https://github.com/yora1928/cve-2026-15748.git
Ingrese al directorio del proyecto:
cd cve-2026-15748
Instala las dependencias:
pip install requests packaging urllib3
Verifique la instalación de Python:
python --version
La configuración del escáner se define directamente en el código fuente:
TIMEOUT = 15
THREADS = 8
VULN_MAX = "1.56.1"
MAX_RETRIES = 3
DELAY_MIN = 1.0
DELAY_MAX = 2.5
CRAWL_DEPTH = 2
| Variable | Predeterminado | Descripción |
|---|---|---|
TIMEOUT | 15 | Tiempo de espera de la solicitud HTTP. |
THREADS | 8 | Número de hilos de trabajo utilizados para el escaneo. |
VULN_MAX | 1.56.1 | Versión máxima considerada como afectada por la evaluación de versiones del escáner. |
MAX_RETRIES | 3 | Número máximo de reintentos para solicitudes fallidas. |
DELAY_MIN | 1.0 | Retardo mínimo entre solicitudes. |
DELAY_MAX | 2.5 | Retardo máximo entre solicitudes. |
CRAWL_DEPTH | 2 | Profundidad máxima de rastreo. |
Los valores anteriores describen la configuración actual del código fuente del escáner.
El escáner acepta una única URL de destino o un archivo de texto que contenga varias URL de destino.
python cve-2026-15748.py -u https://target.com
-u y --url especifican una URL objetivo.
Utiliza este modo cuando realices una evaluación contra un único entorno autorizado.
Crea un archivo como targets.txt:
https://target1.example
https://target2.example
https://target3.example
Luego ejecuta:
python cve-2026-15748.py -f targets.txt
-f y --file especifican la lista de objetivos.
Cada línea no vacía se trata como un objetivo.
La configuración predeterminada utiliza 8 hilos.
Por ejemplo:
python cve-2026-15748.py -f targets.txt -t 10
O:
python cve-2026-15748.py -f targets.txt -t 5
-t cambia el número de hilos de trabajo utilizados por el escáner.
El escáner también proporciona un modo opcional --upload:
python cve-2026-15748.py -u https://lab.example.com --upload
Para múltiples objetivos autorizados:
python cve-2026-15748.py -f authorized-targets.txt -t 5 --upload
Este modo puede realizar una solicitud POST/upload contra un endpoint de Forminator cuando se cumplen las condiciones relevantes.
Utilice --upload únicamente en sistemas donde esta prueba esté explícitamente autorizada.
| Comando | Propósito |
|---|---|
-u, --url | Escanear una única URL objetivo. |
-f, --file | Leer múltiples objetivos desde un archivo. |
-t | Establecer el número de hilos de escaneo. |
--upload | Habilitar el modo de prueba de carga para un objetivo autorizado. |
Objetivo único:
python cve-2026-15748.py -u https://target.com
Múltiples objetivos:
python cve-2026-15748.py -f targets.txt
Múltiples objetivos con concurrencia personalizada:
python cve-2026-15748.py -f targets.txt -t 10
Prueba de carga autorizada en laboratorio:
python cve-2026-15748.py -u https://lab.example.com --upload
El escáner realiza varias etapas durante una evaluación.
La URL objetivo se normaliza antes de realizar las solicitudes, de modo que las comprobaciones posteriores utilicen un formato de URL consistente.
El escáner comprueba indicadores y endpoints comunes de WordPress, incluidos:
/wp-login.php
/wp-json
/xmlrpc.php
/wp-content
También busca en las respuestas indicadores como:
wp-content
wp-includes
Si no se puede identificar WordPress, el escáner informa:
[NOT WORDPRESS]
El escáner construye una lista de páginas a partir de rutas comunes, ubicaciones de sitemap y enlaces internos descubiertos desde el objetivo.
Ejemplos de rutas verificadas incluyen:
/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
Las ubicaciones comunes de sitemap incluyen:
/sitemap.xml
/sitemap_index.xml
/wp-sitemap.xml
El rastreador está limitado por CRAWL_DEPTH.
El escáner busca identificadores de Forminator tales como:
forminator-form-<ID>
Para los formularios detectados, comprueba si hay elementos relevantes como:
type="file"
y:
<select>
También intenta obtener:
form_id
nonce
desde el HTML del formulario.