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-2025-31324 — Prueba de concepto del exploit para CVE-2025-31324, una subida de archivos sin autenticación en SAP NetWeaver Visual Composer, con guía de detección, mapeo MITRE y pasos de remediación. | Kitploit
Herramientas/GitHubGitHub/hkenzokimura/cve-2025-31324
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónRed TeamingRespuesta a Incidentes
GitHubhkenzokimura/cve-2025-31324

CVE-2025-31324

Prueba de concepto del exploit para CVE-2025-31324, una subida de archivos sin autenticación en SAP NetWeaver Visual Composer, con guía de detección, mapeo MITRE y pasos de remediación.

Ver Repositorio
hace 5h 23mAú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

🔴 CVE-2025-31324 — SAP NetWeaver Visual Composer Subida de Archivos No Autenticada

Tipo: Prueba de Concepto — Investigación de Vulnerabilidades CVE: CVE-2025-31324 CVSS: 10.0 Crítico (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:H) Estado: Parcheado — Nota de Seguridad SAP 3594142 + 3604119 Añadido al KEV de CISA: Mayo 2025

⚠️ Este PoC utiliza un archivo JSP benigno ("Hello World") para validar la superficie de ataque sin ejecutar código malicioso. Uso exclusivo en entornos autorizados con fines de pentesting y desarrollo de detecciones.

Desarrollado por: HKK


$ cat ./vulnerability_summary.txt

La vulnerabilidad CVE-2025-31324 reside en el componente Visual Composer Metadata Uploader de SAP NetWeaver AS Java — una falla de missing authorization check que permite a cualquier atacante no autenticado enviar solicitudes POST al endpoint /developmentserver/metadatauploader, resultando en una subida irrestricta de archivos arbitrarios.

El CVE afecta específicamente al SAP NetWeaver Visual Composer Framework versión 7.50, con una puntuación CVSS de 10.0 — el máximo posible.

Los actores de amenazas explotaron activamente esta vulnerabilidad de enero a mayo de 2025, implantando webshells persistentes en cientos de sistemas en todo el mundo.


$ cat ./impact.txt

Al operar con privilegios elevados y estar cerca de datos ERP, el movimiento lateral hacia stacks SAP ABAP o bases de datos conectadas es trivial después de la explotación.

La cadena de explotación completa en ataques reales:

root@kitploit:~
Subida JSP (CVE-2025-31324)
    → Webshell persistente en el servidor
        → RCE como proceso SAP (alto privilegio)
            → Acceso a datos ERP (Finanzas, RRHH, Cadena de Suministro)
                → Movimiento lateral hacia ABAP / DB
                    → Despliegue de frameworks C2 (ej: Brute Ratel)

$ cat ./architecture.txt

Cómo funciona el endpoint vulnerable

root@kitploit:~
┌─────────────────────────────────────────────────────────────────────────┐
│              CVE-2025-31324 — FLUJO DE EXPLOTACIÓN                      │
│                                                                         │
│  ATACANTE                    SAP NETWEAVER AS JAVA                      │
│                                                                         │
│  POST /developmentserver/metadatauploader                               │
│  Content-Type: multipart/form-data          ┌─────────────────────┐    │
│  Cuerpo: archivo JSP/WAR/cualquiera ──────► │  Metadata Uploader  │    │
│  (sin autenticación)                        │                     │    │
│                                             │  ❌ Sin verificación  │    │
│                                             │     de auth         │    │
│                                             │  ❌ Sin validación    │    │
│                                             │     de extensión     │    │
│                                             │  ❌ Sin sanitización  │    │
│                                             │     de contenido     │    │
│                                             └────────┬────────────┘    │
│                                                      │                 │
│                                             Archivo guardado en:       │
│                                             /irj/root/ o similar       │
│                                                      │                 │
│  GET /irj/hello_world.jsp ◄──────────────────────────┘                 │
│  → Hello World (PoC benigno)                                            │
│  → Webshell (exploit real)                                              │
└─────────────────────────────────────────────────────────────────────────┘

¿Por qué existe el endpoint?

El /developmentserver/metadatauploader forma parte del SAP Visual Composer — una herramienta de desarrollo low-code para que analistas de negocio creen aplicaciones SAP sin código Java. El endpoint fue diseñado para recibir modelos de metadata durante el desarrollo. Aunque el componente no está habilitado en la configuración predeterminada de NetWeaver, Onapsis informó que está ampliamente activado en entornos de producción.


$ cat ./design_decisions.md

1. Elección del Payload — JSP "Hello World"

root@kitploit:~
file_content = """<%@ page language="java" contentType="text/html; charset=UTF-8" ...%>
<h1>Hello World</h1>"""

¿Por qué JSP y no otro formato?

SAP NetWeaver AS Java ejecuta una JVM — los archivos .jsp son interpretados directamente por el contenedor de servlets (Apache Tomcat embebido) sin compilación previa. Esto convierte a JSP en el formato ideal para webshells en entornos Java.

La elección del contenido benigno ("Hello World") es deliberada para el PoC:

  • Valida la superficie vulnerable sin ejecutar código malicioso
  • Confirma la subida (código HTTP 200 + archivo accesible vía GET)
  • Evidencia forense limpia para el informe de pentest

