XSS를 발생시키는 방법은 정말 무궁무진하다.
많이 유명해진 취약점이기 때문에 보호 기법부터 그 보호 기법을 우회하는 법, 보호기법을 우회하는 기법을 막는 법....
이렇게 계속 막고 뚫는 연결고리가 계속되면서 보호 기법과 공격 기법이 엄청 늘어났다.
그중에서 이번에는 내가 어떤 문제를 풀면서 새롭게 알아낸 skill에 대해 작성하려고 한다.
javascript scheme 기본
javascript scheme는 URL로 javascript를 실행하게 해주는 scheme다.
예를 들어, javascript:alert(1); 이렇게 하면 alert가 발생하는 것을 알 수 있다.
그래서 XSS를 발동시킬 때 script 태그나 html 태그의 on 키워드가 포함된 속성을 이용하여 XSS를 주로 발동시키지만, 종종 피해자 URL을 이동시킬 수 있을 때 해당 URL에 위 예시처럼 이동시키면 XSS를 발생시킬 수 있다.
(location.href="javascript:alert(1);")
javascript scheme 파고들기
scheme를 사용하면 JS가 실행되는 것을 알겠는데 더욱 파고들면 이 부분을 응용할 수 있는 점을 알 수 있다.
한 번 주소창에 javascript:alert(1);'asdf'를 쳐보자.
alert가 발동되고 위 사진처럼 asdf가 출력되는 것을 알 수 있다.
결과를 보면 scheme를 사용하면 '어딘가'에서 처리되어 출력되는 게 아니라 현재 화면에서 해당 JS코드가 들어가서 출력된다는 것이다. 더욱 응용하여 asdf 뒤에 <script>... </script>식으로 작성하여 스크립트 코드를 작성할 수도 있다.
결론은 javascript scheme를 사용하면 scheme 뒤에 있는 내용을 브라우저에 출력할 수 있음을 알 수 있고, 단순히 코드를 작성하는 것처럼 \n(%0a)을 사용할 수도 있다는 것이다.
javascript:alert(1);%0a'<script>alert(1);"asdfasdf"</script>'
'Web Hacking > Web technique' 카테고리의 다른 글
[Javascript] XS search (0) | 2022.11.16 |
---|