오늘은 XSS 공격 기법에 대해 알아볼거다
XSS란 크로스 사이트 스크립팅인데 워낙 되게 유명한 공격 기법이라서 웹 해킹을 배웠다면 다들 알고 있을 것이다
입력값에 코드를 넣으면 입력값이 그대로 코드대로 실행 되는 건데 이걸로 alert()같은걸로 테러 할 수 있다
<script>alert("XSS")</script>
기본적인 공격 예시이다 node js를 해 봤다면 더더욱 이해가 가는 구문일 것 이다.
공격 기법에 따라 Stored XSS와 Reflected XSS로 나뉘는데 대부분 발생하는 XSS는 Stored XSS가 대부분이다
Stored XSS는 사이트 게시판이나 댓글 등 DB나 서버에 저장 되는 식으로 서버나 DB가 꺼내 올 때 마다 실행이 되는 방식이며 Reflected XSS는 보통 URL 파라미터에 스크립트에 넣어 실행하는 방식이다
Reflected XSS예시:
http://호스트/result?input=<script>alert("XSS")</script>
보안기법은 보통은 필터링이 대표적인데 사용자의 입력값을 전부 필터링하는 것이 정말 중요하다
필터링 방법은 여러가지로 나뉜다
1.공백처리
"script"->"" script라는 단어를 공백으로 처리 하는 방법이 있다 하지만 script 안에 script를 넣으면
scrscriptipt->script
이런 식으로 우회가 가능해서 쓰면 안된다
2. 실행 불가
script, <,> 등 스크립트가 실행 될 만한 단어들이 감지 된다면 코드 실행을 하지 않게 하는 것이지만 1번에 비해 비교적 안전 하지만 여전히 블랙 리스트 우회같이 필터링 목록에 없는 스크립트는 틈을 파고 들어 실행이 가능하다
3. CSP 방어 기법
CSP방어 기법이란 코드의 출저URL에 따라 코드를 실행을 할건지 안할건지 정하는 방어기법인데 상당히 좋은 방어 기법이지만 정책대로 방어 기법을 제대로 따르지 않으면 결금 틈이 생겨 XSS가 터질 수도 있다
CSP는 웹해킹에 배워야 하는 기법 이므로 꼭 배우길 바란다
4.꺽쇠 필터링
정말 간단하면서도 CSP는 저리 가라 할 정도의 보안 강도를 자랑하는 꺽쇠 필터링이다
<,>를 공백 처리만 해도 XSS는 그냥 불가능하다고 보면 된다 스크립트 실행을 위해선 꺽쇠가 필연적으로 필요하지만
필터링 대상이 단일 문자이기에 1번 방식대로 우회도 안된다.
'해킹 공격' 카테고리의 다른 글
[NOOBHACK] Fream Pointer Overflow 취약점 (FPO) (0) | 2023.02.08 |
---|---|
[NOOBHACK] 버퍼 오버플로우 BOF(buffer overflow) (0) | 2022.08.18 |
[NOOBHACK] 중간자 공격 MITM (0) | 2022.08.15 |
[NOOBHACK] blind SQL injection 공격 기법 (BLIND) (0) | 2022.08.05 |
[NOOBHACK] SQL injection 공격 구문 (0) | 2022.08.05 |