Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

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

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

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
THM-Steel_Mountain-CVE-2014-6287 — TryHackMe.com의 Steel Mountain 머신에 대한 분석 및 CVE-2014-6287 익스플로잇 | Kitploit
도구/GitHubGitHub/wizardy0ga/thm-steel_mountain-cve-2014-6287
Privilege EscalationPayload GenerationVulnerability AnalysisExploitationWeb Application ExploitationPost-ExploitationCTFPenetration TestingLearning & Education

인기

모두 보기 →

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

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
Labs & Practice
Archived
GitHubwizardy0ga/thm-steel_mountain-cve-2014-6287

THM-Steel_Mountain-CVE-2014-6287

TryHackMe.com의 Steel Mountain 머신에 대한 분석 및 CVE-2014-6287 익스플로잇

저장소 보기
174년 전아직 검토되지 않음

THM-Steel_Mountain-CVE-2014-6287

TryHackMe.com의 Steel Mountain 박스에 대한 분석 글 및 CVE-2014-6287 익스플로잇

크레딧

저는 이 취약점의 최초 발견 및 익스플로잇에 대한 공로를 주장하지 않습니다. 다음 분들께 감사드립니다!

발견:
Daniele Linguaglossa

Metasploit 모듈 작성자:
Muhamad Fadzil Ramli

TryHackMe 룸 및 작성자:
https://tryhackme.com/room/steelmountain
https://tryhackme.com/p/tryhackme

참고 자료:
https://nvd.nist.gov/vuln/detail/CVE-2014-6287
https://github.com/rapid7/metasploit-framework/blob/master/modules/exploits/windows/http/rejetto_hfs_exec.rb
https://subscription.packtpub.com/book/networking_and_servers/9781786463166/1/ch01lvl1sec20/vulnerability-analysis-of-hfs-2-3 https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-6287 https://www.tutorialspoint.com/pascal/pascal_functions.htm

무언가 보이면 알려주세요!

저는 결코 노련한 보안 전문가가 아닙니다. 따라서 잘못된 정보를 제공할 수도 있습니다. 만약 당신이 숙련된 전문가/경험 많은 연구자이고 잘못된 내용을 발견한다면, 제가 다시 공부하고 잘못된 점을 바로잡을 수 있도록 알려주시기 바랍니다. 이는 저뿐만 아니라 이 분석 글을 우연히 보게 될 다른 초보 연구자에게도 도움이 됩니다. 제가 쓴 내용 중 잘못된 정보를 발견하면 [email protected]으로 연락해 주십시오. 감사합니다!

취약점

Rejetto 파일 서버(HFS라고도 함)는 네트워크를 통해 파일을 게시하고 공유하는 데 사용되는 파일 공유 프로그램입니다. 버전 2.3에서 CVE-2014-6287에 설명된 대로 공격자가 검색 매개변수에 널 바이트를 입력하여 시스템 명령을 실행할 수 있는 취약점이 있었습니다. 코드가 null-byte를 정규식(Regular Expression) 구성과 함께 제대로 처리하지 못하여 원격 코드 실행 취약점이 발생합니다.

이 취약점은 parserLib.pas 파일에서 시작되는 findMacroMarker 함수에서 찾을 수 있습니다. .pas는 파스칼 코딩 언어의 파일 확장자입니다. 현재 이 글을 쓰는 시점에서 저는 파스칼로 코딩한 적이 없습니다. 코드 조각을 살펴보고 그것이 무엇을 하는지 분석해 보겠습니다!

function findMacroMarker(s:string; ofs:integer=1):integer;
begin result:=reMatch(s, '{[.:]|[.:]}||', 'm!', ofs) end;