En una explotación real, el contenido sería un webshell JSP con ejecución de comandos, ej:

root@kitploit:~
<%
  String cmd = request.getParameter("cmd");
  Runtime.getRuntime().exec(cmd);
%>

2. multipart/form-data — ¿Por qué ese Content-Type?

root@kitploit:~
files = {'file': (file_name, open(file_name, 'rb'), 'application/octet-stream')}

El endpoint espera una solicitud multipart/form-data — el mismo formato utilizado por los formularios HTML de subida de archivos. Esto es intencional en el diseño original de Visual Composer (subida de modelos de desarrollo).

La biblioteca requests construye automáticamente los boundaries del multipart cuando se pasa files= — el header Content-Type: multipart/form-data; boundary=... se genera internamente.

verify=False: deshabilita la validación del certificado TLS — necesario porque los entornos SAP frecuentemente usan certificados self-signed. En producción, usar verify='/path/to/ca-bundle.crt'.

3. Ruta del Endpoint — Anatomía de la URL

root@kitploit:~
https://<host>:<port>/developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1
ComponenteSignificado
:50201Puerto predeterminado del SAP ICM (Internet Communication Manager) HTTPS
/developmentserver/Servlet de desarrollo de Visual Composer
metadatauploaderEndpoint específico de subida de metadatos
CONTENTTYPE=MODELTipo de contenido esperado por el endpoint
CLIENT=1Mandante SAP (client) — 000, 100, 001 son comunes

$ cat ./mitre_mapping.yml

root@kitploit:~
tactic: Initial Access
  - T1190  # Exploit Public-Facing Application
            # Explotación del endpoint /developmentserver/metadatauploader
            # sin autenticación vía HTTP POST

tactic: Execution
  - T1505.003  # Server Software Component: Web Shell
               # Webshell JSP subido → ejecutado por el contenedor de servlets (Tomcat)

tactic: Persistence
  - T1505.003  # Web Shell como mecanismo de persistencia
               # El archivo JSP persiste en el filesystem del servidor entre reinicios

tactic: Defense Evasion
  - T1036      # Masquerading
               # Webshells nombrados como archivos legítimos de SAP (ej: metadata.jsp)

tactic: Discovery
  - T1082      # System Information Discovery
               # Post-RCE: enumerar procesos, usuarios, rutas SAP

tactic: Lateral Movement
  - T1210      # Exploitation of Remote Services
               # Acceso al stack ABAP, bases de datos conectadas vía RCE

tactic: Collection
  - T1005      # Data from Local System
               # Acceso directo a datos ERP (Finanzas, RRHH, Cadena de Suministro)

$ cat ./affected_versions.txt

root@kitploit:~
Producto:  SAP NetWeaver Application Server Java
Componente: Visual Composer Framework
Versión:   7.50 (todas las builds anteriores al parche de abril/mayo 2025)

Parches:
  SSN 3594142 → Parche inicial (abril 2025) — mitiga la subida de archivos
  SSN 3604119 → Corrección de causa raíz vía CVE-2025-42999 (mayo 2025) — aborda la causa raíz
  SSN 3578900, 3620498, 3621771, 3634501 → Notas complementarias de hardening

CISA KEV: tanto CVE-2025-31324 como CVE-2025-42999 fueron añadidos al catálogo

$ cat ./detection_opportunities.md

Detección del Exploit (durante el ataque)

root@kitploit:~
# Regla: POST no autenticado hacia el endpoint del Metadata Uploader
# Fuente: SAP Web Dispatcher / registro de acceso ICM

Condición:
  - method: POST
  - uri_path CONTIENE: /developmentserver/metadatauploader
  - auth_header: AUSENTE
  - body_content_type: multipart/form-data

Severidad: CRÍTICA — investigar inmediatamente
root@kitploit:~
# Log SAP ICM — patrón sospechoso:
[2025-04-25 03:41:22] POST /developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1
Status: 200 | Size: 1337 | Auth: NONE | IP: x.x.x.x

Detección de Webshell (post-compromiso)

root@kitploit:~
# Regla: GET hacia archivo .jsp creado recientemente fuera de rutas legítimas de SAP
Condición:
  - method: GET
  - uri_path COINCIDE CON: /irj/.*\.jsp
  - file_creation_time: < 24h
  - file_NO_EN: [lista de JSPs legítimos conocidos]
