Hack The Box/Lab

Markup

YujinSec 2026. 4. 12. 18:57

 

1. 기본 개념

1) xml

: 문서를 인코딩하기 위한 규칙 집합

 

엔티티: 데이터 저장 단위

xml 엔티티: 데이터를 표현하는 방법. 

외부 엔티티: 외부 일반/매개변수 파싱 엔티티

 

https://portswigger.net/web-security/xxe/xml-entities

 

Web Application Security, Testing, & Scanning - PortSwigger

PortSwigger offers tools for web application security, testing, & scanning. Choose from a range of security tools, & identify the very latest vulnerabilities.

portswigger.net

 

xml 1.0: xml 언어에 대한 공식 규칙서. 

ex) 

<?xml version="1.0"?>

<user>
    <name>yujin</name>
</user>

//맨 위 1.0이 바로 xml 1.0 규칙을 따른다는 뜻임.

 

 

2) xxe 외부 엔티티 공격

: xml 입력을 파싱하는 어플리케이션을 대상으로 하는 공격 유형. 

- 웹 어플리케이션을 공격하는 가장 일반적인 방법

 

3) BurpSuite

: 웹 요청을 중간에서 가로채는 도구. 

 

2. 문제 풀이

nmap 으로 확인해줌. 

아이디-비번 조합은 일단 잘 나오는 조합으로 몇 개 해보면 된다. 

admin, Administrator 등,,

위 ip를 htb내에서 들어가보면, 다양한 페이지가 존재함. 그 중 order에는 고객 주소같은 정보도 입력할 수 있음. 

뭐든 페이지에 들어가면, 입력을 줄 수 있는 페이지를 찾아야 한다. 

BurpSuite 툴을 활용해, POST인 부분을 리피터로 전송 후 확인해보면 됨. 일단 order페이지에 입력값을 넣어 submit까지 해야 함. 

여기 아래에 xml버전도 보임. 

 

이제 xxe 취약점이 있는지, 치팅 시트를 활용해 확인 해 볼 수 있다. 

https://hacktricks.wiki/en/pentesting-web/xxe-xee-xml-external-entity.html

 

XXE - XEE - XML External Entity - HackTricks

Learn & practice AWS Hacking: HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)...

hacktricks.wiki

아래 코드에서 치팅시트에 나온대로 수정 후, send 클릭 ㄱ. 

응답이 뜬다.

이게 win.int 파일 내용이 응답에 그대로 노출됨을 확인할 수 있다. 

 

일단 윈도우에서 기본적으로 확인 가능한 /etc/passwd로 종종 확인해보고 진행하지만, 이번 경우에는 지금 타겟이 윈도우를 쓴다 알았으니, win.ini 파일을 읽어볼거임. 

file:///c:/windows/win.ini란? 윈도우의 아주 오래된 설정 파일 중 하나. 

> 권한 문제도 적고 거의 모든 윈도우에 존재해서 이거 테스트 용으로 읽는 거임.

 

일단 테스트 해보니, xxe 취약점 존재한다는 건 찾음. 

다시 페이지로 돌아와서, view page source code 클릭. 이름 보임. 

xxe 취약점 활용해 daniel이 가지는 해시값 키도 얻을 수 있었음. 

c:/user/daniel/.ssh/id_rsa

해시값은 따로 파일로 저장후, chmod 400으로 권한도 줄이고 사용하면 됨. 비번 입력은 내 해시파일로 ok. 

위 정보를 가지고 접속해주면 됨. 

이제 daniel 권한으로 얻을 수 있는 플래그는 획득!

이제 디렉터리를 돌아다니며 수상한 파일을 찾아보자. 

job.bat이 수상해보임,,

type: 파일 내용 출력

> 보면 clear같은 기능이 보이고, wevtutil같은 툴이 보이는 걸로 보아 로그 관리하는 것 같음. 

 

우리가 이 파일 보고 얻을정보는?

1. 관리자 권한으로 실행 됨

2. 로그 관리 함. 

 

wevtutil.exe: 윈도우에 존재하는 기본 실행 파일. 

> 이벤트 로그 조회 

> 로그 목록 확인, 로그 삭제, 로그 export를 수행,,

여기서 이제 저 job.bat의 기능은 안 중요하고, 저 권한만 활용하면 될 것 같다. 

 

우선 프로세스가 진짜 실행되고 있나 확인해주는데,,, 이상하게 나는 안 뜸 

일단 라업에는 되었다 했으니, 나도 그냥 됐다 가정하고 해봄. 

 

이제 우리가 할건?

cmd를 관리자 권한으로 따야함. 

그걸 우리 pc에 전달해주려면 상태 pc에서 냇캣이 필요함(방향이 로컬 포트 포워딩 처럼 우리 pc -> 서버가 아니라, 서버 -> 우리 pc로 전달이니까,,)

고로 다음 과정을 따르자. 

 

1. 일단 내 pc에 냇캣 프로그램 다운로드

2. 해당 디렉터리를 서버로 켜주기. 

3. 타겟 pc에서 wget으로 내 pc의 프로그램 다운 요청. 

4. 내 pc상 연결받을 포트 열기

5. 타켓에서 cmd 실행 프로그램 내 pc로 보내주면 끝!

> 근데 이걸 루트 권한으로 보내주니, 이 때 job,bat을 활용할 거!

 

내 pc에서 서버 켜주고 해야함. nc도 리스닝 해주기. 

 

다음은 job.bat 수정하기. 이때 ps가 아닌, 다시 cmd치고 cmd로 돌아와서 칠 것 주의. 

job.bat 기능은 안 중요하니, cmd창 실행시켜주라고 내용 덮어 쓸거임. 

이 파일이 관리자 권한 실행이 가능하므로 이걸 활용해주는 거다. 

 

이렇게 하면 리스닝 하는 곳으로 돌아왔을 때, 관리자 권한으로 잘 접속된 걸 확인 가능함!

플래그 경로야 다 똑같은 것 같으니 그냥 아래 명령어로 바로 획득 가능함!

 

+질문

왜 ps해서 나오는 목록에 난 안 뜨지..?

'Hack The Box > Lab' 카테고리의 다른 글

Sequel - dbms: mysql  (0) 2026.04.29
Appointment - sql injection  (0) 2026.04.29
Archetype  (1) 2026.04.12
Synced - rsync(ftp의 암호화)  (0) 2026.03.28
Mongod - db: mongoDB & mongosh  (0) 2026.03.28