Reflected XSS : LAB [2]
DATE : 2023/1/3
Last updated
DATE : 2023/1/3
Last updated
이번 LAB도 앞서 풀어본 Reflected XSS : LAB [1]과 마찬가지로 Reflected XSS에 관한 문제이다.
페이지 중앙에 위치한 검색 기능을 활용해 팝업 창을 띄우면 된다.
스크립트를 삽입하기 전, 페이지가 어떻게 동작하는 지 파악하기 위해 간단한 키워드를 검색해봤다.
사용자가 "hello"를 입력하는 경우 검색 바 상단에
문구를 출력해주는 걸 볼 수 있다.
원래는 사용자가 입력했던 검색 내용이 검색 바 value로 들어가 있는 걸 볼 수 있다.
그래서 사용자가 검색을 한 뒤에도 검색 바에 입력한 값이 남아있던 것.
이번 문제는 이 부분을 이용해 팝업 창을 띄울 것이다.
문제 설명을 읽어보면 알겠지만 이번 문제는 angle Bracket, 즉 태그를 열고 닫는 기호 < > 가
대체 문자로 치환되기 때문에 직접 <script> tag를 삽입할 수 없다.
그렇기 때문에 사용자가 입력한 값을 사용하는 위치에
적절히 스크립트를 넣어 팝업 창을 띄우는 전략을 선택한 것!
현재 사용자가 입력한 값은 value 속성으로 들어가면서 따옴표에 둘러 쌓이게 된다.
따라서 따옴표를 마감하지 않고 스크립트를 그대로 작성하면 문자열이 되어버리는 사태가 발생한다.
이를 방지하기 위해 따옴표로 짝을 맞춰 주고 HTML tag에서 적용할 수 있는 속성에
스크립트를 작성해줄 것이다.
value 빈칸에 search parameter 값이 들어가게 되면서 결과적으로 만들어지는 응답 페이지에는
input tag를 클릭하면 팝업 창이 뜨는 스크립트가 적용된다.
(onclick 말고도 onmouseover 등 다른 이벤트 속성을 사용할 수도 있다.)
LAB 화면으로 다시 돌아와 스크립트를 삽입해보자.
삽입한 스크립트가 바로 응답 페이지에 적혀져 있는 걸 보면 Reflected XSS임을 확신할 수 있을 것이다.
스크립트를 삽입한 후 사용자가 검색 바를 클릭하게 되면 <input> tag에 적어둔 스크립트가 실행되어
팝업 창이 뜨는 걸 볼 수 있을 것이다.
보통은 "스크립트 삽입한다"고 하면 <script> tag를 떠올리다 보니
그 외에도 스크립트를 삽입할 수 있는 다양한 상황이 있음을 보여주는 좋은 예시였다.
이때 Packet을 확인해보면 이전 LAB과 달라진 점을 눈치챌 수 있을 것이다.
문제에서는 onmouseover 속성으로 팝업 창을 띄워야 solved 처리해준다.