XSS 정리

xss

 

 

 

XSS 정리

XSS : 클라이언트 측 스크립트 삽입 공격

Stored XSS : 게시판 형태에서 주로 일어난다.

Reflected : GET Method를 사용해야 하고 URL 링크를 전달하는 방식

DOM Based XSS : Reflected와 비슷하고 다른 점은 Reflected 와는 응답 내용이 다름, 자바스크립트로 html 조립 가능

/#test 을 요청하면 #뒤에는 주소에서는 남아있지만 서버로는 전달이 안됨

/test1#test2 이 프래그먼트에서도 자주 일어난다고 한다.

 

XSS 대응하는 법(블랙리스트)

블랙리스트 기반 필터링 : 특정 단어를 못 들어오게 하는 것

우회가 될 가능성이 존재한다.

ex) 외부 스크립트를 가져와서 로드해서 우회 가능 <script src=”http://외부 사이트. com/xss.js>xss</script>

ex) ScRipT 대소문자 섞어 사용

ex) 스크립트 단어 필터링의 경우 우회 <scrscriptipt> -> <script>

ex) 스크립트 단어 바꾸는 경우 <xript> 이미지 태그 사용 <img src=x onerror”alert(xss)”>

ex) Event Handler 사용 onload, onclick, onmouseover …

ex) 앵커 태그 사용<a href=”javascirpt:alert(1)”></scirpt>

ex) < > 필터링 당하는 경우 자바스크립트 태그 안에서 xss 발생하면 <> 이런 거 사용 안 해도 됨

ex) input 태그 안에 이벤트 핸들러 사용 onload, onclick, onmouseover

 

XSS 대응하는 법(화이트리스트)

화이트 리스트 기반 필터링 : 특정 단어만 들어오게 하는 것

<‘”> 이 기호들에 HTML Entity 사용하면 대부분 막을 수 있음

안 통하는 곳 html 에디터 잘 일어날 수 있음

html 에디터를 굳이 사용해야 하는 경우

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

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

3.  살려준 태그 내에 악의적인 이벤트 핸들러가 있는지 (블랙리스트 기반) 필터링해서 제거해 준다.

 

자바스크립트 동작에는 어떤 것이 있는지

페이지 리다이렉트 location.href, location.replace

주소창 변조 <scirpt> history.pushState(null, null, ‘test’) </scirpt>

 

 

 

 

 

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다