
CVE-2025-14847 (MongoBleed)에 대한 Go 언어 개념 증명 익스플로잇입니다. 이는 MongoDB 메모리 노출 취약점으로, 변조된 BSON 문서를 생성하여 오류 메시지를 통해 초기화되지 않은 서버 메모리를 유출합니다.
이 저장소는 MongoDB 메모리 노출 취약점인 CVE-2025-14847 (일반적으로 Mongobleed라고 함)에 대한 Go 개념 증명 익스플로잇을 포함합니다.
이 PoC는 Joe Desimone의 원본 Python 익스플로잇을 Go로 재구현한 것이며, 다음에서 확인할 수 있습니다: https://github.com/joe-desimone/mongobleed
이 익스플로잇은 zlib 압축 해제 및 BSON 파싱 결함을 악용하여 취약한 MongoDB 서버에서 초기화되지 않은 메모리를 유출합니다.
블로그 게시물 읽기 - https://saereya.github.io/posts/mongobleed-cve-2025-14847/
CVE-2025-14847은 MongoDB에서 압축된 OP_MSG 메시지를 부적절하게 처리하여 발생합니다. 부풀려진 문서 길이를 가진 변조된 BSON 문서를 생성하고 이를 OP_COMPRESSED 메시지로 감싸면, 서버가 압축 해제된 버퍼의 경계를 넘어 읽을 수 있습니다.
이로 인해 MongoDB는 남은 메모리를 BSON 필드 이름으로 해석할 수 있으며, 이후 오류 메시지에 그대로 반영됩니다. 이 과정을 다양한 오프셋에서 반복하면 서버 메모리 조각을 유출할 수 있습니다.
이 PoC는:
OP_COMPRESSED MongoDB 와이어 프로토콜 메시지로 래핑합니다유출된 데이터는 다음과 같은 오류 문자열에서 추출됩니다:
field name '...'type <n>이 취약점은 공식 패치 이전의 특정 MongoDB 버전에 영향을 미칩니다. 정확한 버전 범위는 MongoDB 보안 권고를 참조하십시오.
빌드:
go build -o mongobleed
실행:
./mongobleed --host <target> --port 27017
선택적 플래그: --min-offset: 시작 BSON 문서 길이 (기본값: 20) --max-offset: 종료 BSON 문서 길이 (기본값: 8192)
[*] MongoBleed - CVE-2025-14847
[*] Targetting localhost:27017
[*] Offset: 20 -> 8192
[+] offset= 117 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 119 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 120 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
[+] offset= 121 len= 51: ssions^\u0001f\bD\\��A6�;7\u0003��V%\u0019\u001a9ip
이 코드는 교육 및 연구 목적으로만 제공됩니다.
소유하지 않거나 명시적 테스트 허가를 받지 않은 시스템에 대해 이 도구를 실행하지 마십시오. 무단 사용은 불법적이고 비윤리적일 수 있습니다.