Portswigger-DOM XSS in jQuery anchor href attribute sink using location.search source
풀이
피드백 등록 페이지에 DOM XSS가 있다. back 링크를 눌렀을 떄 alert(document.cookie) 하도록 만들라.

오른쪽 위 submit feedback 버튼을 누르면 다음 페이지로 이동한다. URL에 returnPath 파라미터가 있다. 여기에 적힌 경로를 변경해보면, back 버튼의 링크가 변경됨을 알 수 있다.

submit 페이지 코드를 읽어보면 다음 스크립트가 있다. 스크립트를 통해 returnPath 파라미터값을 가져온 후, 이를 backLink id를 가진 a 태그의 href 어트리뷰터로 넣고 있다.
jQuery를 임포트하는 코드가 있는 것으로부터 $는 jQuery의 선택자임을 알 수 있다. jQuery를 통해 DOM을 수정하는데, 유저의 입력값이 아무 필터링 없이 적용되었다.

a 태그의 href 값으로 들어가므로, javascript:alert(document.cookie) 를 returnPath로 넣으면 문제가 풀린다.
이 취약점은 사용자가 입력한 값을 검증하지 않고 그대로 DOM을 구성하는 데 사용하여 발생하였다. jQuery등 프레임워크 특유의 DOM 설정 코드를 통해 검증되지 않은 입력값이 그대로 사용되어 발생하였다.
tags: writeup, xss, dom-based-xss, wstg-clnt-01, jquery, web hacking, a-tag