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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
mongobleed — CVE-2025-14847 설명 및 실습 | Kitploit
도구/GitHubGitHub/adolfbharath/mongobleed
Vulnerability AnalysisNetwork SecurityCryptographyLearning & EducationDatabase SecurityLabs & Practice
GitHubadolfbharath/mongobleed

mongobleed

CVE-2025-14847 설명 및 실습

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

MongoDB 압축 누출 연구소 (안전한, 교육용)

참조 CVE : CVE-2025-14847

이 저장소는 데이터베이스 와이어 프로토콜에서 흔히 "압축 프레이밍 / 크기 메타데이터 메모리 노출"로 설명되는 문제 유형의 개념을 보여주는 교육용 연구소입니다.

이는 방어적 이해를 돕기 위해 작성되었습니다: MongoDB 네트워크 압축이 어떻게 협상되고 프레이밍되는지, 크기 필드가 왜 중요한지, 그리고 강력한 파서가 의도치 않은 메모리 노출을 어떻게 방지하는지.

CVE 참조에 대한 참고 사항: 이 연구소는 CVE-2025-14847로 언급된 개념을 중심으로 구성되었습니다. 이 저장소는 특정 벤더의 버그를 검증, 재현 또는 악용하지 않으며, 특정 MongoDB 버전이 영향을 받는다고 주장하지 않습니다. 이는 일반적인 실패 모드(압축된 페이로드 주변의 불일치하는 크기 메타데이터)와 완화 방법에 초점을 맞춥니다.

버전 상태 (취약 vs 패치됨)

이 저장소는 특정 CVE에 대해 어떤 MongoDB 버전이 취약하거나 패치되었는지에 대한 증거를 포함하지 않습니다 (그리고 그렇게 사용되어서는 안 됩니다).

보고서에 "취약" 및 "패치됨" 버전을 올바르게 문서화하려면 해당 CVE에 대한 공식 벤더 권고 / 릴리스 노트를 사용하고 인용하세요.

실행 중인 항목을 확인하기 위한 실용적인 단계:

  • Docker 컨테이너 버전:
    • docker compose exec mongodb mongod --version
    • 또는 docker compose exec mongodb mongosh --quiet --eval "db.version()"
  • 호스트 설치 버전:
    • mongod --version
    • mongosh --quiet --eval "db.version()"

사용 중인 권고 링크를 공유하시면, 추측 없이 README에 깔끔한 "영향을 받는 / 수정된" 테이블을 구성해 드릴 수 있습니다.

취약점의 개념 (개념적으로)

도구 다운로드

이 연구소는 압축 프레이밍 / 크기 메타데이터 불일치 실패 모드를 보여줍니다:

  • MongoDB 메시지는 길이 접두사가 붙습니다. 네트워크 압축의 경우 OP_COMPRESSED 봉투에 추가 크기 필드(외부 메시지 길이, 선언된 압축되지 않은 크기, 내부 메시지 자체 길이)가 추가됩니다.
  • 구현이 엄격한 검증 없이 이러한 크기 필드를 신뢰하면, 압축 해제 또는 파싱 중에 버퍼를 잘못 처리할 수 있습니다.
  • 버그가 있는 구현에서는 이로 인해 범위를 벗어난 읽기 또는 초기화되지 않은 버퍼 바이트 반환이 발생할 수 있으며, 이는 "메모리 노출"이 발생할 수 있는 한 가지 방법입니다.

자세한 프레이밍 설명은 protocol_overview.md를 참조하세요.

윤리적 고지

  • 이 프로젝트는 의도적으로 악용 불가능합니다.
  • 무기화된 로직, 익스플로잇 코드, 또는 시스템을 손상시키기 위한 기술을 포함하지 않습니다.
  • 여기에 제공된 로컬 Docker 컨테이너에 대해서만 실행해야 합니다.
  • 소유하지 않거나 명시적 테스트 권한이 없는 시스템에 이 코드를 사용하지 마십시오.

학습 목표

연구소를 마치면 다음을 할 수 있어야 합니다:

  • MongoDB의 와이어 프로토콜 프레이밍이 높은 수준에서 어떻게 작동하는지 설명합니다.
  • zlib 네트워크 압축이 어떻게 협상되고 적용되는지 설명합니다.
  • 잘못된 길이/크기 메타데이터가 버그가 있는 구현에서 개념적으로 메모리 노출로 이어질 수 있는 방법을 이해합니다.
  • 실용적인 완화 방법(패치, 구성 강화, 네트워크 탐지)을 식별합니다.

이 저장소가 하는 일 (그리고 하지 않는 일)

하는 일:

  • zlib 압축이 활성화된 Docker에서 MongoDB를 시작합니다.
  • 작고 독창적인 Python 클라이언트를 사용하여:
    • compression: ["zlib"]를 포함한 압축되지 않은 hello 전송
    • zlib를 사용한 올바르게 프레이밍된 OP_COMPRESSED 메시지 전송
    • 압축되지 않은 크기 vs 압축된 크기 및 서버 응답 요약 로깅
  • 방어적 파서가 불일치하는 크기 메타데이터를 거부하는 방법을 보여주는 로컬 "장난감 파서" 데모 포함

하지 않는 일:

  • 실제 악용을 위한 악성 패킷 제작
  • 인증 우회 시도
  • 임의 메모리 읽기 시도

저장소 내용

  • docker-compose.yml – zlib 압축이 활성화되고 로컬 호스트 전용으로 노출된 MongoDB 컨테이너를 실행합니다.
  • protocol_overview.md – 와이어 프로토콜 + BSON + 압축 워크플로 + 개념적 취약점 설명.
  • mitigation.md – 방어 지침: 패치, 구성 및 탐지 아이디어.
  • lab_probe.py – 압축을 협상하고 메시지 크기를 안전하게 기록하는 독창적인 프로브.

연구소를 안전하게 실행하는 방법

1) 사전 요구 사항

  • Docker Desktop (또는 호환 가능한 Docker 엔진)
  • Python 3.10+ (권장)

2) MongoDB 시작

이 저장소 디렉토리에서:

root@kitploit:~
docker compose up -d

실행 중인지 확인:

root@kitploit:~
docker compose ps

3) 프로브 실행

root@kitploit:~
python .\lab_probe.py

예상 출력:

  • 첫 번째 hello에서 협상된 압축기 출력
  • 요청/응답 크기 출력
  • 압축된 hello 전송 및 압축된 메시지 크기와 압축 해제된 메시지 크기 모두 로깅

4) 장난감 데모 실행 (네트워크 없음)

root@kitploit:~
python .\lab_probe.py --toy-demo

이는 로컬 파싱 검사만 실행하여 크기 검증이 중요한 이유를 보여줍니다.

5) 종료

root@kitploit:~
docker compose down

안전 참고 사항

  • 컨테이너는 호스트에서 127.0.0.1:27017에 바인딩됩니다.
  • 익스플로잇 동작이 없습니다.
  • 프로브는 보수적인 제한(예: 최대 메시지 크기)을 적용하고 모든 길이 필드를 검증합니다.