첫 번째 코드 줄은 findMacroMarker라는 함수의 선언이며 두 개의 매개변수를 받습니다. 파스칼에서는 매개변수의 데이터 유형을 선언해야 하므로 s:string은 변수 s가 string임을 의미하며, 변수 ofs도 integer 데이터 유형입니다. 매개변수 오른쪽에는 콜론 문자 뒤에 integer가 있습니다. 이것은 함수 유형이라고 합니다. 세미콜론은 해당 코드 줄의 끝을 나타냅니다. 다음 코드 줄의 첫 번째 단어는 begin입니다. 이는 컴파일러에게 함수가 시작되는 위치를 알려줍니다. 계속해서 result라는 변수 뒤에 할당 연산자 :=가 있습니다. result 변수는 reMatch 함수에 할당됩니다. 인터넷에서 reMatch에 대한 정보를 찾을 수 없었기 때문에 HFS의 다른 곳에서 작성된 사용자 정의 함수라고 가정합니다. 운 좋게도 함수는 자명합니다. reMatch는 분명히 정규식 일치(Regular Expression Match)의 약자이며, 그 뒤에 reMatch 함수의 매개변수와 첫 번째 코드 줄에 정의된 초기 변수 매개변수에서 설명되는 regex 패턴이 옵니다. 두 번째 줄의 끝에서 end라는 단어는 컴파일러에게 함수의 끝을 정의하는 데 사용됩니다.

취약점은 위에서 설명한 reMatch 함수의 정규식 패턴에서 발견됩니다. 정규식은 널 바이트 %00을 제대로 처리하지 못합니다. 널 바이트가 앞에 추가된 시스템 명령을 전달하면 함수가 버그를 만나 호스트 컴퓨터에서 명령을 실행합니다. 이 취약점을 악용하려면 GET 요청의 search 매개변수에 널 바이트를 전달하고 그 뒤에 {.exec|code.}(code는 실행하려는 명령)를 URL에 추가하면 됩니다: http://(IP-주소/도메인명)/?search==%00{.exec|명령어입력.}.

분석 글

먼저 rustscan을 사용하여 포트 스캔을 시작하겠습니다. 저는 공격 표면을 빠르게 파악하기 위해 rustscan을 선호합니다.

image

여기에 상당히 많은 열린 포트가 있습니다. 이제 nmap으로 더 깊이 조사하여 어떤 서비스가 이 포트 배열에서 수신 대기 중인지 확인하고 취약한 서비스를 찾을 것입니다.

image

더 높은 포트에서 Microsoft Windows RPC라는 서비스가 실행 중입니다. RPC는 원격 프로시저 호출(Remote Procedure Call)입니다. 이를 통해 Windows 프로세스가 네트워크를 통해 또는 컴퓨터 내부에서 통신할 수 있습니다. 계속해서 포트 80과 8080에서 몇 가지 다른 웹 서버가 실행 중입니다. 포트 5985와 47001에는 Microsoft Httpapi Httpd가 있으며, 이를 통해 Microsoft IIS(Internet Information Server) 없이도 HTTP를 통해 애플리케이션이 통신할 수 있습니다. Nmap은 포트 3389에서 잠재적인 웹 서버를 감지했지만 HTTP 또는 SSL로 연결할 수 없었습니다. HTTP 프로토콜의 표준 포트인 포트 80의 웹 서버에 연결해 보겠습니다.

image

포트 80에서 Steel Mountain 회사 로고와 '이달의 직원'이라고 표시된 사진이 있는 웹페이지가 표시됩니다. 웹 개발자 도구를 열면 사진이 BillHarper.png로 레이블이 지정되어 있어 첫 번째 질문에 대한 답을 알 수 있습니다. 다른 수신 서비스에 연결하여 무엇을 찾을 수 있는지 확인해 보겠습니다.

image

포트 5985의 서비스에 연결하면 HTTP 오류 코드 404가 표시됩니다. 404 오류는 서버가 요청한 리소스를 찾을 수 없음을 의미합니다. 여기에는 흥미로운 것이 없습니다. 다음으로 넘어가겠습니다.

image

네! 이번 것은 흥미로워 보입니다. 포트 8080에는 파일 공유 서비스가 있습니다. 좀 더 살펴보고 이 서비스에 대한 추가 정보를 찾을 수 있는지 봅시다. 왼쪽 하단을 보면 이름과 버전 번호처럼 보이는 HttpFileServer 2.3을 확인할 수 있습니다. 더 열거해 보겠습니다.

image

