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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
MongoBleed-exploit — MongoBleed(CVE-2025-14847) 실습 및 PoC: MongoDB의 심각한 인증되지 않은 메모리 누수를 재현하기 위한 완전한 교육 환경입니다. 다중 데이터베이스 시딩(PII, API 키)이 포함된 취약한 Docker 컨테이너와 데이터 추출을 시연하는 Python 익스플로잇이 포함되어 있습니다. 보안 연구 및 인식에 이상적입니다. 1-day 분석. | Kitploit
도구/GitHubGitHub/eljoamy/mongobleed-exploit
Memory ForensicsVulnerability AnalysisExploitationCTFPenetration TestingLearning & EducationDatabase SecurityLabs & Practice
GitHubeljoamy/mongobleed-exploit

MongoBleed-exploit

MongoBleed(CVE-2025-14847) 실습 및 PoC: MongoDB의 심각한 인증되지 않은 메모리 누수를 재현하기 위한 완전한 교육 환경입니다. 다중 데이터베이스 시딩(PII, API 키)이 포함된 취약한 Docker 컨테이너와 데이터 추출을 시연하는 Python 익스플로잇이 포함되어 있습니다. 보안 연구 및 인식에 이상적입니다. 1-day 분석.

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

CVE-2025-14847: MongoBleed 실험실

Python      MongoDB      Docker

목차

  1. 소개
  2. 취약점 세부사항
    • 작동 원리
  3. 영향
  4. 실험실 아키텍처
  5. 사전 요구사항
  6. 설치 및 사용법
    • 1. 환경 시작
    • 2. 의존성 설치
    • 3. 실험실 설정 확인 (선택 사항)
    • 4. 익스플로잇 실행
  7. 익스플로잇 워크스루
  8. 해결 방법
  9. 라이선스
  10. 면책 조항
  11. 참고 자료
  12. 저자

소개

이 실험실은 MongoDB의 심각한 취약점인 MongoBleed(CVE-2025-14847)를 재현하고 분석하기 위해 설계되었습니다. 이 결함은 압축된 메시지를 부적절하게 처리하여 인증되지 않은 공격자가 서버 메모리에서 민감한 데이터를 읽을 수 있도록 합니다.

환경에는 취약한 MongoDB 인스턴스가 포함되어 있으며, 누출의 심각성을 입증하기 위해 더미 민감 데이터(PII, API 키, 금융 기록)가 채워져 있습니다.

취약점 세부사항

CVE ID: CVE-2025-14847
이름: MongoBleed
구성 요소: Wire Protocol (OP_COMPRESSED)
취약한 버전: MongoDB 6.0.x < 6.0.27, 7.0.x < 7.0.28, 8.0.x < 8.0.17 (및 기타) URL: 클릭하세요 -> NVD CVE-2025-14847

작동 원리

취약점은 MongoDB가 zlib 압축 알고리즘을 사용하여 OP_COMPRESSED 메시지를 처리하는 방식에 있습니다.

  1. 크기 불일치: 공격자는 압축된 메시지를 보내는데, 헤더의 uncompressed_size 필드를 실제 압축 해제된 데이터 크기보다 훨씬 큰 값으로 의도적으로 설정합니다.
  2. 메모리 할당: 서버는 이 부풀려진 uncompressed_size를 기준으로 메모리 버퍼를 할당합니다.
  3. 부분 쓰기: zlib 압축 해제기는 실제 (작은) 페이로드를 이 버퍼의 시작 부분에 씁니다. 버퍼의 나머지 부분은 초기화되지 않은 상태로 남아 이전 작업의 잔여 데이터(RAM 아티팩트)를 포함합니다.
  4. 누출: 서버가 이 버퍼를 BSON 문서로 구문 분석하려고 할 때, 유효한 데이터를 넘어 초기화되지 않은 메모리를 읽습니다. 파서가 오류를 만나면(가능성이 높음), 오류 메시지에 "잘못된" 데이터를 클라이언트에 반환할 수 있습니다.

영향

  • 인증되지 않은 접근: 공격에 유효한 자격 증명이 필요하지 않습니다.
  • 정보 공개: 공격자는 MongoDB 프로세스 메모리에 있는 모든 것을 추출할 수 있습니다. 여기에는 다음이 포함됩니다:
    • 인증 자격 증명(일반 텍스트 비밀번호 또는 해시).
    • 다른 데이터베이스/컬렉션의 데이터.
    • 서버 구성 및 환경 변수.
    • 활성 세션 토큰.

실험실 아키텍처

