이번 5주차 웹 해킹 스터디에서는 xss 관련 강의를 듣고 문제를 푸는 과제가 나왔다.
1. https://youtu.be/DoN7bkdQBXU
xss공격은 특정한 자바스크립트를 취약점을 이용해 웹 사이트 내의 정보를 빼오는 작업이다.
이 강의에서는 xss보안처리가 되어있지 않은 사이트에서 게시글에 스크립트 문장을 넣어 실행하는 stored xss 공격의 예시들을 보여주고 있다.
2. https://dreamhack.io/learn/7#8
로그인 | Dreamhack
로그인 자동 로그인 비밀번호 찾기 로그인 드림핵이 처음이신가요? 회원가입
dreamhack.io
Cross Site Scripting 에 대한 드림핵(dreamhack)의 강의.
● XSS(Cross Site Scripting)이란?
서버의 응답에 공격자가 삽입한 악성 스크립트가 포함되어 사용자의 웹 브라우저에서 해당 스크립트가 실행되는 취약점이다.
이 공격이 먹히기 위해서는 입력데이터(스크립트 코드)에 대한 검증이 없어야 하고, 응답 데이터가 출력 시 이 스크립트가 웹 브라우저의 렌더링 과정에 포함되어야 한다.
① Javascript를 이용한 XSS
- 스크립트 태그
<script> alert("XSS warning!); </script>
: 가장 기본적인 공격 방식이다.
- 자바스크립트 태그
<a href = "javascirpt:alert('XSS')"> XSS</a>
:a태그를 이용하여 XSS를 눌렀을 때 alert가 뜨도록 한다.
②Stored XSS
서버 내의 데이터베이스 또는 파일 등의 형태로 저장되어 있다가 사용자가 이 스크립트를 조회할 때 공격이 발생한다.
③Reflected XSS
악성 스크립트가 사용자의 요청과 함께 전송되는 형태이다.
ex) 게시물을 조회하는 과정에서 입력한 데이터에 의해 발생
이렇게 get방식의 search값에 script코드를 넣으면, 서버는 입력 데이터에 대한 충분한 검증을 거치지 않고
다음 알림창을 실행시킨다.
●Mitigations
: XSS를 방어하는 방안
1) Server-side Mitigations
: 서버 단에서 태그 삽입을 방지한다. HTML Entity Encoding 을 이용해 특수문자(꺽쇠, 따옴표)를 태그로 인식하지 않게 하는 것이다.
+ 화이트리스트 필터링 : 허용해도 안전한 일부 태그를 필터링
https://github.com/mozilla/bleach
mozilla/bleach
Bleach is an allowed-list-based HTML sanitizing library that escapes or strips markup and attributes - mozilla/bleach
github.com
위는 HTML 필터링 라이브러리이다.
(어떻게 사용하는지 따로 실습해 보자)
2)HTTPOnly 플래그 사용
: 응답 헤더에 Set-Cookie 헤더를 전송해 자바스크립트에서 해당 쿠키에 접근하는 것을 금지한다.
세션 쿠키를 설정할 때 이 플래그를 사용하면 공격자가 쿠키 값을 알아낼 수 없다.
3) Content Scurity Policy 사용
응답 헤더나 meta태그를 통해 다음과 같이 선언해서 사용할 수 있다.
서버에서 생성된 nonce값을 알 수 있다면 자바스크립트 실행이 불가능,
또한 script-src 'sha256-hashvalue_base64' 처럼 JS와 SS의 해시를 알아내 CSP를 적용하면 이 해시와 다를 경우 실행하지 않도록 할 수 있다.
4) X-XSS-Protection 사용
: 웹 브라우저에 내장된 XSS filter을 활성화 할 것인지 판단한다.
(XSS filter : 요청과 응답 값을 비교 판단 --> Reflected XSS 공격을 막는데 적합한 방어 방법이다. )
이렇게 네 가지 사용법이 있고, 선언하지 않았을 경우 기본값은 1이다.
이렇게 X-XSS-Protection이 1일 경우 XSS 공격이 탐지되면 해당 부분을 제거하고 출력한다.
(mode=block일 경우 XSS 공격이 탐지되면 페이지 전체의 렌더링을 중단하며, report를 선언할 경우에 XSS 공격이 탐지된 사실을 미리 설정한 주소에 신고하여 운영자가 대처하기 쉽도록한다.)
이렇게 xss공격을 하는 법과 방어하는 방법에 대해 알아보았다.
'Other > Web Hacking' 카테고리의 다른 글
IGRUS 웹해킹 5주차 과제 webhacking-kr old.23 Write-up (0) | 2021.01.28 |
---|---|
IGRUS 웹해킹 5주차 과제 XSS game write-up (0) | 2021.01.28 |
IGRUS 웹해킹 4주차 과제 #PHP #워게임 (0) | 2021.01.28 |
IGRUS 웹해킹 3주차 과제 #워게임 (0) | 2021.01.28 |
IGRUS 웹해킹 2주차 과제 #워게임 (0) | 2021.01.27 |