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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
heartbleed-lab — 자체 포함형 Heartbleed(CVE-2014-0160) 실습 환경: Docker에서 취약한 OpenSSL 1.0.1f를 빌드하고, 승인된 테스트를 위한 Python 메모리 누출 PoC를 포함합니다. | Kitploit
도구/GitHubGitHub/ayushsinha322/heartbleed-lab
Memory ForensicsVulnerability AnalysisExploitationWeb SecurityCryptographyPenetration TestingLearning & EducationLabs & Practice
GitHubayushsinha322/heartbleed-lab

heartbleed-lab

자체 포함형 Heartbleed(CVE-2014-0160) 실습 환경: Docker에서 취약한 OpenSSL 1.0.1f를 빌드하고, 승인된 테스트를 위한 Python 메모리 누출 PoC를 포함합니다.

저장소 보기
10시간 28분 전아직 검토되지 않음

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

heartbleed-lab

CVE-2014-0160 (Heartbleed) — OpenSSL 1.0.1–1.0.1f의 TLS heartbeat over-read 취약점을 위한 작고 자족적인 실습 환경입니다. 일회용 컨테이너 안에서 체크섬으로 고정된 업스트림 소스로부터 실제로 취약한 OpenSSL을 빌드하고, 이를 서비스하며, 살아있는 프로세스 메모리를 유출하는 개념 증명 클라이언트를 포함합니다.

승인된 실습 용도로만 사용하세요. 여기의 모든 것은 localhost 또는 직접 실행하는 컨테이너를 대상으로 합니다. 소유하지 않았거나 명시적인 테스트 허가를 받지 않은 호스트에 PoC를 향하게 하지 마세요 — 실제 시스템에 대한 Heartbleed의 무단 사용은 대부분의 관할권에서 범죄입니다. Heartbleed는 OpenSSL 1.0.1g (2014년 4월)에서 수정되었습니다. 이 실습은 버그를 이해하기 위해 존재하며, 누군가를 공격하기 위한 것이 아닙니다.

구성 요소

경로설명
Dockerfile체크섬으로 고정된 업스트림 소스로부터 heartbeat가 활성화된 OpenSSL 1.0.1f를 빌드하고, 일회용 인증서를 생성한 뒤 openssl s_server를 실행합니다 — 실제 취약한 서버입니다.
exploit/heartbleed.pyPython 3 PoC. 잘못된 heartbeat를 전송하고 서버가 유출한 메모리를 hexdump로 출력합니다. 대상이 취약하면 0, 패치되었으면 1로 종료합니다.
demo/server.py순수 Python으로 작성된 단순한 시뮬레이션 — OpenSSL이 관여하지 않습니다. 64 KB를 무조건 반사할 뿐 실제로는 아무것도 유출하지 않으며, over-read 응답의 형태를 보여주기 위해서만 유지됩니다.
demo/gen-cert.sh데모용 일회용 localhost 인증서를 재생성합니다.

커밋된 개인 키는 없습니다 — 인증서는 로컬에서 생성됩니다 (.gitignore 참조).

실제 환경 실행

root@kitploit:~
# 1. 취약한 서버 빌드 및 시작 (Docker 필요)
docker build -t heartbleed-lab .
docker run --rm -p 8443:8443 heartbleed-lab

# 2. 다른 터미널에서 유출 실행
python3 exploit/heartbleed.py 127.0.0.1 -p 8443

취약한 서버는 유출된 메모리의 hexdump를 출력합니다. PoC를 몇 번 다시 실행해 보세요 — 각 요청은 힙의 서로 다른 조각을 반환합니다. 이것이 바로 Heartbleed가 그토록 위험했던 이유입니다: 세션 쿠키, 폼 데이터, 개인 키 자료가 모두 그곳에 존재합니다.

시뮬레이션 (선택 사항)

root@kitploit:~
cd demo
./gen-cert.sh
python3 server.py

이것은 CVE가 아닙니다 — 항상 64 KB의 A로 응답하는 교육용 스텁입니다.

버그의 동작 원리

TLS heartbeat 요청은 페이로드와 길이 필드를 함께 전달합니다. 취약한 OpenSSL은 공격자가 제공한 길이를 신뢰하고 요청 버퍼로부터 그만큼의 바이트를 응답으로 memcpy합니다 — 하지만 요청에는 그만큼의 데이터가 결코 포함되지 않았으므로, 복사는 그 너머의 인접한 프로세스 메모리로 읽혀 들어갑니다. 1.0.1g의 수정은 경계 검사입니다: if (1 + 2 + payload + 16 > s->s3->rrec.length) return 0; — 실제로 전송된 것보다 더 많은 양을 주장하는 모든 heartbeat를 조용히 버립니다.

완화 조치

  • OpenSSL ≥ 1.0.1g로 업그레이드하거나 -DOPENSSL_NO_HEARTBEATS로 빌드하세요.
  • 노출된 후에는 개인 키가 유출되었다고 가정하세요: 인증서를 재발급하고 이전 인증서를 폐기한 다음, 서버를 거쳐간 모든 세션 토큰이나 자격 증명을 교체하세요.
도구 다운로드