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 방식 공격자는 먼저 A사이트에 XSS 취약점이 있는 것을 발견한다. 정보를 획득할 수 있는 공격용 악성 URL을 생성한다. 공격자는 이 URL을 이메일 메시지에 포함하여 배포한다. 4. 피해자가 URL을 클릭하면, 바로 공격 스크립트가 피해자로 반사되어 A 사이트에 관련된 민감한 정보(ID/패스워드, 세션 정보)를 공격자에게 전송한다.
XSS의 종류 Dom 방식 - 조작된 URL을 통해 DOM 데이터에 접근 할 때 사용할 수 있는 DOM 객체를 포함하는 자바스크립트가 존재하는 페이지가 있을때, 사용자 측 브라우저에서 DOM 객체를 통해서 공격 코드는 가지고 와 공격이 실행된다.
XSS의 공격에 의한 피해 쿠키 정보 / 세션 ID 획득 - 세션 쿠키란? - 쿠키란? -> 웹 서버가 HTTP 헤더 중 Set-Cookie 필드로 브라우저에게 보내는 작은 텍스트 파일 사용자가 웹사이트를 이용하는 동안 사용자 브라우저에 저장됨. 사용자 상태를 기록 하기 위해 쿠키 값에 로그인, 버튼 클릭 등에 대한 정보를 저장 - 세션 쿠키란? -> 사용자가 웹사이트를 읽거나 방문하는 동안에만 임시로 메모리에 존재하는 쿠키. 브라우저에서는 사용자가 브라우저를 종료하면 세션쿠키를 삭제한다. @쿠키나 세션 ID 획득 시 불법적으로 정상(일반) 사용자로 가장 가능.
XSS의 공격에 의한 피해 2. 시스템 관리자 권한 획득 PC 통제 가능. => 취약한 웹 서버에 다양한 악성 데이터를 포함 후 사용자가 실행하게 되면 자신의 브라우저에 제로데이 취약점 또는 패치 되지 않은 취약점을 공격하는 공격 코드가 실행되면서 사용자 시스템을 완전히 통제할 수 있다. 이는 회사 등 조직의 내부 시스템으로 이동하여 내부의 중요 정보를 탈취하는 공격으로 이어질 수 있다.
XSS의 공격에 의한 피해 3. 악성 코드 다운로드 - XSS공격 자체만으로 악성 프로그램을 다운 할 수는 없음. - 사용자가 악성 스크립트가 있는 URL을 클릭하도록 유도 하거나 트로이목마 프로그램을 다운로드 하여 설치 할 수 있다.
XSS 공격 예방 방법 화이트 리스트 방식 게시물을 등록하는 페이지에 소스에 해당 언어에 맞는 소스를 추가 해준다. 예시로된 <p>, <br> 뿐만 아니라 <script>등 다양한 문자열을 막아 둘 수 있다.
XSS 공격 실습 Stored XSS 실습-1 실습 환경 : Webgoat Title과 Message 부분에 옆과 같이 입력. Submit 버튼을 눌러 게시물 저장. 실습 환경 : Webgoat
XSS 공격 실습 Stored XSS 실습-2 실습 환경 : Webgoat 게시물이 저장되면 옆과 같이 게시물이 올라간 것을 확인 할 수 있음. 실습 환경 : Webgoat
XSS 공격 실습 Stored XSS 실습-3 실습 환경 : Webgoat XSS TEST 라는 게시물을 클릭하면 다음 그림과 같이 화면에 스크립트 공격 코드가 실행되는 것을 확인할 수 있음. 만일 다른 사용자가 이와 같은 게시물을 열람하면, 공격자가 원하는 스크립트 공격 코드가 실행됨. 실습 환경 : Webgoat
XSS 공격 실습 Stored XSS 실습-4 실습 환경 : http://testphp.vulnweb.com/ 타 사이트http://testphp.vulnweb.com/ 동일한 스크립트 작성 <script>alert(‘xss test’)</script> 실습 환경 : http://testphp.vulnweb.com/
XSS 공격 실습 Stored XSS 실습-5 실습 환경 : http://testphp.vulnweb.com/ 확인 시 이전 실습과 마찬가지로 팝업 창이 생성되는 것을 확인 할 수 있음. 실습 환경 : http://testphp.vulnweb.com/
XSS 공격 실습 Reflected XSS 실습-1 Reflected XSS 실습 화면 실습 환경 : Webgoat
XSS 공격 실습 Reflected XSS 실습-2 실습 환경 : Webgoat 텍스트 111 입력되어 있는 것을 확인하여 소스 내에 value 값이 111인 부분을 검사. 실습 환경 : Webgoat
XSS 공격 실습 Reflected XSS 실습-3 실습 환경 : Webgoat Enter your three digit access code에 다음과 같은 스크립트를 입력 111'><script>window.open('http://www.naver.com','_blank',"width=500,height=300")</script> 실습 환경 : Webgoat
XSS 공격 실습 Reflected XSS 실습-4 실습 환경 : Webgoat 입력 후 Purchase를 클릭하면 성공 메시지와 함께 입력했던 사이즈에 네이버 팝업 창이 나오게 된다. 실습 환경 : Webgoat
XSS 공격 실습 Reflected XSS 실습-5 실습 환경 : http://testphp.vulnweb.com/ 이전 실습과 마찬가지로 해당 스크립트를 입력 111'><script>window.open('http://www.naver.com','_blank',"width=500,height=300")</script> 실습 환경 : http://testphp.vulnweb.com/
XSS 공격 실습 Reflected XSS 실습-6 실습 환경 : http://testphp.vulnweb.com/ 입력 후 go 버튼을 클릭하면 111검색 결과와 함께 네이버 팝업 창이 실행된다. 실습 환경 : http://testphp.vulnweb.com/
HTTPONLY COOKIE 2002년 MS IE6.0 SP1에서 최초 지원 클라이언트 브라우저에서 쿠키가 생성 될 때 httponly 옵션이 있으면 클라이언트 스크립트 쿠키 요청에 대해서 브라우저는 응답을 하지 않는다. (document.cookie메소드를 통해 쿠키정보 획득이 불가능) XSS를 이용한 쿠키 유출에 대응하기 위해 개발
Thank You