XSS란?
Cross Site Scripting의 약자로 CSS라고 불리는게 맞으나 Cascading Style Sheets의 약자로 널리 쓰이고 있어 혼동을 피하기 위해서 XSS라고 부릅니다.
XSS는 악성 스크립트를 웹 브라우저를 통해 실행시키는 취약점입니다.
XSS의 종류는 크게 3가지가 있는데 아래와 같습니다.
- Reflected XSS
- Stored XSS
- DOM-Based XSS
Reflected XSS
Reflected XSS는 악성 스크립트가 담긴 요청을 수행 할 때 발생하는 XSS입니다.
Example
아래와 같이 URL의 파라미터를 통해 XSS구문을 입력 후 요청하자 XSS 구문이 동작하는 것을 알 수 있습니다.
Stored XSS
Stored XSS는 악성 스크립트가 서버에 저장되어 서버의 응답에 담겨오는 XSS입니다.
Example
아래와 같이 글을 저장 할 수 있는 곳에 XSS 구문을 입력하여 저장을 해주었습니다.
XSS가 담긴 글을 조회하게 되면 아래와 같이 XSS구문이 동작하는 것을 볼 수 있습니다.
Bypass XSS Filter
Event Handler
이벤트 핸들러란 특정 요소에서 발생하는 이벤트를 처리할 수 있는 callback 형태의 함수입니다.
대표적으로
onload
, onerror
, onfocus
가 자주 사용됩니다.onload
태그가 요청하는 데이터가 성공적으로 로드 시 실행됩니다.
<img src="정상적인 이미지 주소" onload=alert(document.cookie)>
onerror
태그가 요청하는 데이터가 로드되지 않았을 경우 실행됩니다.
<img src=”비정상적인 이미지 주소” onerror=alert(document.cookie)
onfocus
<input>
, <textarea>
, <select>
, <button>
등 태그에 커서를 클릭하게 되면 실행됩니다.<input onfoucs=alert(document.cookie) type=text id=inputID>
문자열 치환
JavaScript Schemes
특수문자 포함
HTML Entity Encoding
Unicode escape sequence
Computed member access
Template Literals
진수 변환 이용
XSS Cheat Sheet
xss-payload-list
payloadbox • Updated Mar 27, 2024