Reflected XSS : LAB [9]
DATE : 2024/1/17
Last updated
DATE : 2024/1/17
Last updated
Reflected XSS 취약점이 존재하는 이번 LAB에서는 제목에 나와 있듯이
< > 기호, 작은 따옴표, 큰 따옴표, 역 슬래쉬와 백틱을 사용할 수 없다.
블로그 검색 기능을 활용하는 경우, 위에 보이는 코드가 실행되는 데
사용자가 입력한 내용이 message에 들어가 innerText 속성으로 할당 되는 걸 확인할 수 있다.
코드 상에서는 별 다른 제약 사항이 없는 듯 보이지만
LAB에서 사용할 수 없다고 한 문자 4개를 입력해보니 unicode encoding 된 결과가 나온다..!
백틱과 역 슬래쉬로 넣어본 결과 모두 unicode encoding 처리 되고 있는 걸 확인했다.
즉 이번 LAB에서는 사용할 수 없는 문자가 굉장히 많다,,
하.지.만
코드를 다시 한 번 잘 보면 message 변수가 ` ` 백틱으로 감싸진 상태인 걸 볼 수 있는데
여기서 이 백틱을 활용할 수 있는 ${} place holder가 등장한다.
백틱으로 감싸진 문자를 콘솔 창에 찍어보면
다음과 같이 나오는 걸 볼 수 있다. 이때 주목할 부분은 백틱으로 문자열을 작성할 때
그 안에 ${ }를 사용할 수 있다는 점이다.
위의 예시처럼 ${ } 안에서 문자열을 만들고자 한다면 동일하게 백틱을 사용하거나 따옴표로 사용해도 된다.
다만 함수를 호출할 때는 백틱이나 따옴표로 감싸는 거 없이 그냥 함수만 작성한다.
이때 alert()에 문자열을 작성할 때도 백틱이나 따옴표를 사용하면 된다.
이 코드를 브라우저 상에서 확인해보면
팝업 창이 뜬 후에 alert()는 문자열 상에서 사라지고
그 자리를 undefined가 메꾸고 있는 걸 볼 수 있다.
만약 alert() 함수 안에 문자열이 아닌 그냥 숫자를 넣거나 별 다른 내용 없이 호출만 한다면
제한 되는 문자를 사용하지 않고 <script> tag 안에 alert()를 삽입할 수 있다.
이와 같이 스크립트를 검색 바에 입력하게 되면 message 변수로 스크립트가 들어가게 되면서
팝업 창을 띄울 수 있게 된다.