실험실은 다음으로 구성됩니다:

  • 취약한 서비스: MongoDB 6.0.10 (Docker 컨테이너).
  • 인증: 활성화됨 (admin / secretpassword).
  • 데이터 시딩: 실제 클라우드 인프라 SaaS 환경을 시뮬레이션하기 위해 3개의 별도 데이터베이스를 채우는 초기화 스크립트 (init-mongo.js):
    • dbmongotesting: 핵심 인프라 데이터.
      • compute_instances: 민감한 메타데이터 (사용자 데이터 스크립트, API 키).
      • deployment_secrets: 고가치 대상 (K8s 토큰, CI/CD 키, Slack 웹훅).
    • identity_provider: 사용자 ID 관리.
      • users: 사용자 자격 증명, 비밀번호 해시(Argon2), MFA 백업 코드(일반 텍스트로 유출됨).
    • system_audit: 로그 및 모니터링.
      • query_logs: 과거 쿼리를 포함하며, 일부는 유출된 자격 증명(예: AWS 키)을 포함합니다.
  • 익스플로잇: 역공학된 프로토콜 공격을 구현하는 Python 스크립트 (exploit.py).

사전 요구사항

  • Docker
  • Docker Compose
  • Python 3

설치 및 사용법

1. 환경 시작

취약한 컨테이너를 실행합니다. 그러면 자동으로 데이터베이스가 생성되고 데이터가 채워집니다.

root@kitploit:~
docker-compose up -d

데이터베이스 초기화 및 데이터 로딩을 위해 약 10-15초 기다리십시오.

참고: 이전에 이 실험실을 실행한 경우, 최신 데이터 구조를 로드하기 위해 볼륨을 재설정했는지 확인하십시오:

root@kitploit:~
docker-compose down -v
docker-compose up -d

2. 의존성 설치

레거시 requirements.txt 또는 최신 pyproject.toml을 사용하여 pip로 필요한 의존성을 설치할 수 있습니다.

옵션 A: requirements.txt 사용 (표준)

root@kitploit:~
pip install -r requirements.txt

옵션 B: pyproject.toml 사용 (최신) 이 방법은 현재 환경에 프로젝트와 의존성을 설치합니다.

root@kitploit:~
pip install .

3. 실험실 설정 확인 (선택 사항)

데이터베이스에 접근 가능하고 데이터가 올바르게 시딩되었는지 확인하는 검증 스크립트를 제공했습니다.

root@kitploit:~
python verify_lab.py

이 스크립트는 관리자 자격 증명을 사용하여 sensitive_db, legacy_crm 등의 데이터베이스 존재 여부를 확인합니다.

4. 익스플로잇 실행

Python 스크립트를 실행하여 서버를 공격합니다. 이 단계에서는 자격 증명이 필요하지 않으며, 취약점의 인증되지 않은 특성을 보여줍니다.

root@kitploit:~
python exploit.py --host localhost --port 27017 --min 100 --max 5000

익스플로잇 워크스루

스크립트는 다음 단계를 수행합니다:

  1. 악의적인 BSON 페이로드를 구성합니다.
  2. 이를 압축하고 가짜로 부풀려진 크기를 가진 OP_COMPRESSED 헤더로 래핑합니다.
  3. 대상 서버로 전송합니다.
  4. 오류 응답을 수신합니다.
  5. 서버 응답에서 발견된 읽을 수 있는 텍스트(메모리 누출에서 비롯됨)를 출력합니다.

예상 출력: 다양한 오프셋에서 누출이 발견되었음을 나타내는 출력과 감지된 비밀의 요약이 표시되어야 합니다.

root@kitploit:~
[*] MongoBleed Exploit (Custom Implementation)
[*] Target: localhost:27017
[*] Scanning memory offsets 100 to 5000...
[+] Offset 120  | ... dbmongotesting ... compute_instances ...
[+] Offset 145  | ... field name 'AKIAIOSFODNN7EXAMPLE' is not valid ... [!] FOUND AKIA
[+] Offset 210  | ... "token": "eyJhbGciOiJSUzI1NiIsImtpZCI6Ik16UTBOVFZ... [!] FOUND token

[*] Scan completed in 12.45s
[*] Total bytes leaked: 4502
[*] Unique fragments: 156

[*] Secrets Summary:
[!] Found pattern: AKIA
[!] Found pattern: token
[!] Found pattern: password

해결 방법

프로덕션 환경에서 이 취약점을 수정하려면:

  1. 업그레이드: MongoDB를 패치된 버전(예: 6.0.27+, 7.0.28+, 8.0.17+)으로 업데이트하십시오.
  2. 네트워크 제한: MongoDB 포트(27017)가 공용 인터넷에 노출되지 않도록 하십시오.

라이선스

이 프로젝트는 MIT 라이선스에 따라 라이선스가 부여됩니다. 자세한 내용은 LICENSE 파일을 참조하십시오.

면책 조항

이 자료는 교육 및 연구 목적으로만 제공됩니다. 소유하지 않거나 명시적 테스트 허가를 받지 않은 시스템에서 이 익스플로잇을 사용하지 마십시오. 저자는 이 정보나 도구의 오용에 대해 책임을 지지 않습니다.

참고 자료

  • 노출된 MongoDB 인스턴스를 Mongobleed로 악용하기: 로컬 실험실 워크스루
  • CVE-2025-1623

저자

ElJoamy
Joseph Meneses (ElJoamy)

백엔드 및 AI 개발자 · 사이버보안 엔지니어 · DBA · 침투 테스터

도구 다운로드