본문 바로가기
정보보안(웹해킹)/XSS(Cross-Site Scripting)

XSS(Cross-Site Scripting) 응용

by 끊임없는정진 2022. 11. 22.

▶XSS(Cross-Site Scripting,크사, 크스스) 종류

(1) Stored XSS : HTML, DB(서버에 저장)

(2) Reflected XSS : Link(URL)

(3) DOM Based XSS : 클라이언트 측에서 조립!, document.write(): HTML, js응답 확인

 

▶XSS point : alert(1) -> stored(회원가입, 게시판), reflected

제목 : 보안점검중입니다.<" '> // 글 : Keyword <" '> 

※ '화면'이 아닌, '응답'에서 확인해야 한다!! (만약, 응답에서 &lt " ' &gt 와 같이 뜬다면, 태그바깥에서 XSS를 활용하기 어렵다는 것.)

 

▶XSS By pass

1. client side 검증 -> Javascript로 filtering 구현 // ※ 서버에게 필터링 맡기는게 옳음!

: f12 or Burp Suite 'intercept'로 손쉽게 우회!

2. Black List Keyword Filtering : ex. 'script' 라는 글자를 filtering 할 때,

(1) 대소문자 혼합 (2) 키워드 반복<Scrscriptipt> 

3. Event handler

> 클릭
> 화면에 띄워졌을 때,
> 마우스가 올라갔을 때,
> 에러가 났을 때...

<img src=x onerror="alert('xss')">
<img src=x onmouseover="alert('xss')">

onactivate
onload
onmouseover
...

<audio src="~~" onplay="alert(1);" autoplay;>

div
object
svg
...

 

▶ 예상 외 XSS 포인트

<script>
              keyword
<script>

keyword"

<input name="title" value="keyword" onfocus="alert(1)" autofocus >

-------

 

▶ 공격 시나리오

1. Session 탈취

2. HTML Injection

3. KeyLogger 삽입

4. Miner 실행

5. Redirect (Phishing)

 

▶ 대응 방안

> HTML 특수 문자를 HTML Enitiy 치환

<input>
  &lt; &gt;

예외 ) HTML Editor
<img><script>~~~

Step 1. 사용자 입력에서 모든 HTML 특수 문자들을 HTML Entity로 치환
&lt;img&gt;&lt;script&gt;~~~

Step 2. 살려줄 Tag , 화이트리스트 기반 살려줄 태그들을 다시 살려준다.
img , div
<img onerror>&lt;script&gt;~~~

Step 3. 스크립트 실행이 가능한(제한해야할) Event Handler 블랙 리스트 기반으로 필터링! 
<img onxxror>&lt;script&gt;~~~

댓글