root@kitploit:~
# Proceso hijo sospechoso del JVM de SAP
# Fuente: Sysmon / creación de procesos EDR
Condición:
  - parent_process: java.exe o jstart.exe
  - child_process: cmd.exe O powershell.exe O sh O bash
  - command_line CONTIENE: -c O .socket O .call( O .spawn(

Red Canary documentó el siguiente patrón de detección para la explotación del CVE-2025-31324 en entornos Linux: proceso python con argumento -c combinado con .socket y .call( o .spawn( — indicativo de reverse shell post-webshell.

Hunting en Logs SAP

root@kitploit:~
# Buscar solicitudes POST hacia el endpoint vulnerable en los últimos 90 días
# Directorio de logs: /usr/sap/<SID>/J<inst>/work/

grep -r "metadatauploader" /usr/sap/*/work/dev_icm* | grep "POST"
grep -r "metadatauploader" /usr/sap/*/work/http_access* | grep -v "GET"

# Listar JSPs creados recientemente en el directorio web
find /usr/sap/ -name "*.jsp" -newer /usr/sap/<SID>/SYS/global/security -type f

$ cat ./remediation.md

root@kitploit:~
PRIORIDAD: CRÍTICA — Parche inmediato

1. Verificar si el componente está activo:
   NWA → Configuration → Infrastructure → Java System Properties
   Buscar: com.sap.tc.vccomp.server.vis.jms.VisJmsService

2. Si no es necesario → DESHABILITAR Visual Composer:
   NWA → Start & Stop → Services → VisualComposer → Stop

3. Aplicar parches obligatorios (en orden):
   SSN 3594142  ← crítico (subida de archivos)
   SSN 3604119  ← causa raíz (CVE-2025-42999)
   SSN 3578900, 3620498, 3660659 (hardening adicional)

4. Configurar JVM Serial Filter (post-parche):
   NWA → JVM Parameters → añadir filtro de clases maliciosas

5. Restringir el acceso de red al endpoint en el Web Dispatcher / Firewall:
   BLOQUEAR: /developmentserver/* para IPs externas
   PERMITIR: solo hosts de desarrollo autorizados

6. Verificar IOCs — buscar webshells implantados antes del parche:
   Analizar logs ICM desde enero 2025
   Buscar archivos .jsp con contenido sospechoso en /irj/

$ cat ./usage.sh

root@kitploit:~
# Instalar dependencia
pip install requests

# Editar la URL en el script antes de ejecutar:
# url = "https://<su-host-lab>:<puerto>/developmentserver/metadatauploader?CONTENTTYPE=MODEL&CLIENT=1"

# Ejecutar
python cve_2025_31324_poc.py

# Verificar si la subida funcionó (el archivo debe ser accesible)
curl -k https://<host>:<puerto>/irj/hello_world.jsp
# Respuesta esperada si es vulnerable: HTML con "Hello World"
# Respuesta esperada si está parcheado: 404 o 403

$ cat ./timeline.txt

root@kitploit:~
Ene 2025      Inicio de la explotación activa in-the-wild (detectado retroactivamente)
Abr 24, 2025  SAP publica CVE-2025-31324 (CVSS 10.0) + SSN 3594142
Abr 28, 2025  CISA lo añade al Known Exploited Vulnerabilities Catalog
Abr 29, 2025  Rapid7, Qualys, Red Canary publican análisis técnicos
May 07, 2025  Onapsis + Mandiant (Google Cloud) publican briefing conjunto
May 13, 2025  SAP publica SSN 3604119 (causa raíz vía CVE-2025-42999, CVSS 9.1)
May 15, 2025  CISA añade CVE-2025-42999 al catálogo KEV
May 20, 2025  Fecha límite de CISA para parchear en sistemas federales de EE. UU.
Jun 25, 2025  Unit 42 finaliza el monitoreo activo de la campaña

$ cat ./references.md

root@kitploit:~
CVE:        https://www.cve.org/CVERecord?id=CVE-2025-31324
SAP Note:   https://me.sap.com/notes/3594142
NVD:        https://nvd.nist.gov/vuln/detail/CVE-2025-31324
CISA KEV:   https://www.cisa.gov/known-exploited-vulnerabilities-catalog
Onapsis:    https://onapsis.com/blog/active-exploitation-of-sap-vulnerability-cve-2025-31324/
Rapid7:     https://www.rapid7.com/blog/post/2025/04/28/etr-active-exploitation-of-sap-netweaver-visual-composer-cve-2025-31324/
Unit 42:    https://unit42.paloaltonetworks.com/threat-brief-sap-netweaver-cve-2025-31324/
Red Canary: https://redcanary.com/blog/threat-intelligence/cve-2025-31324/

$ cat ./lessons_learned.txt

root@kitploit:~
[+] Missing auth en endpoints de "desarrollo" es un vector clásico subestimado
[+] CVSS 10.0 significa: sin auth + red + RCE completo — la trifecta más crítica posible
[+] Visual Composer no es estándar pero estaba ampliamente activo en producción — riesgo de shadow features
[+] JSP como webshell es especialmente sigiloso: sin compilación, ejecutado directamente por el contenedor
[+] Los actores de amenazas explotaron durante 3+ meses antes de la divulgación pública — la detección del SOC es crítica
[-] verify=False en el PoC — en pentest real, documentar el cert self-signed y usar verify=ruta
[-] CLIENT=1 hardcodeado — producción puede usar 000, 100, 200; enumerar antes
[-] El PoC no verifica si el archivo quedó accesible tras la subida — añadir GET de confirmación
[→] Mejoras: argparse para host/puerto/client, verificación automática post-subida, salida en JSON

Investigación CVE · CVSS 10.0 · Parcheado Abril/Mayo 2025 · CISA KEV · Solo pruebas autorizadas

Descargar herramienta