< 문제 >
https://portswigger.net/web-security/cross-site-scripting/dom-based/lab-document-write-sink
Lab: DOM XSS in document.write sink using source location.search | Web Security Academy
This lab contains a DOM-based cross-site scripting vulnerability in the search query tracking functionality. It uses the JavaScript document.write function, ...
portswigger.net
< Write-Up >
해당 Search form에 XSS Payload를 주입한 결과 해당 Payload가 문자로 그대로 출력될 뿐, alert() 반응이 없었다. 확인 가능한 것은 URL 파라미터 창을 통해 GET 방식으로, 쿼리를 전달한다는 것이었고, 아래 그림 2와 같다.
개발자도구를 통해, 해당 페이지가 어떻게 구성되어 있는지 확인해본다.
위 그림 3과 같이 문제해결의 실마리가 될, <script> 구문을 발견했다. 위 코드를 해석해 보겠다.
객체 query는 위 그림 2의 파라미터 search에 전달되는 인자값이 될 것이고, if(query) 문을 통해, trackSearch(query); 문이 시행된다. 그리고 trackSearch(query); 문은 document.write() 메소드가 존재하며, 이는 웹 페이지에 데이터를 출력한다. 즉 query라는 객체가 document.write로 쓰인다는 것이고, <img> 태그를 탈출하기 위해 아래와 같은 Payload를 작성하였다.
"><script>alert(1)</script>
"><svg/onload=alert(1)</script>
< 참고 >
https://www.bugbountyclub.com/pentestgym/view/43
XSS 기초 | Pentest Gym | 버그바운티클럽
이번 훈련에서는 대표적인 클라이언트측 공격 중 하나이며 과거부터 현재에 이르기까지도 웹 애플리케이션에서 가장 흔하게 발견되는 XSS(Cross-Site Scripting, 크로스
www.bugbountyclub.com