본문 바로가기
WEB HACKING/웹 해킹[이론]

XSS : Cross-Site Scripting 대응 방안

by madevth 2021. 11. 25.
반응형

이번 포스팅에서는 XSS 공격에 대한 근본적인 대응 방안을 살펴보고, 알려진 몇 가지 방안에 대한 우회 방안을 살펴볼 것이다.

 

① XSS 대응방안

XSS 공격에 대한 가장 근본적인 대응 방안은, 사용자의 입력 값(Parameter)에서 HTML 특수 문자들을 HTML Entity로 바꾸는 것이다. 대표적으로 <는 &lt;로, >는 &gt;로 표현할 수 있다.

 

[HTML Entity]

" &quot;
' &apos;
< &lt;
> &gt;
( &#40;
) &#41;

이때, 서버에 입력할 때 바꾸어주거나 vs 서버에서 출력할 때 바꾸어주는 두 가지 방법으로 나눌 수 있는데, 출력할 때 바꾸어주는 것이 Stored와 Reflected를 한 번에 방어할 수 있기 때문에 조금 더 안정적이다.

 

② 우회 방안

XSS 대응 방안을 검색하면 몇 가지 대응 방안을 볼 수 있는데, 위의 근본적인 방안을 제외하면 대부분 우회 가능성이 존재한다.

1. 특정 태그만을 살리는 Whitelist 방식

이 방식은 우회가 어렵지만, 그만큼 활용도도 낮다.

 

2. 특정 태그를 막는 Blacklist 방식

Black List 방식으로 태그를 필터링하는 다양한 방법이 있다.

1) script라는 태그를 막는다고 가정하면, ScRipt와 같이 대/소문자를 혼합하거나, scrscriptipt와 같이 키워드를 반복하는 방식으로 우회가 가능하다.

2) 큰 따옴표를 막는다고 가정하면, URL Encoding을 사용하여 %2522 → %22 (%25가 %에 해당) → " (%22가 "에 해당)로 우회가 가능하다.

3) 특정 Event Handler를 막는다고 가정하면, <audio onplay = "">와 같은 참신한 태그와 이벤트 핸들러를 사용하여 우회가 가능하다.

4) 만일, 검증이 Client 측에서 일어난다면, Burp Suite을 사용하여 중간에 데이터를 위조하는 방식으로도 우회가 가능하다.

 

3. 문자열 길이 제한

Key Logger를 삽입하는 코드만 하더라도 길이가 상당하다. 따라서 입력받는 문자의 길이를 제한하여 XSS를 방어하는 방법도 존재한다. 하지만 script 태그를 이용하여 외부 src를 로드할 수 있으므로, 악성 코드를 길이 제한 없이 만들어둔 후 script를 사용하여 페이지에 삽입한다면 길이 제한도 우회가 가능하다.

반응형

'WEB HACKING > 웹 해킹[이론]' 카테고리의 다른 글

File Upload 공격  (0) 2021.12.11
CSRF : Cross-Site Request Forgery  (0) 2021.11.26
XSS : Cross-Site Scripting  (0) 2021.11.15
SQL Injection 대응 방법  (0) 2021.11.12
SQL Injection : Blind SQL Injection  (0) 2021.11.05

댓글