본문 바로가기

3. 웹 애플리케이션 취약점 진단136

[비박스를 활용한 웹 취약점 진단] 7-6.크로스 사이트 스크립팅 [Reflected XSS-AJAX/JSON] 이번 페이지는 AJAX 기능을 이용해서 검색어 입력 시 자동으로 데이터베이스를 확인해서 결과를 출력한다. [난이도 하] 페이지에 값을 넣고 버프슈트로 캡쳐해보았는데 2-1 페이지가 아닌 2-2.php 페이지에 대한 HTTP 요청을 가로채며 title 변수를 GET으로 받고 있는것을 확인할 수 있다. 2-1.php 페이지에 스크립트 코드를 넣으면 2-2.php 페이지에서 스크립트가 실행되기 때문에 2-2.php 페이지를 URL에 입력하여 스크립트 실행 여부를 확인할 수 있다. xss_ajax_2-2.php?title= 를 주소창에 넣어줌으로써 세션값을 확인할 수 있었다. 이처럼 AJAX/JSON 환경의 웹페이지에서는 버프슈트를 확인해보아야 할수도 있다. 그리고 확인을 눌러주니 에러에 대한 메시지가 출력되었.. 2023. 12. 13.
[비박스를 활용한 웹 취약점 진단] 7-5.크로스 사이트 스크립팅 [Reflected XSS-JSON] JSON이란? - 클라이언트와 서버가 통신할 때 자료를 표현하는 방법으로 특정 언어에 제한 없이 그대로 사용할 수 있다는 장점이 있으며, 여러 자료 구조를 JSON으로 표현 가능하다. 이번 페이지는 JSON으로 객체를 선언하는 자바 스크립트 코드를 사용하여 검색한 영화 정보를 출력해주는 페이지이다. [난이도 하] 텍스트 입력창에 이름을 넣고 검색하니 GET 방식으로 받아서 화면에 출력되었다. 소스코드를 확인해 보니 스크립트로 검색에 대한 응답을 받는 형태이다. 이미 스크립트를 사용중인 구문에 입력값이 들어가기 때문에 로 우선 기존 스크립트 문을 닫아준 뒤 XSS 구문을 넣어 주어야 할 것이다. 구문을 넣어주었더니 세션값이 노출되었다. 알림창에 확인을 눌러주고 나니 XSS 공격으로 인해서 실행되지 않은 기.. 2023. 12. 13.
[비박스를 활용한 웹 취약점 진단] 7-4.크로스 사이트 스크립팅 [Reflected XSS-POST] 이 페이지는 POST 메소드를 사용하여 HTTP 연결 요청을 하는 페이지이다. [난이도 하] 이제 익숙하니 바로 구문을 넣어보자. 쿠키값이 노출되었다. [난이도 중] 이번에도 같은 구문이다. 아마 addslashes 함수로 필터링을 하고 있어 스크립트는 먹힐 것 같다. 세션값이 노출되었다. 한번 alert 구문에 문자열을 출력해보자. alert로 hello world를 출력해보도록 해보자. 보다시피 문자열 출력은 ' 나 " 가 들어가기 때문에 addslashes 필터링에 걸려 막힌다. 그렇다면 문자열은 출력할 수 없는 것일까? String.fromCharCode 자바 스크립트 내장 함수를 이용하면 인자로 받는 아스키코드나 유니코드를 문자열로 반환해 주기 때문에 ' 나 " 를 쓰지 않고도 문자열 출력이 가.. 2023. 12. 13.
[비박스를 활용한 웹 취약점 진단] 7-3.크로스 사이트 스크립팅 [Reflected XSS-GET] 반사된 (Reflected) XSS란? - 웹 페이지 URL에 존재하는 파라미터에 악의적인 스크립트 코드를 입력해서 사용자가 URL 클릭 시 파라미터에 입력한 악의적인 스크립트 코드가 실행되는 공격이다. 스크립트 코드가 포함된 URL 링크를 메일로 전송하거나 게시물로 등록해서 공격 URL을 인코딩하거나 축약하는 방식으로 속여 유포하며 Stored XSS보단 적은 위협이지만 위험성은 동일하므로 입력 값 검증이 필요하다. [난이도 하] 스크립트를 바로 입력해서 취약점이 있는지 확인해보자. cookie 값이 알림 창으로 출력되었다. [난이도 중] 난이도 중으로 변경한 뒤 똑같은 구문을 넣어보았다. low와 똑같이 세션값이 노출되었다. 난이도 중에서는 addslashes 함수로 필터링을 하고 있었는데 GET 방.. 2023. 12. 13.