💻 XSS(Cross-Site Scripting) attack
악의적인 목적을 가진 공격가 웹 사이트에 스크립트를 삽입하는 공격
❗ 취약점 ❗ : 사용자가의 입력값이 웹 브라우저에서 별다른 필터링 없이 실행되기 때문!
예상 피해 : 사용자의 세션 및 정보 탈취, 웹 사이트의 변조, 피싱 공격 진행 등
- 게시판에서 주로 사용되는 공격이지만, 사용자의 입력 값을 웹페이지에 표시하는 곳(블로그) 등에서도 공격이 발생할 수 있음
- 공격자가 C&C 서버로 리디렉션하기 위한 중간 경유지로 활용될 수 있으며, 세션 하이제킹 공격 수행도 가능
XSS의 공격방식
- Cookie Sniffing
- 스크립트 암호화 및 우회
- 악성 스크립트 유포
- Key Logger
- Mouse Sniffer
- 거짓 정보 추가
- etc
XSS의 유형
- Reflected XSS
- Stored XSS
- DOM Based XSS
Reflected XSS
- 삽입된 악성 스크립트를 피해자가 클릭 시 실행 됨
- 1회성 공격
- 피해자가 직접 스크립트를 실행하도록 유도
- 링크 클릭 시 사용자의 쿠키 값이 해커에게 전송
- 피해자가 웹 사이트에 입력한 모든 정보의 노출
Stored XSS
- 저장성 XSS 공격
- 공격자가 삽입한 스크립트가 DB에 저장되어 악성 스크립트가 존재하는 게시글 등을 열람한 사용자는 쿠키 값이 탈취되거나 다른 사이트로 리디렉션되는 공격을 받음
- 사용자가 웹 사이트에 접속 시 실행
- 응용 프로그램 또는 웹 사이트의 모든 HTTP 응답을 감염시킴
- Reflected XSS와는 달리 지속적 공격 유형
DOM Based XSS
DOM이란?
Document Object Model의 약자로, 웹 페이지를 여는 즉시 생성되는 문서 객체 모델이다. DOM은 웹페이지의 컨텐츠와 구조, 스타일 요소를 구조화시켜 프로그래밍 언어가 해당 문서에 접근하여 읽고 조작하기 쉽도록 하게 만들어주는 API를 제공한다.
- HTML에 악성코드가 드러나는 Reflected XSS와 Stored XSS와는 달리, 웹 사이트의 코드를 조사하지 않고는 악성 코드를 발견할 수 없다.
- 악성 스크립트가 삽입된 웹 페이지에 사용자 방문 시, 사용자는 서버로부터 HTML 문서를 전달받고 사용자의 브라우저는 응답받은 HTML 문서를 읽으며 악성 스크립트가 실행된다. 이 악성스크립트를 통해 사용자의 정보는 공격자에게 전달되게 된다.
- HTML 문서를 서버로부터 한 번만 받으면, 이 후에는 서버에게 요청할 필요없이 악성 스크립트 삽입이 가능하다.
XSS 예방
- URL을 확인하는 습관
- XSS에 대한 필터 목록 생성, 필터링 적용
- NordVPN의 바이러스 및 위협 방지 기능 사용 ( 악성 웹사이트 블랙리스트 갱신 )
htmlentities
함수 사용, 특수 문자를 엔티티로 변환
-> 대부분의 브라우저에는 Reflected XSS를 탐지하고 차단하는 보안 기능이 내장되어 있음
🤍 참고자료