
Exploit de prueba de concepto para JetBrains TeamCity que realiza ejecución remota de código no autenticada mediante la deserialización del protocolo de sondeo de agentes, despliega una carga útil JSP y admite la ejecución de comandos multihilo.
Resumen • Flujo visual • Requisitos • Uso • Limitaciones • Mitigación
[!CAUTION] Este PoC ejecuta un comando del sistema operativo y puede modificar el directorio de la aplicación TeamCity. Úselo únicamente en un laboratorio aislado o contra sistemas para los que tenga autorización explícita por escrito.
JetBrains afirma que todas las versiones de TeamCity On-Premises anteriores a las versiones corregidas están afectadas. Actualice a una versión compatible actual siempre que sea posible. Si no es posible actualizar de inmediato, siga las instrucciones del proveedor para su plugin de parche de seguridad.
[!NOTE] Este repositorio no afirma que el CVE esté incluido en el catálogo de vulnerabilidades explotadas conocidas de CISA. JetBrains no informó de explotación activa conocida cuando publicó su aviso el 27 de julio de 2026.
A alto nivel, el PoC:
result.txt.El JSP generado intenta eliminarse a sí mismo al ser invocado. Considere la limpieza como un mecanismo de mejor esfuerzo, no como una garantía de que el objetivo quede sin cambios.
Python 3.9 or later
Target Authorized TeamCity On-Premises lab instance
Transport HTTP or HTTPS access
Shell bash available on the TeamCity server
Packages Python standard library only
Safety Disposable environment or verified backup
[!IMPORTANT] El payload invoca comandos a través de
bash -c. Un servidor TeamCity en Windows requiere, por lo tanto, una instalación de Bash compatible; de lo contrario, la etapa de ejecución de comandos fallará.
Ejecute el PoC desde el directorio del proyecto:
python3 exploit.py
El programa solicita un objetivo, un comando y el número deseado de hilos:
[*] Target URL or file: http://127.0.0.1:8111
[*] Command: id
[*] Threads (default 10): 1
Ingrese la URL base completa del objetivo. Cuando se omite el esquema, el script
usa http:// automáticamente.
Para varios sistemas de laboratorio, ingrese la ruta a un archivo de texto con una URL por línea:
http://127.0.0.1:8111
http://192.0.2.10:8111
https://teamcity.lab.example
No agregue comentarios en línea a las líneas de objetivos porque el analizador no los elimina. Comience con un hilo y aumente la concurrencia solo después de confirmar el alcance y la capacidad del laboratorio autorizado.
Los resultados exitosos se añaden a result.txt:
http://127.0.0.1:8111 -> uid=1000(tcuser) gid=1000(tcuser) groups=1000(tcuser)
El archivo puede contener salida sensible de comandos. Manténgalo fuera del control de versiones y elimínelo de forma segura cuando ya no sea necesario.
bash está disponible en el servidor
TeamCity.../webapps/ROOT; las estructuras
no estándar de TeamCity o del contenedor de servlets pueden no funcionar.args indefinido. El primer comando enviado se ejecuta de forma
independiente, pero los comandos adicionales de ese mensaje fallarán hasta que
se corrija el código.flowchart LR
A["Identify TeamCity version"] --> B{"Patched release?"}
B -- "No" --> C["Upgrade to 2025.11.7 / 2026.1.3+"]
B -- "Upgrade blocked" --> D["Apply JetBrains security patch plugin"]
C --> E["Restrict access to trusted networks or VPN"]
D --> E
E --> F["Review logs, credentials, artifacts, and pipelines"]
2025.11.7, 2026.1.3 o una versión
compatible más reciente.Este código se proporciona para investigación, validación y pruebas defensivas de seguridad en entornos que usted posee o que tiene autorización explícita para evaluar. Usted es responsable de cumplir con las leyes, contratos y reglas de participación aplicables. El autor y los colaboradores no aceptan ninguna responsabilidad por el uso no autorizado o los daños resultantes.
| Propiedad | Valor |
|---|
| CVE | CVE-2026-63077 |
| Producto | JetBrains TeamCity On-Premises |
| Impacto | Ejecución remota de código no autenticada a través del protocolo de sondeo de agentes |
| Debilidad | CWE-502 — Deserialización de datos no confiables |
| CVSS | 9.8 Crítico — CNA de JetBrains, CVSS 3.1 |
| Autenticación | No requerida |
| Versiones corregidas | 2025.11.7 y 2026.1.3 |
| Mitigación alternativa | Plugin de parche de seguridad de JetBrains para TeamCity 2017.1+ |
| TeamCity Cloud | No se requiere ninguna acción del cliente según JetBrains |