HOME
home
CV News
home

Cross-Site-Script #3

속성
WEB
날짜
이번에는 스크립트 영역 내에서 발생하는 XSS에 대해서 정리하고자 한다.
스크립트 영역 내에서 발생한다는게 무슨 말일까?
위 그림처럼 내가 입력하는 값이 자바스크립트 영역에 입력되는 경우가 자주 있다.
이런 경우엔 어떻게 해야할까? 우선 자바스크립트 영역 내에 있으니 <script>alert(1)</script> 이렇게 기본 구문을 넣을 필요가 없다. 이미 스크립트 영역 내에 있으니 alert만 써주면 되는 것이다.
하지만 alert(1);을 입력해도 아무런 반응이 없다.
이유는 뒤에 오는 "; 때문에 구문 오류가 발생 해 스크립트 전체가 동작을 하지 않게 된다. 원본 소스코드에서는 invalid=""; 라고 되어있었던 것을 alert을 삽입함으로써 invalid=""; alert(1); ";와 같은 형태로 변형 되었기 때문이다.
이번엔 뒤쪽에 구문오류가 발생하는 부분을 주석처리를 해주어 오류가 발생하지 않게 만들었다. 하지만 여전히 동작하지 않는다. 이유가 뭘까?
소스코드를 보면 HTML에서 validatePwd() 라는 함수를 호출해주는 곳이 없다. 즉 해당 함수는 실행되고 있지 않은 상태이기 때문에 alert이 제대로 들어갔음에도 동작하지 않는 것이다.
이럴때에는 해당 함수의 영역을 뜻하는 }(중괄호)를 닫아 함수 영역에서 벗어나온 뒤 alert을 사용하고 뒤에 있는 코드들이 에러가 발생하지 않도록 임의의 function을 추가해 주면 스크립트가 동작한다