본문 바로가기
공부/해킹 과제

XSS 정리

by TILDA_16 2023. 5. 19.

1. XSS(Cross-Site Stripting)이란

 

클라이언트 측 스크립트(코드)를 삽입해서 클라이언트의 브라우저에서 실행되게 만드는 공격

 

2. 공격 유형

 

Stored XSS

 

서버에 스크립트를 저장하는 방식

 

광역으로 시전이 가능하지만, 특정인을 지정해서 공격할 수 없고 서버에 기록이 남는다

 

Reflected XSS

 

서버에 스크립트를 저장하지 않는 방식

 

서버에서 반사시킨 값을 이용하는 공격

 

URL에 링크를 담아서 보내는 방식(GET방식을 사용, POST 사용불가)

 

DOM Based XSS

 

DOM: Document Object Model

 

임의의 Document 객체를 삽입하여 실행시키는 공격이다.

 

3. 공격 방법

 

1) 값을 입력했을 때 그 값이 나오는지 확인

 

2) HTML 특수문자 필터링 여부 확인 <, ", ', >

 

3) POC 코드를 입력하여 적용되는지 확인 ex) <script>alert(1);</script>

 

4) 공격용 구문을 넣어서 공격

 

4. Anti XSS Bypass

 

Black List 기반 필터링

-> 우회 기법들이 계속 생겨난다.

 

Client Side 검증 우회

-> 프록시 툴을 이용하면 의미가 없어진다.

 

Script Load

-> ", ', alert function 등을 막았을 때 스크립트를 로드시키는 방법이다.

글자수 제한이 걸릴 때 유용하게 사용할 수 있다.

 

대소문자 혼용

<script> -> <ScRiPt>

 

필터링되는 문자

<script> -> <scrscriptipt>

 

이벤트 핸들러

<img src=x onerror="alert(1)">

onload, onactivate...

 

5. 대응 방안

 

HTML 특수 문자들을 HTML Entity로 치환한다.

 

만약 사이트에서 HTML Editor 게시판을 사용하면 문제가 된다.

 

HTML Editor 게시판을 잘 안 쓰는 곳은 기능을 막아달라고 하고

 

기능을 잘 사용하는 곳은

 

HTML 특수 문자들을 HTML Entity로 치환하고

<img src= >

%lt;img src= &gt;

 

White List 기반으로 살려줄 태그를 정한다.

img, p, a
<img src= >

 

그리고 Black List 기반으로 이벤트 핸들러를 필터링한다.

onerror, onload 등
<img src= >

'공부 > 해킹 과제' 카테고리의 다른 글

CSRF와 SSRF  (0) 2023.05.26
CSRF 1  (0) 2023.05.19
XSS 2  (0) 2023.05.13
XSS 1  (0) 2023.05.05
SQL Injection 정리  (0) 2023.05.05