Download presentation
Presentation is loading. Please wait.
1
5장 XSS(cross site script)
2
1. XSS에 대한 이해 배경이야기 영희는 철수의 여자친구인데 요즘 들어 영희의 행동을 수상히 여긴 철수는 영희가 개똥이랑 좀 이상한 관계인 거 같다고 생각이 들어 영희 몰래 영희의 메일을 훔쳐보고 싶어 했다(당연히 불법이다). 철수는 철수의 절친한 친구인 아네군에게 XSS 공격을 이용하면 영희의 메일을 읽을 수 있다는 솔깃한 예기를 듣고 500원짜리 떡볶이를 아네군에게 사주면서 XSS 공격 방법을 익히게 된다.
3
1. XSS에 대한 이해 배경이야기 (계속) 드디어 XSS 공격 방법을 습득한 철수는 영희에게 메일을 보낸다. 메일에는 평범한 내용과 함께 악성 스크립트 코드를 숨겨서 보낸다. 영희는 아무런 의심을 하지 않고 철수한테 온 메일을 읽는다. 하지만 그 순간 숨겨서 보낸 악성 스크립트 코드는 영희의 쿠키 정보는 철수에게 넘긴다. 철수는 영희로부터 받은 쿠키 값을 가지고 간단한 조작을 통해서 영희의 메일을 읽을 수 있었다.
4
1. XSS에 대한 이해 XSS를 이용한 공격의 기본 원리
5
1. 쿠키 1. XSS에 대한 이해 1994년 넷츠케이프에 의해 처음 사용된 기술
사용자가 인터넷 웹 사이트를 방문할 때 생기는 4KB 이하의 파일 웹 사이트의 방문 기록을 사용자 컴퓨터에 남겨 사용자와 웹 사이트 사이를 연결해주는 정보를 담고 있음
6
1. XSS에 대한 이해: 쿠키가 사용되는 두 단계 사용자가 웹사이트에 방문하면 웹사이트는 사용자의 컴퓨터에 쿠키를 생성한다.
예) 사용자가 접속하면 사이트는 사용자의 브라우저를 확인하는 ID 번호를 쿠키 파일에 넣어서 사용자의 컴퓨터에 저장한다. C:\Document and Settings\사용자이름\Cookies에서 실제 여러분이 인터넷을 이용하면서 생성되었던 쿠키들을 확인할 수 있다.
7
1. XSS에 대한 이해 사용자 컴퓨터에 저장된 쿠키 파일들 쿠키파일 형태: 사용자이름@접속한사이트
쿠키파일 내용: 저장한 사이트 도메인 이름, 구분 숫자 등
8
1. XSS에 대한 이해 쿠키가 사용되는 두 단계 2. 사용자가 웹 서버에 접속할 때 사용자 컴퓨터에 있는 쿠키를 웹 서버로 전송하는 단계다. 예) 전에 방문했던 사이트에 다시 접속하면 웹사이트는 사용자 컴퓨터에 저장된 쿠키를 통해 사용자의 여러 개인 정보를 수집할 수 있다. 아이디와 패스워드를 저장하여 사용한 경우에는 그 정보가 쿠키에 남아있기 때문에 또 다시 아이디와 패스워드를 입력하고 로그인하지 않아도 되는 편리성 및 위험성
9
1. XSS에 대한 이해 쿠키가 사용되는 몇 가지 용도 사이트 개인화 장바구니 시스템 웹 사이트 이용 방식 추적 타겟 마케팅
10
특정 웹 사이트가 저장한 쿠키를 다른 웹 사이트에서도 읽어 들일 수 있다?
1. XSS에 대한 이해 쿠키에 대한 오해들 쿠키가 바이러스를 전파한다? 쿠키는 사용자 컴퓨터에 피해를 입힌다? 특정 웹 사이트가 저장한 쿠키를 다른 웹 사이트에서도 읽어 들일 수 있다?
11
1. XSS에 대한 이해 XSS 공격을 통해 가져오는 주요 정보: 사용자가 웹 서버로 전송하는 사용자의 고유 쿠키 값 쿠키 내용은 웹 애플리케이션 개발자가 어떤 내용을 쿠키에 넣을지 정함. 일반적으로 기본적인 ASP와 PHP 같은 것은 ASPSESSIONID 값과 PHPSESSIONID 기본 값으로 쿠키 값을 암호화하여 처리 많은 곳의 웹 메일 애플리케이션과 같은 자체 제작된 웹 애플리케이션은 쿠키 값에 사용자의 비밀번호나 사용자의 중요 정보가 담겨있는 경우도 종종 있음.
12
XSS XSS란 ‘Cross Site Scripting’의 약자로 줄여서 CSS라고도 부르나 또 다른 이름인 캐스케이딩 스타일 시트(Cascading Style Sheets)와 혼동되어 일반적으로 XSS라고 불리게 되었다. XSS는 타 사용자의 정보를 추출하기 위해 사용되는 공격 기법이다. 간단히 예를 들면, 게시판이나 검색 부분, 즉 사용자의 입력을 받아들이는 부분에 스크립트 코드를 필터링하지 않음으로써 공격자가 스크립트 코드를 실행할 수 있게 되는 취약점이다.
13
XSS의 원리 정상적인 문자열을 입력할 때의 과정
14
XSS의 원리 스크립트 코드 문자열을 입력할 때의 과정
15
2. XSS를 통한 공격 방법 실제 XSS 공격을 통해 다른 사용자의 쿠키 값을 이용해 다른 사용자로 로그인 하는 과정
16
2. XSS를 통한 공격 방법 공격자가 XSS 코드를 게시판에 작성하는 화면
17
위 코드는 게시판을 열람 시에 사용자의 쿠키 정보가 해커의 웹 서버(192.168.1.10)로 전송하는 코드 이다.
2. XSS를 통한 공격 방법 공격자가 작성한 XSS 코드 <script>url=" height=0);</script> 위 코드는 게시판을 열람 시에 사용자의 쿠키 정보가 해커의 웹 서버( )로 전송하는 코드 이다.
18
2. XSS를 통한 공격 방법 사용자가 공격자가 작성한 글을 열람 시 공격자의 컴퓨터에 사용자의 쿠키 값이 전송된 화면
19
실습 – XSS 공격을 통한 다른 사용자로 로그인하기
1. 테스트하기 위한 계정 2개를 생성(victim과 hacker 계정 생성)
20
실습 – XSS 공격을 통한 다른 사용자로 로그인하기
2. hacker계정으로 로그인한다. 3. 게시판에 다음과 같은 내용으로 글을 작성한다. <script>document.write(document.cookie)</script>
21
실습 – XSS 공격을 통한 다른 사용자로 로그인하기
4. 게시판에 글을 작성한 후 다시 victim 계정으로 로그인하자.
22
실습 – XSS 공격을 통한 다른 사용자로 로그인하기
5. 로그인한 victim으로 hacker가 작성한 글을 열람하면 다음과 같은 쿠키 값이 보인다.
23
실습 – XSS 공격을 통한 다른 사용자로 로그인하기
6. 쿠키 조작을 통한 사용자 변조 쿠키 값을 가지고 hacker 계정에서 victim 계정으로 로그인 해보자. 로그인 페이지를 열고 hacker 계정의 아이디와 패스워드를 입력해 놓자. 아직 로그인 버튼은 누르지 않는다.
24
실습 – XSS 공격을 통한 다른 사용자로 로그인하기
6. 쿠키 조작을 통한 사용자 변조 (계속) Paros를 실행한 후 클라이언트와 서버간의 모든 데이터를 가로채도록 설정한다. 그 후 ‘로그인’ 버튼을 누르면 다음 그림과 같이 클라이언트에서 서버로 HTTP 패킷을 전송하는 것을 확인할 수 있을 것이다.
25
실습 – XSS 공격을 통한 다른 사용자로 로그인하기
6. 쿠키 조작을 통한 사용자 변조 (계속) HTTP 헤더 중에서 ‘Cookie :’ 부분을 위에 victim 쿠키의 값으로 변조해보자. 다음 그림은 ‘Cookie : ' 값을 victim의 값으로 변조한 화면이다(Paros에 해당 부분을 붙여넣으면 된다).
26
실습 – XSS 공격을 통한 다른 사용자로 로그인하기
6. 쿠키 조작을 통한 사용자 변조 (계속) 쿠키 값을 변경한 후 재 전송하면 다음 그림과 같이 victim의 계정으로 로그인 된 것을 볼 수 있다.
27
3. XSS에 대한 대응 방법 XSS 취약점은 대부분 웹 애플리케이션 개발자가 사용자 입력을 받아들이는 부분에서 사용자 입력에 대해 어떠한 검증도 이루어지지 않기 때문에 발생한다. 그럼 웹 애플리케이션 개발자나 사이트 관리자는 어떠한 방식으로 XSS 취약점에 대해 대응해야 할까?
28
중요한 정보는 쿠키에 저장하지 않아야 한다. 3. XSS에 대한 대응 방법
앞의 실습 예제에서와 같이 사용자를 식별하기 위해 쿠키에 패스워드와 같은 민감한 정보는 담지 않아야 한다. 2. 스크립트 코드에 사용되는 특수 문자에 대한 이해와 정확한 필터링해야 한다. 가장 효과적인 방법은 사용자가 입력 가능한 문자(예를 들어, 알파벳, 숫자, 및 몇 개의 특수문자)만을 정해 놓고 그 문자열이 아닌 경우는 모두 필터링한다. 이 방법은 추가적인 XSS 취약점에 사용되는 특수 문자를 애초부터 막을 수 있다는 장점이 있다.
29
XSS공격에 주로 사용되는 특수문자의 종류 특수문자 의미 < 태그의 시작 > 태그의 끝 &
캐릭터 entity 또는 CGI parameter의 구별자 “ 속성 값 ‘ space 속성 값, URL의 끝 tab URL의 끝 new line Non-ASCII iso 일때, 128을 넘어가는 2byte코드들 % HTTP escape sequence "안의 ! Server side script <script></script>안의 ;, (), {}, new line
30
3. 게시판에서 HTML 포맷의 입력은 사용할 수 없도록 설정한다.
3. XSS에 대한 대응 방법 (계속) 3. 게시판에서 HTML 포맷의 입력은 사용할 수 없도록 설정한다. 최근에 만들어진 게시판들은 대부분 다양한 효과를 사용자들에게 제공하기 위해 HTML 태그 기능을 제공하고 있지만 꼭 필요한 경우가 아니라면 HTML 사용 기능을 불가능하게 해야 한다. 4. 스크립트 대체 및 무효화. javascript라고 들어오는 문자열을 무조건 ‘x-javascript’와 같이 대체를 하여 스크립트 실행을 무효화시키는 방법도 있다. 5. 주기적인 점검 자체적인 취약점 점검 및 보안 컨설팅 등 정기적이 점검을 통해 취약점을 수시로 확인 및 제거한다.
31
3. XSS에 대한 대응 방법 (계속) 일반 사용자들은 어떻게 대처해야 할까? 사실 일반 사용자: 일방적으로 XSS 취약점에 무방비로 노출되어 있다. 자신이 매일 들어가는 메일이나 자주 방문하는 동호회 게시판과 같은 곳에 누가 언제 어떻게 XSS 취약점을 이용하여 악성 스크립트 코드를 숨겨놓았을지 전혀 알 수 없기 때문이다. 그렇다면 일반 사용자가 좀더 안전한 인터넷 서핑을 위하여 XSS 취약점에 대해 대응할 수 있는 방안은 무엇인지 알아보자.
32
3. XSS에 대한 대응 방법 (계속) XSS에 대한 일반 사용자들의 대응 방안
우선 메일이나 링크가 있으면 링크를 바로 클릭하여 이동하지 말고 직접 URL에 주소를 입력하여 해당 사이트를 방문하는 방법이 있다. 이 방법은 어떻게 보면 상당히 불편한 방법이지만 URL 스푸핑이나 XSS 공격에 대응하는 방안 중 하나다. 2. 인터넷 익스플로러의 최신 패치를 적용하여 인터넷 익스플로러 자체의 취약점으로 인한 공격에 미리 대응해야 한다.
33
3. XSS에 대한 대응 방법 (계속) XSS에 대한 일반 사용자들의 대응 방안
3. 인터넷 옵션에서 개인정보 등급을 상향 조절하여 불필요한 쿠키 값을 전송시키지 않는 방법도 있다. 가장 보안 설정을 높이면 쿠키 값이 필요한 사이트에서 서비스를 사용하기 힘든 경우가 있기 때문에 보안 설정을 최상위로 높이는 것을 권고하지는 않는다.
Similar presentations