본문 바로가기
3. 웹 애플리케이션 취약점 진단/비박스를 활용한 웹 애플리케이션 취약점 진단

[비박스를 활용한 웹 취약점 진단] 7-5.크로스 사이트 스크립팅 [Reflected XSS-JSON]

by Robert8478 2023. 12. 13.

JSON이란? 클라이언트와 서버가 통신할 때 자료를 표현하는 방법으로 특정 언어에 제한 없이 그대로 사용할 수 있다는 장점이 있으며, 여러 자료 구조를 JSON으로 표현 가능하다.
이번 페이지는 JSON으로 객체를 선언하는 자바 스크립트 코드를 사용하여 검색한 영화 정보를 출력해주는 페이지이다.

[난이도 하]

텍스트 입력창에 이름을 넣고 검색하니 GET 방식으로 받아서 화면에 출력되었다.

소스코드를 확인해 보니 스크립트로 검색에 대한 응답을 받는 형태이다. 이미 스크립트를 사용중인 구문에 입력값이 들어가기 때문에 </script> 로 우선 기존 스크립트 문을 닫아준 뒤 XSS 구문을 넣어 주어야 할 것이다.

</script><script>alert(document.cookie)</script> 구문을 넣어주었더니 세션값이 노출되었다.

알림창에 확인을 눌러주고 나니 XSS 공격으로 인해서 실행되지 않은 기존의 스크립트 코드가 출력되었다.

[난이도 중,상]

난이도 중에서는 스크립트가 문자열로 출력이 되어서 소스코드를 보았더니 &lt; 로 변한것을 보면 특수문자를 필터링 한 것을 확인할 수 있다.

역으로 필터링된 구문으로 넣어보아도 스크립트가 적용되지 않았다.
PHP 코드를 살펴보았더니 난이도 중과 상 둘다 htmlspecialchars 함수를 사용하여 필터링 하고 있었다.