HttpFileServer 2.3이라고 적힌 링크를 클릭하면 포트 8080에서 실행 중인 소프트웨어의 이름에 대한 웹페이지로 이동합니다. 이 경우 Rejetto HFS HTTP File Server입니다. 다른 포트인 47001도 확인하여 모든 베이스를 커버하겠습니다. 유용한 것을 찾지 못하면 Rejetto로 돌아와 알려진 CVE를 찾기 시작할 수 있습니다.

image

포트 47001에서도 또 다른 404가 발생하는 것 같습니다. Rejetto HFS 2.3에 대한 CVE를 찾기 시작합시다.

image

빠른 검색 결과 HFS 2.3에 대한 알려진 CVE 목록이 있음을 알 수 있습니다. THM 가이드에서 벗어나 사전 설정된 metasploit을 사용하지 않겠습니다. 저는 쉘을 제공하는 익스플로잇을 코딩했습니다. 사용하려면 revshells.com으로 이동하여 올바른 네트워킹 정보를 입력하고 PowerShell #3 (Base 64)를 선택해야 합니다. 페이로드를 받으면 13번째 줄의 payload 변수에 복사하여 붙여넣고 익스플로잇을 실행하세요. 리스너가 자동으로 열리며 시스템에 액세스할 수 있어야 합니다. 참고: 쉘을 잡기 위해 익스플로잇을 여러 번 실행해야 할 수도 있습니다.

image

짜잔! 시스템에 진입했으며 보너스로 PowerShell 쉘을 얻었습니다. 즉, .NET cmdlet에 액세스할 수 있습니다. 표준 명령 프롬프트 쉘보다 훨씬 위험해질 수 있습니다. 이제 권한 상승으로 넘어갑시다. THM 가이드는 잠재적인 권한 상승 벡터를 열거하는 데 유용한 도구인 PowerSploit을 제공합니다. PowerUp.ps1을 시스템에 다운로드하고 이를 사용하여 시스템 제어권을 얻는 데 도움을 받겠습니다.

image

먼저, 우리 시스템에서 PowerUp.ps1 파일이 있는 디렉토리에 간단한 HTTP 서버를 시작합니다. 다음으로 대상 시스템에서 Invoke-Webrequest cmdlet을 사용하여 서버에서 대상 머신으로 파일을 가져옵니다. 이제 PowerUp과 함께 제공되는 cmdlet 중 하나를 설치하고 실행하겠습니다.

image

PowerUp.ps1을 설치하려면 다음 명령을 실행하세요: . .\PowerUp.ps1. 다음으로 새로운 cmdlet Invoke-AllChecks를 사용해야 합니다. 실행하면 많은 출력이 표시됩니다. 중요한 부분만 잘라냈습니다. PowerUp이 파일을 수정할 수 있는 권한이 있다고 알려줍니다. 실행 중인 서비스를 확인하여 실행 중이면 중지해야 합니다. 서비스가 파일을 사용 중이면 파일을 건드릴 수 없기 때문입니다.

image

Get-Service cmdlet을 사용하여 머신에 있는 서비스 목록을 확인합니다. 대상 서비스가 실행 중이므로 바이너리를 수정하고 덮어쓰기 위해 중지해야 합니다.

image

서비스를 중지하려면 Stop-Service cmdlet 다음에 서비스 이름을 입력합니다. 이제 Get-Service cmdlet으로 서비스가 중지되었는지 다시 확인해야 합니다. 위와 같이 서비스가 실제로 중지되었음을 확인할 수 있습니다. 대상 바이너리가 있는 디렉토리로 이동합니다. 디렉토리는 C:\Program Files (x86)\IObit\Advanced SystemCare입니다.

image

바이너리의 파일 크기(가장 오른쪽 열의 바이너리 이름 왼쪽에 있음)를 확인하세요.

image

meterpreter 페이로드를 만들고 이전과 같이 python 웹 서버 모듈로 호스팅하세요.

image

페이로드를 만드는 데 사용한 것과 동일한 네트워킹 정보를 사용하여 meterpreter 리스너를 시작하세요.

image

Invoke-Webrequest cmdlet을 사용하여 우리 머신에서 대상 시스템으로 meterpreter 페이로드를 가져오세요. 파일 이름을 ASCService.exe로 지정해야 약한 파일 권한을 악용하여 정상 바이너리를 악성 바이너리로 덮어쓸 수 있습니다.

image

도구 다운로드