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
CVE-2023-25136-PoC — Ambiente mínimo de reprodução baseado em Docker para a vulnerabilidade de double-free pré-autenticação do OpenSSH 9.1p1 (CVE-2023-25136), demonstrando corrupção de memória e negação de serviço através de um cliente PoC em Python. | Kitploit
Ferramentas/GitHubGitHub/lane0218/cve-2023-25136-poc
Análise de VulnerabilidadesExploraçãoTestes de PenetraçãoAprendizado e EducaçãoExploração de Binários
GitHublane0218/cve-2023-25136-poc

CVE-2023-25136-PoC

Ambiente mínimo de reprodução baseado em Docker para a vulnerabilidade de double-free pré-autenticação do OpenSSH 9.1p1 (CVE-2023-25136), demonstrando corrupção de memória e negação de serviço através de um cliente PoC em Python.

Ver Repositório
há 9 mesesAinda 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

Reprodução da Vulnerabilidade CVE-2023-25136

Este projeto fornece um ambiente experimental local mínimo para reproduzir a vulnerabilidade de double free na pré-autenticação do OpenSSH 9.1p1 (CVE-2023-25136) e observar o efeito de travamento do processo do servidor (DoS).

Nota: Análises oficiais e mainstream consideram que esta vulnerabilidade é "difícil de ser explorada para execução remota de código" na configuração de segurança padrão. Este ambiente é usado principalmente para demonstrar o erro de memória e o efeito de negação de serviço.

Descrição do Ambiente

  • Máquina alvo (Target):

    • Servidor OpenSSH 9.1p1 executando em um container Docker
    • Usuário de separação de privilégios sshd configurado
    • Para facilitar a observação do travamento por double free, a construção foi feita com --with-sandbox=no para desabilitar a sandbox seccomp
    • Dentro do container, escuta na porta 22, mapeada para a porta 2222 no host (WSL)
  • Máquina atacante (Attacker):

    • Na mesma máquina/WSL que o alvo
  • Usa Python3 + paramiko para executar o PoC, construindo um identificador de cliente SSH específico e iniciando um handshake de pré-autenticação
  • Estrutura do diretório:

    • Dockerfile: Imagem para construir o ambiente vulnerável OpenSSH 9.1p1
    • poc.py: Cliente PoC mínimo para acionar o double free durante a pré-autenticação

    Pré-requisitos

    Antes de realizar as seguintes operações neste diretório, garanta que:

    • Docker instalado (no WSL2, recomenda-se usar Docker Desktop ou instalar Docker diretamente no WSL)
    • Python 3 e pip instalados

    1. Construção do Alvo (OpenSSH 9.1p1 no Docker)

    1. Construir a imagem

      Execute no diretório atual:

      root@kitploit:~
      docker build -t sshd-9.1p1-vuln .
      
    2. Iniciar o container

      root@kitploit:~
      docker run --rm -d --name sshd-vuln -p 2222:22 sshd-9.1p1-vuln
      

      Explicação:

      • --rm: Remove automaticamente após a saída do container
      • --name sshd-vuln: Nome do container
      • -p 2222:22: Mapeia a porta 22 do container para a porta 2222 do host
    3. Confirmar o status de execução do sshd

      root@kitploit:~
      docker ps
      

      Você deve ver algo como:

      root@kitploit:~
      CONTAINER ID   IMAGE              COMMAND               STATUS          PORTS
      xxxxxx         sshd-9.1p1-vuln    "/usr/sbin/sshd -D…"  Up ...          0.0.0.0:2222->22/tcp
      

    2. Uso do PoC do Atacante

    1. Instalar dependências do PoC

    Execute neste diretório:

    root@kitploit:~
    pip install paramiko
    

    2. Descrição do script PoC (poc.py)

    poc.py usa paramiko.Transport para estabelecer ativamente uma conexão com o servidor SSH alvo e forjar um identificador de cliente durante a pré-autenticação, tentando acionar o double free.

    Características principais:

    • Alvo padrão: 127.0.0.1:2222 (ou seja, o container Docker local)
    • Identificador de cliente padrão: SSH-2.0-PuTTY_Release_0.64
    • Fornece argumentos de linha de comando simples:
      • -t/--target: IP alvo (padrão 127.0.0.1)
      • -p/--port: Porta alvo (padrão 2222)
      • -c/--client-id: Identificador de cliente SSH forjado
      • --timeout: Tempo limite (segundos)
      • -v/--verbose: Exibir informações detalhadas de erro

    3. Executar o PoC

    Garantindo que o container sshd-vuln esteja em execução, execute no diretório atual:

    root@kitploit:~
    python3 poc.py
    

    Ou especifique argumentos explicitamente:

    root@kitploit:~
    python3 poc.py -t 127.0.0.1 -p 2222 -v
    

    Exemplo de saída esperada do cliente:

    root@kitploit:~
    ==============================================
       CVE-2023-25136 OpenSSH Pre-Auth Double Free
                 Minimal PoC Client
    ==============================================
    [2024-xx-xx xx:xx:xx] Target: 127.0.0.1:2222, ClientID: SSH-2.0-PuTTY_Release_0.64
    [+] Sending crafted pre-auth handshake...
    [-] Authentication failed or connection closed early.
        请确认在服务端 sshd 日志中是否出现 'free(): double free detected' 等信息,以确认是否触发 CVE-2023-25136。
    

    Explicação:

    • O cliente reportar Authentication failed ou connection closed é um comportamento esperado, pois o processo filho de pré-autenticação do servidor pode travar ou fechar a conexão ativamente durante o processamento.

    3. Resultados Esperados e Método de Verificação

    1. Logs do servidor (container)

    Após executar o PoC, verifique os logs do container no host:

    root@kitploit:~
    docker logs sshd-vuln
    

    Saída esperada semelhante a:

    root@kitploit:~
    Server listening on 0.0.0.0 port 22.
    Server listening on :: port 22.
    Invalid user  from 172.17.0.1 port xxxxx
    free(): double free detected in tcache 2
    

    Onde:

    • Invalid user: Devido ao PoC usar um nome de usuário vazio, o OpenSSH registrou uma tentativa de usuário inválido
    • free(): double free detected in tcache 2: A glibc detectou um double free e finalizou o processo filho sshd atual. Este é exatamente o fenômeno de corrupção de memória/DoS que este experimento visa observar.

    Nota: Para que esta linha seja visível, desabilitamos a sandbox seccomp durante a construção do OpenSSH (--with-sandbox=no), caso contrário, a sandbox poderia interceptar o comportamento anômalo antes do double free e finalizar o processo filho diretamente.

    2. Natureza do Efeito

    • Neste ambiente experimental, o PoC consegue acionar de forma estável o travamento do processo filho de pré-autenticação (DoS), resultando na falha da conexão SSH atual. O processo principal sshd continuará a criar novos processos filhos para conexões subsequentes.
    • Como o processo filho de pré-autenticação é executado em um ambiente de baixo privilégio + chroot e existem múltiplos mecanismos de segurança por padrão, pesquisadores geralmente consideram que é extremamente difícil obter execução remota de código dependendo apenas deste double free.
    Baixar ferramenta