자바스크립트가 먹히는지 확인

 

자바스크립트가 안먹힌다.

 

소스보기를 통해 내 스크립트가 어떻게 먹히는지 보기

 

자동으로 br태그가 붙기 때문에 엔터를 없애줌

 

정상 작동 쿠키값 확인

스크립트 방어

script문자열을 공백으로 만든다

 

방어 확인

 

html은 대소문자 구별을 안한다. 우리가 소문자만 검열하게 만들어 놔서 대문자를 섞을 경우 걸러내지 못한다.

 

우회 확인

클라이언트단에서 다음과 같이 소스코드 추가 후 실험
document.write_form.content.value =
document.write_form.content.value.replace(/script/i,"");

 

 

document.write_form.content.value =
document.write_form.content.value.replace(/script/i,"");에서 i
옵션은 대소문자 상관없이 script문자열이 들어가면 모두 필터링 한다.
하지만 우리가 막아 놓은 스크립트는 1회용이다.
 “script”라는 문자열을 써주고 스크립트 코드를 입력하면 그대로 먹힌다.

 

방어
document.write_form.content.value =
document.write_form.content.value.replace(/script/ig,"");
g옵션으로 사용하면 전역으로 필터링하여 script문자열이 어느위치에 있던 모두 필터링해준다.



우회공격
<scrscriptipt>
alert("xss");
</scrscriptipt>


“scrscriptipt“를 이용하면 가운데 script문자열을 없애기 때문에 "scr" + "ipt"문자열이 붙게된다. 그래서 코드를 작성하면 <scrscriptipt> alert("xss"); </scrscriptipt> 위와 같이 작성할 수 있고 정상적으로 스크립트가 실행됨을 알 수 있다.

방어

&lt는 '<'를 의미하며 문자형식 표현이다 특수기호를 막는 역할

적용전

적용후

 

'정보보안 > Web' 카테고리의 다른 글

내장 SQL 활용  (752) 2020.07.15
CSRF(Cross-site request forgery)공격  (0) 2020.07.15
XSS(Cross-Site Script)공격  (0) 2020.07.15
Paros설치 및 세션하이재킹  (0) 2020.07.15
WEB proxy 및 쿠키와 세션  (0) 2020.07.15

+ Recent posts