Reflected XSS : LAB [3]
DATE : 2024/1/3
Last updated
DATE : 2024/1/3
Last updated
이번 LAB은 Reflected XSS : LAB [2]와 마찬가지로 ANGLE BRACKET이 필터링 되고 있기 때문에
직접적으로 <script> tag를 삽입하는 건 불가능하다.
따라서 스크립트를 삽입할 만한 다른 포인트를 찾아내야 한다..!
LAB에서 제공하는 검색 기능을 활용해보니, 검색 내용과 부합하는 블로그가 없는 경우
출력 되는 문구 형태는 동일하다는 걸 알 수 있다.
Packet으로 그 내용을 확인해보면 사용자가 입력한 값을 그대로 가져다가
문구로 사용하고 있음을 볼 수 있는데
이때 주목할 부분은 여기가 아니다..!
Packet을 주르륵 읽다 보면 중간에 <script> tag로 작성된 내용이 나오는데
코드를 분석해보면 사용자가 입력한 search parameter를 가져다 변수로 선언한 뒤
그 변수를 source로 취하는 <img> tag를 만드는 내용이다.
이때 사용자가 입력한 값이 들어가는 첫 번째 포인트는 변수 searchTerms로
검색 내용이 빈칸에 그대-로 들어가는 듯했다.
사용자가 입력한 값이 parameter로 전달되고 parameter 값이 응답 페이지에서 사용된다??
누가 봐도 Reflected XSS 조건을 만족한다.
공격 포인트를 찾았으니 위치에 알맞은 스크립트를 작성해보도록 하자.
검색 내용이 따옴표 사이로 들어가긴 하지만 상관없다!
삽입할 스크립트에 따옴표를 넣어 마감하면 간단히 해결된다.
이렇게 스크립트를 넣게 되면 searchTerms 변수를 선언 & 할당하고 나서
alert(1)를 실행하는 흐름의 코드가 완성된다.
브라우저로 돌아와 준비한 스크립트를 삽입하고 Packet을 확인해보면
의도했던 대로 alert() 함수가 잘 삽입된 걸 볼 수 있다.
저번 LAB은 이미 갖추어져 있던 태그를 이용해 속성을 추가함으로써 스크립트를 실행했다면
이번 LAB은 이미 작성되어 있는 <script> tag로 사용자의 parameter가 들어가면서
태그를 삽입할 수고 없이 문제를 해결할 수 있었다.