정의
웹 서버와 클라이언트간 통신 방식인 HTTP 프로토콜 동작과정 중에 발생.
브라우저로 전달되는 데이터에 악성 스크립트가 포함되어 개인의 브라우저에서 실행되면서 해킹 시도.
공격자가 웹 서버에 구현된 웹 애플리케이션의 XSS 취약점을 이용해 서버 측 또는 URL에 미리 삽입.
사용자가 입력하는 데이터를 검증하지 않거나, 출력 시 위험 데이터를 무효화시키지 않아 발생
종류
1. Stored XSS
취약한 웹서버에 XSS 공격 스크립트를 삽입해 두고(ex. 게시글, 사용자 프로필 등) 해당 페이지에 사용자가 방문할 경우 사용자의 웹브라우저를 공격하는 방식
- 공격자가 서버에 악성스크립트 저장
- 사용자가 악성코드가 저장돼 있는 페이지에 정보 요청
- 서버가 사용자에게 악성 스크립트 전달
- 사용자 브라우저에서 악성 스크립트 실행
2. Reflected XSS
서버가 외부에서 입력받은 값을 받아 브라우저에게 응답할 때 입력되는 변수의 위험한 문자를 사용자에게 그대로 돌려주면서 발생하는 취약점. 공격자는 악성 URL을 배포해 클릭하도록 유도하며, Shorten URL 등을 이용해 URL을 변조하는 경우가 많음.
- 공격자가 서버에 존재하는 XSS 취약점 발견
- 민감한 정보를 획득할 수 있는 공격용 악성 URL을 생성해 배포
- 피해자가 URL을 클릭하면 악성 스크립트가 피해자로 반사되면서 공격 실행
3. DOM based XSS
피해자의 브라우저가 HTML 페이지를 구문 분석할 때마다 공격 스크립트가 DOM 생성의 일부로 실행되면서 공격. 위의 두 방식은 악성코드가 서버 측 애플리케이션 취약점으로 인해, 응답 페이지에 악성 스크립트가 포함되어 브라우저로 전달되면서 공격하는 것인 반면, DOM 기반 XSS는 서버와 관계없이 브라우저에서 발생하는 것이 차이점이다
피해사례
1. 쿠키 정보/세션 ID 탈취
쿠키값에 기록된 사용자의 로그인 등의 정보를 탈취하거나 사용자의 합법적인 세션 ID를 획득해 공격자가 정상 사용자로 위장
2. 시스템 관리자 권한 획득
사용자 브라우저가 악성 코드를 실행하는 경우, 브라우저의 취약점을 이용해 사용자의 시스템을 장악
3. 악성코드 다운로드
악성 스크립트가 삽입된 URL을 클릭하도록 유도해 악성코드를 받는 사이트로 리다이렉트
대응방안
1. 입출력값 검증
공격에 이용되는 특수문자들(<, >, & ...)과 코드(script 등의 구문)들을 필터링해 검증한다.
2. 보안 라이브러리 사용
일일이 검증해내기 어려울 경우 라이브러리를 사용한다. ASP의 AntiXSS, OWASP ESAPI 등이 대표적이다.
[참고글]
KISA. 크로스 사이트 스크립팅(XSS) 공격 종류 및 대응 방법
alert가 막힌 경우 confirm이나 prompt로 우회
'공부 > 웹해킹' 카테고리의 다른 글
[CVE] CVE-2017-12617 실습 (0) | 2019.11.17 |
---|---|
[SQL] Oracle SQL Injection (0) | 2019.10.16 |
SQL Injection (0) | 2019.06.24 |
인코딩, 디코딩, 해시 (0) | 2019.06.24 |