Transcript XSS - 정보보안 스토리
XSS (Cross Site Script)
MADE BY 김 현중
XSS이란?
- 게시판에 새 게시물을 작성하여 등록할 때와 같이 사용자의 입력을 받아 처리하는 웹 응용 프로그램에서 입력 내용에 대 해 실행 코드인 스크립트의 태그를 적절히 필터링 하지 않을 경우에 악의적인 스크립트가 포함된 게시물을 등록할 수 있어 해당 게시물을 열람하는 일반 사용자의 PC로부터 개인 정보인 쿠키를 유출할 수 있는 등의 피해를 초래함.
- 게시물에
실행 코드와 태그의 업로드가 규제되지 않는 경우
이를 악용하여 열람한 타 사용자의 개인용 컴퓨터(PC)로 부터 정보를 유출할 수 있는 보안 취약점.
XSS이란?
The Open Web Application Security Project
XSS의 종류
Stored 방식
Reflected 방식
Dom 기반 방식
XSS의 종류
Stored 방식 1. 공격자가 웹 서버에 악성스크립트가 담긴 게시물을 등록한다.
2. 이 때 게시물은 웹 서버에 저장된다.
3. 사용자가 웹 서버에 요청/응답할 때, 악성스크립트가 실행된다.
XSS의 종류
Reflected 방식 1. 공격자는 먼저 A사이트에 XSS 취약점 이 있는 것을 발견한다. 2. 정보를 획득할 수 있는 공격용 악성 URL을 생성한다. 3. 공격자는 이 URL을 이메일 메시지에 포함하여 배포한다. 4. 피해자가 URL을 클릭하면, 바로 공격 스크립트가 피해자로 반사되어 A 사이트 에 관련된 민감한 정보(ID/패스워드, 세션 정보)를 공격자에게 전송한다.
XSS의 종류
Dom 방식 조작된 URL을 통해 DOM 데이 터에 접근 할 때 사용할 수 있는 DOM 객체를 포함하는 자바스크 립트가 존재하는 페이지가 있을 때, 사용자 측 브라우저에서 DOM 객체를 통해서 공격 코드는 가지고 와 공격이 실행된다.
XSS의 공격에 의한 피해
1. 쿠키 정보 / 세션 ID 획득 - 쿠키란? -> 웹 서버가 HTTP 헤더 중 Set-Cookie 필드로 브라우저에게 보내는 작은 텍스트 파일 사용자가 웹사이트를 이용하는 동안 사용자 브라우저에 저장됨.
사용자 상태를 기록 하기 위해 쿠키 값에 로그인, 버튼 클릭 등에 대한 정보를 저장 - 세션 쿠키란?
-> 사용자가 웹사이트를 읽거나 방문하는 동안에만 임시로 메모리에 존재하는 쿠키.
브라우저에서는 사용자가 브라우저를 종료하면 세션쿠키를 삭제한다.
@쿠키나 세션 ID 획득 시 불법적으로 정상(일반) 사용자로 가장 가능.
XSS의 공격에 의한 피해
2. 시스템 관리자 권한 획득 - XSS 취약점을 이용하여 사용자 브라우저 취약점을 공격하여 PC 통제 가능.
=> 취약한 웹 서버에 다양한 악성 데이터를 포함 후 사용자가 실행하게 되면 자신 의 브라우저에 제로데이 취약점 또는 패치 되지 않은 취약점을 공격하는 공격 코드 가 실행되면서 사용자 시스템을 완전히 통제할 수 있다. 이는 회사 등 조직의 내부 시스템으로 이동하여 내부의 중요 정보를 탈취하는 공격으로 이어질 수 있다.
XSS의 공격에 의한 피해
3. 악성 코드 다운로드 - XSS공격 자체만으로 악성 프로그램을 다운 할 수는 없음.
- 사용자가 악성 스크립트가 있는 URL을 클릭하도록 유도 하거나 트로이목마 프로그램을 다운로드 하여 설치 할 수 있다.
XSS 공격 예방 방법
화이트 리스트 방식 1. 게시물을 등록하는 페이지에 소스에 해당 언어에 맞는 소스를 추가 해준 다.
2. XSS로 접근하기 위해 해당 문자열 입력 시 게시물 등록된 후에는 언어 로 인식 하지 않고 글로 인식되어 원하는 액션이 실행되지 않는다.
3. 예시로된
,
뿐만 아니라 실습 환경 : http://testphp.vulnweb.com/
XSS 공격 실습
Stored XSS 실습-5 1. 확인 시 이전 실습과 마찬가지로 팝 업 창이 생성되는 것을 확인 할 수 있음.
실습 환경 : http://testphp.vulnweb.com/
XSS 공격 실습
Reflected XSS 실습-1 Reflected XSS 실습 화면 실습 환경 : Webgoat
XSS 공격 실습
Reflected XSS 실습-2 1. Reflected XSS 실습 화면 소스 확인.
2. 텍스트 111 입력되어 있는 것을 확 인하여 소스 내에 value 값이 111인 부분을 검사.
실습 환경 : Webgoat
XSS 공격 실습
Reflected XSS 실습-3 Enter your three digit access code 에 다음과 같은 스크립트를 입력
111'>
실습 환경 : Webgoat
XSS 공격 실습
Reflected XSS 실습-4 입력 후 Purchase를 클릭하면 성공 메시지와 함께 입력했던 사이즈에 네이버 팝업 창이 나오게 된다.
실습 환경 : Webgoat
XSS 공격 실습
Reflected XSS 실습-5 이전 실습과 마찬가지로 해당 스크 립트를 입력
111'>
실습 환경 : http://testphp.vulnweb.com/
XSS 공격 실습
Reflected XSS 실습-6 입력 후 go 버튼을 클릭하면 111검 색 결과와 함께 네이버 팝업 창이 실행된다.
실습 환경 : http://testphp.vulnweb.com/
HTTPONLY COOKIE
-
2002년 MS IE6.0 SP1에서 최초 지원
-
클라이언트 브라우저에서 쿠키가 생성 될 때 httponly 옵션이 있으면 클라이언트 스크립트 쿠키 요청에 대해서 브라우저는 응 답을 하지 않는다. (document.cookie메소드를 통해 쿠키정보 획 득이 불가능)
-
XSS를 이용한 쿠키 유출에 대응하기 위해 개발
T hank Y ou