
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 |