[심화스터디] XXE Injection 문제 풀이

챠챠비둘기·2022년 11월 30일
0

심화스터디

목록 보기
6/6

XXE Injection 1번 문제


외부의 엔티티를 이용한 xxe를 이용하여 /etc/passwd 파일의 내용을 알아내는 문제이다.
일단 문제 사이트에 들어가 보자.

Burf Suite를 키고, 아무데나 view details를 눌러 들어가서, intercept를 키고 check stock을 눌러보자.

stockcheck 바로 위에 아래의 코드를 적어주자.

<!DOCTYPE test [ <!ENTITY xxe SYSTEM "file:///etc/passwd"> ]>

그리고, productID 칸에 기존에 있던 숫자 1을 지우고 '&xxe;'를 적어주자.


forward를 눌러보니, 아무리 기다려도 응답이 없어서 repeater로 보내서 실행시켜 보았다.


Send 버튼을 눌러, response에 어떠한 결과값이 나오는지 확인해 보자.

우리가 알아내고자 한 etc/passwd 파일의 내용이 출력된다.

문제 해결

XXE Injection 2번 문제


ssrf공격(서버 측 요청 위조 공격)을 수행하기 위해 xxe를 이용하는 문제이다.

burp suite를 키고 문제 사이트에 들어가고, 아무 항목이나 정해 사이트에 들어간 다음 intercept를 키고 check stock을 눌러보자.

패킷이 잡힌 것을 확인할 수 있다.

1번 문제에서 풀었던 것과 마찬가지로, stockCheck 바로 위에 아래의 코드를 작성해 보자.

<!DOCTYPE test [ <!ENTITY xxe SYSTEM "http://169.254.169.254/"> ]>

그리고, productID 자리에 기존에 있던 것을 지우고 '&xxe;'를 작성해 주자.

모두 작성했으면, repeater로 보내서 send 버튼을 눌러보자. invalid product ID 값이 뜬 것을 볼 수 있다. 위의 코드의 / 뒤에 알아낸 ID 값인 latest를 적어보고, 다시 send 버튼을 눌러보자.

똑같이, latest뒤에 /meta-data를 입력한 후, send 버튼을 눌러보자. 이 과정은 invalid id의 값이 admin이 나올 때까지 계속한다.



4번의 시도 끝에 admin이 나왔다.😍 위에서 했던 것과 마찬가지로 security-credential 뒤에 /admin을 작성하고 send버튼을 눌러보자.

문제에서 원하는 값인 AccessKeyID와 SecretAccessKey의 값이 뜬 것을 알 수 있다.

문제 해결 완😎

문제를 풀기 위해, intigrity 님의 풀이와 portswigger의 xxe lecture 부분을 참고하였습니다.

profile
개발 + 보안

0개의 댓글