1. XSS(Cross-Site Stripting)이란
클라이언트 측 스크립트(코드)를 삽입해서 클라이언트의 브라우저에서 실행되게 만드는 공격
2. 공격 유형
Stored XSS
서버에 스크립트를 저장하는 방식
광역으로 시전이 가능하지만, 특정인을 지정해서 공격할 수 없고 서버에 기록이 남는다
Reflected XSS
서버에 스크립트를 저장하지 않는 방식
서버에서 반사시킨 값을 이용하는 공격
URL에 링크를 담아서 보내는 방식(GET방식을 사용, POST 사용불가)
DOM Based XSS
DOM: Document Object Model
임의의 Document 객체를 삽입하여 실행시키는 공격이다.
3. 공격 방법
1) 값을 입력했을 때 그 값이 나오는지 확인
2) HTML 특수문자 필터링 여부 확인 <, ", ', >
3) POC 코드를 입력하여 적용되는지 확인 ex) <script>alert(1);</script>
4) 공격용 구문을 넣어서 공격
4. Anti XSS Bypass
Black List 기반 필터링
-> 우회 기법들이 계속 생겨난다.
Client Side 검증 우회
-> 프록시 툴을 이용하면 의미가 없어진다.
Script Load
-> ", ', alert function 등을 막았을 때 스크립트를 로드시키는 방법이다.
글자수 제한이 걸릴 때 유용하게 사용할 수 있다.
대소문자 혼용
<script> -> <ScRiPt>
필터링되는 문자
<script> -> <scrscriptipt>
이벤트 핸들러
<img src=x onerror="alert(1)">
onload, onactivate...
5. 대응 방안
HTML 특수 문자들을 HTML Entity로 치환한다.
만약 사이트에서 HTML Editor 게시판을 사용하면 문제가 된다.
HTML Editor 게시판을 잘 안 쓰는 곳은 기능을 막아달라고 하고
기능을 잘 사용하는 곳은
HTML 특수 문자들을 HTML Entity로 치환하고
<img src= >
%lt;img src= >
White List 기반으로 살려줄 태그를 정한다.
img, p, a
<img src= >
그리고 Black List 기반으로 이벤트 핸들러를 필터링한다.
onerror, onload 등
<img src= >
'공부 > 해킹 과제' 카테고리의 다른 글
CSRF와 SSRF (0) | 2023.05.26 |
---|---|
CSRF 1 (0) | 2023.05.19 |
XSS 2 (0) | 2023.05.13 |
XSS 1 (0) | 2023.05.05 |
SQL Injection 정리 (0) | 2023.05.05 |