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

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

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

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

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
CVE-2018-18912 — Easy File Sharing Web Server 7.2에서 인증된 HTTP POST 매개변수가 예외 처리기 체인을 손상시킬 수 있음을 보여주는 SEH 기반 버퍼 오버플로우 | Kitploit
도구/GitHubGitHub/themalwareguardian/cve-2018-18912
Vulnerability AnalysisExploitationReverse EngineeringShellcodeWeb Application ExploitationDebuggersLearning & EducationPayload DevelopmentBinary Exploitation
GitHubthemalwareguardian/cve-2018-18912

CVE-2018-18912

Easy File Sharing Web Server 7.2에서 인증된 HTTP POST 매개변수가 예외 처리기 체인을 손상시킬 수 있음을 보여주는 SEH 기반 버퍼 오버플로우

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

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유

🐞 CVE-2018-18912: Easy File Sharing Web Server 7.2 - 스택 기반 버퍼 오버플로우 (SEH)

Easy File Sharing Web Server 7.2에서 SEH 기반 버퍼 오버플로우를 보여줍니다. 인증된 HTTP POST 매개변수가 예외 처리기 체인을 손상시킬 수 있음을 시연합니다.




📑 목차

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



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

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

CVE-2018-18912는 기본적인 EIP 덮어쓰기에서 SEH 기반 익스플로잇으로 넘어가는 전환점으로 사용하는 사례입니다. 학생들이 직접 반환 주소 덮어쓰기를 이해한 다음, 스택이 너무 손상되어 반환되기 전에 예외가 발생할 때 어떤 일이 일어나는지, 그리고 그 예외 처리기 체인이 어떻게 공격 표면이 되는지 이해하는 것이 다음 단계입니다. 이 CVE는 그 전환을 깔끔하게 보여줍니다: 오버플로우가 SEH 체인에 도달할 만큼 깊고, 익스플로잇 경로는 모든 익스플로잇 개발자가 이해해야 하는 고전적인 POP POP RETN 기법을 따릅니다. DEP 우회(ROP 사용)는 더 나아가고자 하는 학생을 위한 확장 과제로 남겨둡니다 — 동일한 오버플로우, 다른 가젯 전략, 훨씬 어려운 문제입니다.




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

이 취약점은 간단한 파일 공유를 위해 널리 사용된 가벼운 Windows 웹 서버 애플리케이션인 Easy File Sharing Web Server 7.2에 영향을 미칩니다. 이 소프트웨어는 현대적인 보안 완화 조치를 고려하지 않고 작성되었습니다. 교육적 관점에서 이 사례가 특히 흥미로운 점은 관련된 여러 요소들의 조합 때문입니다:

  • 인증이 필요하지만 기본 수준에 불과합니다. 이는 공격자가 자격 증명을 획득한 시나리오를 모델링하며, 실제 포스트-익스플로잇 상황에서 흔합니다.
  • 오버플로우는 SEH 기반입니다. 크래시가 반환 주소를 직접 덮어쓰지 않습니다. 대신 스택의 구조적 예외 처리기(SEH) 체인을 손상시켜 다른 익스플로잇 기법이 필요합니다.
  • 취약한 엔드포인트는 POST 요청입니다. 표준 HTTP 도구로 쉽게 재현할 수 있으며 웹 애플리케이션을 다뤄본 사람에게 친숙합니다.
  • DEP 우회는 선택 사항입니다. DEP가 비활성화된 시스템에서는 직접 SEH + 짧은 점프 + 셸코드 접근 방식으로 작동합니다. DEP가 활성화된 경우, ImageLoad.dll의 가젯을 사용하여 ROP 체인을 추가해 셸코드로 제어를 넘기기 전에 VirtualProtect를 호출할 수 있습니다.

이러한 조합은 CVE-2018-18912를 기본을 넘어선 익스플로잇 개발 기법을 가르치는 훌륭한 사례로 만듭니다.




🔍 맥락 및 영향받는 소프트웨어

Easy File Sharing Web Server 7.2는 사용자가 HTTP를 통해 파일을 공유할 수 있게 해주는 Windows 애플리케이션입니다. 파일 탐색, 사용자 인증, 내장 포럼 시스템 등의 기능을 포함합니다.

포럼 기능은 새 주제를 생성하기 위해 POST 요청을 받습니다. 이 엔드포인트에서 처리하는 양식 필드 중 하나는 author 매개변수입니다. 내부적으로 애플리케이션은 이 사용자 제어 값을 길이를 검증하지 않고 고정 크기 스택 버퍼로 복사합니다.

