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

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

by Robert8478 2023. 12. 13.

반사된 (Reflected) XSS란? - 웹 페이지 URL에 존재하는 파라미터에 악의적인 스크립트 코드를 입력해서 사용자가 URL 클릭 시 파라미터에 입력한 악의적인 스크립트 코드가 실행되는 공격이다. 

스크립트 코드가 포함된 URL 링크를 메일로 전송하거나 게시물로 등록해서 공격

URL을 인코딩하거나 축약하는 방식으로 속여 유포하며 Stored XSS보단 적은 위협이지만 위험성은 동일하므로 입력 값 검증이 필요하다.

[난이도 하]

<script>alert(document.cookie)</script> 스크립트를 바로 입력해서 취약점이 있는지 확인해보자.

cookie 값이 알림 창으로 출력되었다.

[난이도 중]

난이도 중으로 변경한 뒤 똑같은 구문을 넣어보았다. <script>alert(document.cookie)</script>

low와 똑같이 세션값이 노출되었다. 난이도 중에서는 addslashes 함수로 필터링을 하고 있었는데
GET 방식에서 addslashes 함수는 ' 와 " 를 주로 필터링 하기 때문에 <script>alert(document.cookie)</script> 스크립트 구문에는 ' " 가 들어가지 않아 통과되었다. alert("hello world") 와 같은 코드를 넣으면 필터링 될 것이다.


[난이도 상]

똑같은 구문을 넣으면 문자열화 되어 출력된다. 코드를 살펴보니 htmlspecialchars 함수를 사용하여 필터링 하고 있었다.

XSS는 웹페이지 어느 곳에서든 취약점이 발생할 수 있기 때문에 허용한 소스 코드 외에는 HTML 엔티티 코드로 변환하여
악의적인 소스코드를 웹브라우저가 해석하지 않도록 해야한다. 실무에서는 특정 문자값을 하나씩 처리하기 힘들기 때문에
요청되는 변수 값에 서비스에 영향을 주지 않는 선에서 길이 제한을 둔다. 이는 SQL 인젝션 방어에도 도움이 된다.