
Exploit de prova de conceito para o JetBrains TeamCity que realiza execução remota de código não autenticada por meio da desserialização do protocolo de polling de agentes, implanta um payload JSP e suporta execução de comandos multi-threaded.
Visão geral • Fluxo visual • Requisitos • Uso • Limitações • Mitigação
[!CAUTION] Este PoC executa um comando do sistema operacional e pode modificar o diretório da aplicação TeamCity. Utilize-o apenas em um laboratório isolado ou em sistemas para os quais você tenha autorização explícita por escrito.
A JetBrains afirma que todas as versões do TeamCity On-Premises anteriores às versões corrigidas são afetadas. Atualize para uma versão suportada atual sempre que possível. Se uma atualização imediata não for possível, siga as instruções do fornecedor para o plugin de patch de segurança.
[!NOTE] Este repositório não afirma que o CVE está listado no catálogo de Vulnerabilidades Exploradas Conhecidas (KEV) da CISA. A JetBrains não relatou exploração ativa conhecida quando publicou seu aviso em 27 de julho de 2026.
Em alto nível, o PoC:
result.txt.O JSP gerado tenta se excluir quando invocado. Trate a limpeza como melhor esforço, não como garantia de que o alvo permanecerá inalterado.
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] O payload invoca comandos via
bash -c. Um servidor TeamCity Windows, portanto, requer uma instalação Bash compatível; caso contrário, o estágio de execução do comando falhará.
Execute o PoC a partir do diretório do projeto:
python3 exploit.py
O programa solicita um alvo, um comando e o número desejado de threads:
[*] Target URL or file: http://127.0.0.1:8111
[*] Command: id
[*] Threads (default 10): 1
Insira a URL base completa do alvo. Quando o esquema for omitido, o script usa
http:// automaticamente.
Para vários sistemas de laboratório, insira o caminho para um arquivo de texto com uma URL por linha:
http://127.0.0.1:8111
http://192.0.2.10:8111
https://teamcity.lab.example
Não adicione comentários inline às linhas de alvos porque o parser não os remove. Comece com uma thread e aumente a concorrência somente depois de confirmar o escopo e a capacidade do laboratório autorizado.
Os resultados bem-sucedidos são anexados a result.txt:
http://127.0.0.1:8111 -> uid=1000(tcuser) gid=1000(tcuser) groups=1000(tcuser)
O arquivo pode conter saída sensível de comandos. Mantenha-o fora do controle de versão e exclua-o com segurança quando não for mais necessário.
bash esteja disponível no servidor
TeamCity.../webapps/ROOT; layouts não
padronizados do TeamCity ou do contêiner de servlets podem não funcionar.args indefinido. O primeiro comando enviado é executado de forma
independente, mas comandos adicionais a partir desse prompt falharão até que
o código seja corrigido.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 ou uma versão
suportada mais recente.Este código é fornecido para pesquisa de segurança, validação e testes defensivos em ambientes que você possui ou que está explicitamente autorizado a avaliar. Você é responsável por cumprir as leis, contratos e regras de engajamento aplicáveis. O autor e os colaboradores não aceitam responsabilidade por uso não autorizado ou danos resultantes.
| Propriedade | Valor |
|---|
| CVE | CVE-2026-63077 |
| Produto | JetBrains TeamCity On-Premises |
| Impacto | Execução remota de código não autenticada através do protocolo de polling de agentes |
| Fraqueza | CWE-502 — Desserialização de dados não confiáveis |
| CVSS | 9.8 Crítico — CNA JetBrains, CVSS 3.1 |
| Autenticação | Não é necessária |
| Versões corrigidas | 2025.11.7 e 2026.1.3 |
| Mitigação alternativa | Plugin de patch de segurança da JetBrains para TeamCity 2017.1+ |
| TeamCity Cloud | Nenhuma ação do cliente é necessária, de acordo com a JetBrains |