XSS란
검증되지 않은 입력이 브라우저에서 악성 스크립트로 실행될 때 발생하는 취약점
특징
- 웹사이트가 악성 자바스크립트를 반환하도록 조작
- XSS 테스트할 때는 alert 함수 주로 사용
공격 유형
1. 반사형(Reflected) -HTTP 요청으로 받은 데이터를 안전하지 않게 즉시 응답에 포함할 때 발생함
- 사용자의 정보 열람 및 변경 가능
- 피해자의 입장에서 다른 사용자와 상호작용 가능
- 공격을 위해 외부 전달 수단 필요(링크,이메일 등)
ex) https://12345.com/search?term=<script>alert('bad stuff')</script>
는 url에 인코딩을 하지 않아 악성 url을 제작한 것이고 이에 반응한 응답은
You searched for: <script>~~</script>
2. 저장형(Stored) - 애플리케이션이 신뢰할 수 없는 출처로부터 받은 데이터를 저장하고 HTTP 응답에서 저장된 데이터를 안전하지 않게 포함하면 발생
- 외부 전달 링크 필요 X
- 공격자가 한 번 저장해두면 사용자가 나중에 해당 페이지에 접속했을 때 공격 노출
3. DOM 기반 XSS - 자바스크립트가 사용자 제어 가능한 입력을 받아 위험한 함수로 전달할 때 발생
- 클라이언트 측에서 발생
- 서버 로그에 흔적이 남지 X
- URL에 데이터 입력 -> 그대로 DOM에 출력 -> 브라우저에 악성 자바스크립트 실행
ex) <img src=x oneerror=alert('warning')> 해당 페이로드를 브라우저가 검색창에 넣은 뒤 이미지가 로드되지 않으면 alert코드 실행
실습
Lab: Stored XSS into HTML context with nothing encoded | Web Security Academy
Web Application Security, Testing, & Scanning - PortSwigger
PortSwigger offers tools for web application security, testing, & scanning. Choose from a range of security tools, & identify the very latest vulnerabilities.
portswigger.net

먼저 버프스위트에 접속한 뒤 Target Scope에 사이트 주소를 추가하여 테스트 대상 사이트를 명확하게 해준다. 이 과정을 거치면 무분별한 트래픽 캡처를 막을 수 있다.

문제에 들어가면 블로그 글에 댓글을 작성할 수 있는 칸이 나오는데 그곳에 이름,이메일,웹사이트 주소를 형식에 맞춰 아무렇게 넣어주었다.

댓글을 업로드 한 뒤 패킷을 확인해보면 내가 작성한 정보들이 나열되어 있다.

그 중 코멘트 부분에 저장형XSS 페이로드를 입력해주었다. 공격이 성공할 시 브라우저 화면에 'no' 메시지를 띄우는 알림창이 실행된다.

포워드하고 문제에 다시 접속해보니 문제가 풀렸다!

과제
Lab: Reflected XSS into HTML context with nothing encoded | Web Security Academy
Web Application Security, Testing, & Scanning - PortSwigger
PortSwigger offers tools for web application security, testing, & scanning. Choose from a range of security tools, & identify the very latest vulnerabilities.
portswigger.net

문제에 접속하니 실습과 동일하게 블로그 글들이 올라와있다. 검색 기능은 사용자가 입력한 내용을 서버가 처리한 후, 그 내용을 바로 웹페이지에 출력하기 때문에 이번엔 블로그 글을 검색할 수 있는 창에 아무거나 입력하고 버프스위트로 패킷을 확인해보았다.

search 옆부분에 페이로드를 입력하였다.


성공!
'웹해킹' 카테고리의 다른 글
| CSRF (0) | 2025.11.19 |
|---|---|
| Authentication vulnerabilities (0) | 2025.11.11 |
| Path traversal (0) | 2025.10.28 |
| Command injection (0) | 2025.09.30 |
| SQL Injection (0) | 2025.09.24 |