이번에도 dom-based cross-site scripting 취약점 문제이다. 이번 문제는 어떤 문제인지조차 감도 잡히지 않았다. 문제가 아주 쉬워서 조금의 힌트만으로 얼렁뚱땅 풀 수 있었지만, 아직까지 내가 어떤 문제를 풀었고, 왜 solved가 떴는지 잘 모르겠다. 조금 더 jQuery와 자바스크립트 라이브러리에 대해 공부한 후, 다시 풀어보는 게 좋을 것 같다. 일단 문제 사이트에 들어가 보자.
submit feedback 페이지로 들어가 보자.
위의 url 링크에서, returnPath 다음 값에 아무 값이나 입력해 보자.
그리고 위의 입력한 값으로 다시 사이트에 들어가 보면
아무 차이가 없어 보인다....
Back 버튼을 눌러보자.
오잉? devtool로 들어가서 어떻게 된 상황인지 확인해 보자.
데브툴에서 사이트에 관한 정보를 확인해 보니, href 값에 내가 넣은 문자열이 입력된 것을 알 수 있다. 즉, backlink를 눌러 그 전의 사이트로 돌아갈때, 내가 url에 입력한 값이 반영되어 내가 입력한 값이 들어간 url로 이동한다는 것을 알 수 있다. 설명이 이상하지만 내가 url에 입력한 값이 back을 눌러 그 전 사이트로 이동할 때 반영되는 구조라는 것을 알 수 있다. 즉 내가 악의적인 스크립트를 url을 넣을 경우, url이 반영되어 웹 사이트에서는 그 악의적인 스크립트를 실행시킬 수도 있다는 뜻이다.
취약점을 확인했으니, url의 returnPath값에 아래 코드값을 적어보자.
javascript:alert(1)
back 버튼을 눌러 back link로 이동해 보자.
이렇게 alert창이 뜬 것을 확인할 수 있다. 즉, 내가 넣은 스크립트가 성공적으로 사이트에서 실행시켰음을 알 수 있다.
유익한 정보 잘 얻어갑니다^^!