특징
- 서버 측의 입력값 검증이 미흡할 경우 발생할 수 있는 취약점으로, 공격자가 게시물 또는 URL을 통해 삽입한 악성스크립트가 사용자의 요청에 의해 사용자 측에서 응답하게 되어 발생
- 사용자의 입력값을 받는 모든 곳에서 발생할 수 있으며, 웹 서버 사용자에게 직접적인 영향을 미칠 수 있는 공격 기법
- 게시물 또는 URL에 포함된 악성스크립트가 동작하여 발생하는 취약점이기 때문에 불특정 다수를 대상으로 공격 시도 가능
- 발생할 수 있는 피해는 스크립트 구문에 따라 사용자 쿠키 값 탈취를 통한 권한 도용과 세션 토큰 탈취, keylogger 스크립트를 삽입하여 키보드 입력값 탈취 등이 가능
- 피싱 사이트와 같은 악성 사이트로의 접근 유도가 가능하며 사용자에게 직접적인 피해 발생
공격유형에 따른 분류
Stored XSS (저장형 크로스사이트 스크립팅)
- 공격자의 악성스크립트가 데이터베이스에 저장되고 이 값을 출력하는 페이지에서 피해가 발생하는 취약점
- 공격자는 악성스크립트가 포함된 게시물을 작성하여 게시판 등 사용자가 접근할 수 있는 페이지에 업로드, 이때 사용자가 악성스크립트가 포함된 게시물을 요청하면, 공격자가 삽입한 악성스크립트가 사용자 측에서 동작
- 공격자의 악성스크립트가 서버에 저장되어 불특정 다수를 대상으로 공격에 이용될 수 있어 Reflected XSS보다 공격 대상의 범위가 훨씬 큼
- 가장빈번한 공격방식 일반적인 공격방식
Reflected XSS (반사형 크로스사이트 스크립팅)
- 사용자가 요청한 악성스크립트가 사용자 측에서 반사(Reflected)되어 동작하는 취약점으로, 공격자의 악성스크립트가 데이터베이스와 같은 저장소에 별도로 저장되지 않고 사용자의 화면에 즉시 출력되면서 피해가 발생
- 공격자는 악성스크립트가 포함된 URL을 이메일, 메신저 등을 통해 사용자가 클릭할 수 있도록 유도
- 사용자가 악성스크립트가 삽입된 URL을 클릭하거나 공격자에 의해 악의적으로 조작된 게시물을 클릭했을 때 사용자의 브라우저에서 악성스크립트가 실행
- 공격자 추정 하기 힘듦
DOM Based XSS (DOM 기반 크로스사이트 스크립팅)
- 공격자의 악성스크립트가 DOM 영역에서 실행됨으로써 서버와의 상호작용 없이 브라우저 자체에서 악성스크립트가 실행되는 취약점
- DOM 영역에 변화가 생기면 브라우저는 서버로 패킷을 보내지 않고 DOM 영역에서 페이지를 변환
- 따라서 DOM의 일부로 실행되기 때문에 브라우저 자체에서 악성스크립트가 실행
- 문서기반의 공격
대응방안
- 웹 서버에서 입력 값에 정의된 문자 길이를 제한 또는 검증하여 클라이언트 측에서 실행될 수 있는 스크립트 명령이 삽입되지 않도록 설정
- HTML 태그의 사용이 불필요한 경우 사용자의 입력 값에서 HTML 특수 문자들을 HTML Entity로 변환하여 스크립트를 일반 문자열로 인식되도록 설정
- 부득이하게 HTML 태그를 반드시 사용해야할 경우에는 블랙리스트 또는 화이트리스트 방식을 이용해 반드시 사용해야만 하는 특정 태그만 사용할 수 있도록 설정
- 웹 방화벽(WAF, Web Application Firewall)를 사용하여 비정상적인 데이터가 전송될 경우 차단
Reference
https://blog.naver.com/sk_shieldus/222902533919
https://velog.io/@swj9077/XSS-공격의-유형과-대처방법
'CERT' 카테고리의 다른 글
웹취약점: 에러처리 취약점 (0) | 2024.08.16 |
---|---|
SQL Injection 취약점 (0) | 2024.08.16 |
웹 쉘 (0) | 2024.08.16 |
웹취약점: 기타 취약점 (0) | 2024.08.16 |
웹취약점: 파일 업로드 취약점 (0) | 2024.08.16 |