이 취약점은 2018년에 발견되어 보고되었습니다. 원본 PoC는 곧바로 게시되어 크래시뿐만 아니라 번들된 ImageLoad.dll 모듈의 ROP 가젯을 포함한 작동하는 익스플로잇 체인도 시연했습니다.

주요 기술 세부 사항:

  • 취약점 유형: 스택 기반 버퍼 오버플로우 (SEH)
  • 영향받는 버전: Easy File Sharing Web Server 7.2
  • 영향받는 엔드포인트: POST /forum.ghp
  • 취약한 매개변수: author
  • 영향: 원격 코드 실행



⚠️ 취약점 정보

Easy File Sharing Web Server는 사용자가 새 포럼 주제를 생성할 때 /forum.ghp로 향하는 HTTP POST 요청을 처리합니다. 허용되는 매개변수 중 하나는 author이며, 이 값은 길이 검사 없이 로컬 스택 버퍼로 복사됩니다.

바이너리를 리버스할 때 이 양식 필드의 핸들러가 고정 크기 버퍼와 안전하지 않은 복사 작업을 사용함을 관찰할 수 있습니다. 취약한 로직의 단순화된 버전은 다음과 같습니다:

root@kitploit:~
char author_buffer[64];

strcpy(author_buffer, user_input);

대상 버퍼가 고정 크기이고 입력 길이가 검증되지 않으므로, author 필드에 충분히 긴 문자열을 보내면 복사가 버퍼 끝을 넘어 쓰게 됩니다.

더 많은 데이터가 기록됨에 따라 스택 레이아웃이 손상됩니다. 단순한 반환 주소 덮어쓰기와 달리 오버플로우는 스택에 저장된 구조적 예외 처리기(SEH) 체인에 도달합니다. 손상된 스택의 결과로 예외가 발생하면 OS는 SEH 체인을 탐색하여 공격자가 제어하는 핸들러 주소로 제어를 전달합니다.

따라서 익스플로잇 흐름은 SEH 덮어쓰기 기법을 따릅니다:

  1. 긴 입력이 스택을 덮어쓰며 nSEH 및 SEH 핸들러 포인터를 포함합니다.
  2. 메모리 손상으로 인해 예외가 발생합니다.
  3. OS가 덮어쓰여진 핸들러 주소를 호출합니다.
  4. POP POP RETN 가젯을 사용하여 nSEH 영역으로 실행을 전달합니다.
  5. 짧은 점프가 SEH 레코드를 건너뛰고 셸코드 영역으로 실행을 리디렉션합니다.
  6. 셸코드가 실행됩니다.

이로 인해 이 취약점은 기본적인 EIP 덮어쓰기보다 익스플로잇하기 더 복잡하지만, 실제 세계 시나리오를 더 잘 대표합니다.




💥 크래시 유발

크래시는 유효한 자격 증명으로 인증한 후 POST 요청의 author 매개변수에 긴 문자열을 /forum.ghp로 전송하여 재현할 수 있습니다. Python 예시:

root@kitploit:~
import socket

HOST = '127.0.0.1'
PORT = 80

payload = b"A" * 500

request = (
	b"POST /forum.ghp?forumid=1 HTTP/1.1\r\n"
	b"Host: 127.0.0.1\r\n"
	b"Content-Type: application/x-www-form-urlencoded\r\n"
	b"Cookie: UserID=test; PassWD=test; SESSIONID=1234\r\n"
	b"Connection: close\r\n"
	b"\r\n"
	b"author=" + payload + b"&passwd=test&title=test&content=test&Submit=Submit\r\n"
)

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

디버거에서 실행하면 크래시 시 SEH 체인이 손상되고 액세스 위반이 발생하여 사용자 제어 데이터가 예외 처리기 포인터를 덮어썼음을 확인할 수 있습니다.




💣 익스플로잇

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

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

거기에서 이 CVE를 익스플로잇하는 데 사용된 전체 워크플로우를 찾을 수 있습니다. 여기에는 다음이 포함됩니다:

  • author 매개변수 퍼징을 통한 크래시 식별.
  • 스택에서 nSEH 및 SEH의 정확한 위치를 찾기 위한 오프셋 발견.
  • 페이로드를 손상시키는 바이트를 식별하기 위한 불량 문자 분석.
  • 로드된 모듈의 POP POP RETN 가젯을 사용한 SEH 체인 덮어쓰기.
  • 셸코드 배치 및 실행.
도구 다운로드