Search

XSS

개요
**XSS(Cross-Site Scripting)**는 공격자가 웹사이트에 악성 스크립트를 삽입하여 다른 사용자의 브라우저에서 실행되도록 하는 공격 기법입니다. XSS는 주로 웹 애플리케이션의 입력 값을 적절하게 검증하지 않을 때 발생하며, 공격자는 이를 이용해 사용자의 쿠키, 세션 정보, 개인 데이터를 탈취하거나, 악성 코드를 실행할 수 있습니다.
공격 탐지 규칙 확인 및 설정 (Suricata & Zeek)
Suricata
1.
Detection - “+” Detection 메뉴 이동 및 “+”버튼 클릭, 룰 추가 메뉴 진입
2.
룰 작성
Language : Suricata
License : GPL-2.0-only
Signature
alert http $EXTERNAL_NET any -> $HTTP_SERVERS any (msg:"XSS Attack Detected"; flow:to_server,established; content:"<script"; http_uri; nocase; classtype:web-application-attack; sid:1000026; rev:1;)
Plain Text
복사
룰 내용 (Signature):
alert http any any -> $HOME_NET any: HTTP 프로토콜을 통해 외부 네트워크에서 내부 네트워크로 들어오는 모든 트래픽을 감시합니다.
msg:"XSS Attack Detected": 탐지된 공격에 대해 "XSS Attack Detected"라는 경고 메시지를 출력합니다.
flow:to_server,established: 서버로 향하는 트래픽 중 연결이 성립된 상태에서만 감시합니다.
content:"<script": HTTP URI에 <script> 태그가 포함되어 있는지 확인합니다. 이는 XSS 공격의 대표적인 패턴입니다.
http_uri: HTTP 요청의 URI 부분을 검사합니다.
fast_pattern: 탐지 성능을 최적화하기 위해 사용됩니다.
nocase: 대소문자를 구분하지 않고 검사합니다.
classtype:web-application-attack: 이 경고를 웹 애플리케이션 공격으로 분류합니다.
sid:1000026: 이 룰의 고유한 식별 번호입니다.
rev:1: 룰의 버전입니다.
공격 지표 확인 및 경고 필터링 (Kibana&zeek)
suricata
알람 발생 확인
kibana & zeek
Alert 로그 발생 확인
Document
하단에서 자세히 확인 (message)
대응 방안
입력값 검증 및 필터링
출력 시 HTML 엔코딩 적용
콘텐츠 보안 정책(CSP) 설정
JavaScript 내 동적 HTML 생성 제한
웹 애플리케이션 방화벽 (WAF) 설정
브라우저 XSS 보호 기능 활용
로그 및 모니터링