XSS (Cross Site Scripting) 공격을 통해 웹 사이트의 보안을 취약하게 할 수 있는 툴이 있다.
Burp Suite 라는 툴인데, 이 툴을 이용하게 되면 javascript를 이용한 validation체크를 우회할 수 있다.
이 말은 웹 사이트의 보안을 유지하려면 client단에서의 javascript 유효성 체크뿐만 아니라 서버단에서의 유효성 체크도 해야 한다는 것이다. 간혹 우리 개발자들은 바쁘고 시간이 없다는 이유로 클라이언트의 유효성 체크만 하고 넘어가는 경우가 비일비재하다. 물론 나 또한 그런 경험이 있다.
Burp Suite의 동작 원리는 간단하다.
1. local PC 웹 브라우저에서 naver.com HTTP request
2. proxy server(Burp Suite)
3. 네이버 사이트 접속
4. 네이버 사이트 HTTP response
5. Proxy server(Burp Suite)
6. local PC 웹 브라우저
위의 순서를 보면 HTTP 요청과 응답 시 항상 proxy server를 거쳐 데이터가 이동하게 되는데 이곳에서 웹 사이트의 우회 공격을 할 수 있게 조작을 할 수 있는 것이다.
가령 response 응답의 HTML에서 자바스크립트 패스워드 유효성 체크 로직 부분을 삭제한 후 local PC 웹 브라우저에 return하게 되면 사용자 웹 브라우저에는 패스워드 검증 로직은 삭제되어 있는 HTML 결과 페이지를 받게 되는 것이다.
또 한 가지 SMS 인증과 같은 예를 들 수 있다.
HTTP/1.0 200 OK
Date: Wed, 28 Nov 2012 17:19:49 GMT
Server: Apache
Pragma: no-cache
Expires: Thu, 01 Jan 1970 00:00:00 GMT
Cache-Control: no-cache
Cache-Control: no-store
Content-Length: 38
Connection: close
Content-Type: text/plain
{“check”:0,”msg”:”MOBILE_AUTH_FAIL”}
위와 같이 서버로부터 response를 받으면 proxy server가 이를 가로채고 Burp Suite tool을 이용하여 데이터를 조작 후 브라우저로 response 보낼 수 있다.
다음과 같이 데이터를 조작하여 SMS 인증을 받고, 다음 절차로 진행할 수 있는 것이다.
{“check”:1,”msg”:”MOBILE_AUTH_SUCCESS”}
XSS 공격 테스트를 위한 Burp Suite 설정은 간단하다.
1.
http://portswigger.net/burp/ 에서 다운로드 받는다. jar로 되어 있고, 로컬 PC에 Java JDK가 설치되어 있어야 한다.
2.
Burp Suite 실행 > Proxy 탭 이동 > 바로 아래에 있는 Options 클릭 후 다음과 같이 설정
127.0.0.1:8080과 같이 설정
3.
IE > 도구 > 인터넷 옵션 > 연결 탭 이동
“LAN 설정” 버튼 클릭 후 프록시 서버 지정
주소 : 127.0.0.1
포트 : 8080
4.
Proxy 탭의 Intercept 클릭
Intercept is on 클릭
IE에서 테스트할 URL 입력하면 화면이 멈추게 되는데 이때 Burp Suite 화면에 가서 Forward를 클릭하면 정상적으로 페이지 로딩이 된다.