[11 WEEK] XSS Example, XSS Protection

2024. 7. 5. 18:39정보보안 및 해킹/Normaltic's 취업반 강의

XSS 공격 예제

 

Event Handler

onload, loclick, onmouseover 등 <>안에서 빠져나오지 못 할 경우 유용함

href

<a href="javascript:alert(1)">TEST</a>

a tag를 클릭하면 페이지가 이동되는 특성 활용

 

XSS 대응방안

 

오답

필터링

블랙필터링

- 특정 단어를 허용하지 않음

- 대소문자, 특정단어, 특정특수문자 등

- 우회할 가능성이 무궁무진함

화이트필터링

- 특정 단어만을 허용함

- 게시판 등 자유도가 보장되어야 하는 곳에서 사용되지 못 함

 

정답

HTML Entity

XSS를 유발할 수 있는 특수문자를 HTML Encoding

Character Entity Number Entity Name Description
" &#34; &quot; quotation mark
' &#39; &apos; (does not work in IE) apostrophe
& &#38; &amp; ampersand
< &#60; &lt; less-than
> &#62; &gt; greather-than

기본적으로는 < ' " > 이 네 가지의 특수문자만 치환해도 XSS로부터 어느정도는 방어할 수 있다

 

BUT!!

HTML Entity가 사용될 수 없는 곳이 있는데, 바로

HTML Editor

사용자가 직접 HTML코드를 작성할 수 있도록 하는 HTML Editor는 HTML Entity를 그대로 적용하는 순간

기능을 상실한다

따라서 HTML Editor는 아래 3가지의 절차를 거치면 어느정도 방어가 가능하다

 

PROCESS

1. 파라미터에서 HTML 특수문자들을 전부 HTML Entity로 치환

- 임시로 특수 문자들을 치환


2. 허용해 줄 태그들을 식별하고 그 태그를 다시 살린다

- < ' " > 중에서도 필요한 것들을 식별할 수 있어야 한다


3. 살려준 태그 내에 악의적인 event handler가 있는지 블랙리스트 기반으로 필터링

- <img src="" onerror=""> 라는 구문을 사용자가 입력했다면, src는 확인하고 제대로 된 png파일이 맞다면 넣어도 되지만 onerror는 누가 봐도 수상하다...

'정보보안 및 해킹 > Normaltic's 취업반 강의' 카테고리의 다른 글

[13 WEEK] CSRF Protection, CSRF + XSS, SOP / CORS  (0) 2024.07.11
[12 WEEK] CSRF  (0) 2024.07.05
[9 / 10 WEEK] XSS  (0) 2024.06.25
[5 WEEK] SQL Injection  (0) 2024.06.07
[4 WEEK] Burp Suite 기능  (0) 2024.06.06