write-up(web)/webgoat

[webgoat] XXE assignment write-up

ssongk 2022. 8. 27. 22:44

webgoat XXE 강의 중 연습문제 3개에 대한 라업 입니다.


XXE assignment (4)

루트에서 디렉터리 리스팅을 해야하는 문제 입니다.
버프스위트를 활용해서 패킷을 캡쳐해보면 XML 형태로 전송되는 모습을 볼 수 있습니다.
레슨에서 배운 페이로드를 사용하면 바로 풀 수 있습니다.

XXE assignment (7)

content-type 변조 문제 입니다.
json을 xml으로 바꾸고 이전 문제와 동일하게 풀면 됩니다.

XXE assignment (11)

blind XXE Injection을 수행해야 합니다.
webwolf를 활용해 파일을 업로드하고 해당 파일을 읽어오는 방식 입니다.

https://github.com/vernjan/webgoat/blob/master/04-xxe.md

(영어 해석이 안돼서 도움을 받았습니다)
dtd 파일을 업로드 한 후 XXE injection을 수행합니다.
이 때, 파라미터 엔티티를 사용하는데
dtd 문서에서만 사용하기 위해 선언한 엔티티를 파라미터 엔티티라고 하며 %를 붙여서 선언합니다.
호출할 때는 %이름; 형태로 호출합니다.
페이로드에서 파일에서 플래그 값을 가져와 %secret에 저장합니다.
그 다음에 웹울프에 업로드 했던 dtd 파일을 %dtd에 저장합니다.
%all의 경로에 secret이 대입되서 해당 파일의 내용을 send에 저장하고
send 엔티티가 %all에 저장됩니다.
그래서 &send;를 사용할 수 있습니다.

xml의 결과를 알려주지 않으므로 blind XXE를 사용하여 다른 웹 서버를 통해 기록을 남겨서 결과를 확인합니다.

dtd 파일을 작성한 후 webwolf에 업로드 해줍니다.

url의 landing? 뒤에 나오는 파라미터를 제출하면 문제가 풀립니다.