본문 바로가기

Security/Hacking & Security

[보안 해킹] 홈페이지 보안 취약점 - 크로스 사이트 스크립트(XSS) 취약점

[보안 해킹] 홈페이지 보안 취약점 - 크로스 사이트 스크립트(XSS) 취약점



■ 취약점 설명 및 사례

    ⑴ 취약점 설명

        - 페이지에 악의적인 스크립트를 포함시켜 웹페이지를 열람하는 접속자의 권한으로 부적절한 스크립트가 수행되어 정보유출 등의 공격을 유발할 수 있는 취약점



    ⑵ 사례

        ① OO대학은 게시판의 댓글 기능이 공개되어 있고 [HTML 편집기] 기능을 이용하여 스크립트 코드의 삽입이 가능



           - 삽입한 스크립트가 동작함



        ② OO대학의 아이디/학번 조회 URL에 스크립트를 삽입하면 스크립트가 동작함



■ 점검 방법

    ⑴ 취약점 설명

        - 글 쓰기 기능이 있는 게시판 및 검색란에 다음과 같은 스크립트 문장을 각각 입력하고 글 쓰기(또는 검색)를 시도


  XSS 점검 예)

  <script>alert('XSS 취약점 존재');</script> 

  '<embed src=http://cyber.go.kr/xss_test.swf></embed>



    ⑵ 글을 게시하는 중에 스크립트 태그 사용에 대한 "오류"나 "경고" 메시지가 발생하며 입력한 정보가 등록되지 않는다면 취약점 없음



    ⑶ 윈도우 경고창이 나타나지 않고 아래 그림과 같이 스크립트 문장이 입력한 내용과 같이 나타나면 취약점 없음



    ⑷ 윈도우 경고 창을 통해 1번 항목에서 입력한 문장인 XSS 취약점 존재 또는 'XSS&nbsp;취약점&nbsp;존재' 와 같은 형태의 팝업 경고창이 나타날 경우 XSS 취약점이 존재



    ⑸ 또한 아래 그림과 같이 검색란에 스크립트를 입력



■ 대응 방안

    ⑴ 웹 서버 내에서의 조치

        ① 웹 서버에서 입력 값에 정의된 문자 길이를 검증하여 javascript 등의 명령이 삽입되지 않도록 수정

        ② 웹 서버의 검증 치환 등의 과정은 서버 사이드 스크립트(Server Side Script)에서 구현하여 검증 치환 기능의 우회를 차단

            (검증 치환 등의 기능을 javascript 로 구현할 경우 우회 가능)

        ③ 웹 서버에서 HTML 형식의 입력이 불가피할 경우만 XSS 공격에 주로 사용되는 Tag 입력을 차단

        ④ 웹 서버는 사용자 입력 폼(로그인 폼, 검색 폼, URL 등)을 대상으로 특수문자, 특수구문 필터링 규칙 적용


필터링 대상

<

>

&lt;

&gt; 

 

javascript

eval

onmousewheel 

onactivae

onfocusin 

vbscript

innerHTML 

ondataavailable 

oncopy 

onfocusout 

expression

charset 

onafterprint 

oncut 

onhelp 

applet

document 

onafterupdate 

onclick 

onkeydown 

meta

string 

onmousedown 

onchange 

onkeypress 

xml

create 

onbeforeactivate 

onbeforecut 

onkeyup 

blink

append 

onbeforecopy 

ondblclick 

onrowsdelete 

link

binding 

ondatasetchanged 

ondeactivate 

onload 

style

alert 

onbeforedeactivate 

ondrag 

onlosecapture 

script

msgbox 

onbeforeeditfocus 

ongragend 

onbounce 

embed

refresh 

onbeforepaste 

ongragenter 

onmouseenter 

object

embed 

onbeforeprint 

ondragleave 

onmouseleave 

iframe

liayer 

onbeforeunload 

ondragover 

onbefore 

frame

applet 

onbeforeupdate 

ondragstart 

onmouseout 

framset

cookie 

onpropertychange 

ondrop 

onmouseover 

ilayer

javascript 

ondatasetcomplete 

onerror 

onmouseup 

layer

void

oncellchange 

onerrorupdate 

onresizeend 

bgsound

href 

onlayoutcomplete 

onfilterchange 

onabort 

title

on paste 

onmousemove 

onfinish 

onmoveend 

base

onstart 

oncontextmenu 

onfocus 

onmovestart 

onreset

onresize 

oncontrolselect 

onresizestart 

onrowenter 

onmove

onrowexit 

onreadystatechange 

onunload 

onsubmit 

onstop

onselect 

onselectionchange 

onselectstart 

onblur 


 

onrowsinserted 

 

 


        ⑤ 웹 서버의 취약점 조치를 완료한 후 위 과정을 다시 수행하여 XSS 취약점의 추가 존재 여부를 재점검


     홈페이지 개발 보안 조치

        ① 홈페이지 소스코드는 사용자가 입력한 문자열에서 <, >, &, ", " 등을 replace 등의 문자 변환 함수(혹은) Method)를 사용하여 &lt, &gt, &amp, &quot 로 치환

        ② 홈페이지 게시판 등에서 HTML 태그 허용 시 HTML 태그의 리스트(White List)를 선정한 후, 해당 태그만 허용하는 방식 적용


※ 기재될 홈페이지 개발 보안 방안 - 크로스사이트 스크립트를 참조, 소스코드를 수정하여 보안취약점을 조치하시길 바람




※ 문의 사항은 메일 : jyuhm@sntkor.com 이나 070-8611-4853


문의 사항 남기기