본문 바로가기
Portswigger/XSS

Portswigger - DOM XSS in jQuery anchor href attribute sink using location.search source solution

by jh117jh 2023. 8. 25.
728x90

문제를 해석하면 anchor 요소를 찾아서 href를 바꿔라 그래서 back링크가 document.cookie를 alert함수로 호출하면 문제가 풀리는 것 같다.

 

우선 anchor가 무엇이냐 하면 우리가 흔히 웹에 링크를 달때 사용하는 a태그( ex <a href="www.naver.com">네이버</a>)를 말한다.

여기서 a태그의 링크를 담당하는 href를 변경하려는것 같다.

 

우선 script문을 보면 attr이 핵심인데

우리가 보통 링크를 작성하려면 a태그를 입력하는게 일반적인데 jQuery 내부에서도 링크를 걸 수 있다.

그게 attr로 $(location).attr("href", "이동하고 싶은 링크")의 형식으로 쓰인다.

 

보면 현재 / 라고 되어있는 backLink의 href를 returnPath파라미터로부터 받아와 바꿀라 한다.

그럼 returnPath값을 alert(document.cookie);로 바꾸면 문제가 풀릴 것이다.

하지만 a태그 href는 주소가 들어가야 되는데 alert는 자바스크립트 명령어이므로  javascript:를 붙여 자바스크립트 안에서 불러오도록 경로를 설정해줘야 한다.

그러므로 javascript:alert(document.cookie);를 returnPath값으로 넣어주면 문제가 풀릴 것이다.

 

backLink의 href가 변경되었고 Back버튼을 누르면 alert알림이 뜨는 걸 알 수 있다.

728x90