이 페이지는 POST 메소드를 사용하여 HTTP 연결 요청을 하는 페이지이다.
[난이도 하]
이제 익숙하니 바로 <script>alert(document.cookie)</script> 구문을 넣어보자.
쿠키값이 노출되었다.
[난이도 중]
이번에도 같은 구문이다. 아마 addslashes 함수로 필터링을 하고 있어 <script>alert(document.cookie)</script> 스크립트는 먹힐 것 같다.
세션값이 노출되었다. 한번 alert 구문에 문자열을 출력해보자.
alert로 hello world를 출력해보도록 해보자.
보다시피 문자열 출력은 ' 나 " 가 들어가기 때문에 addslashes 필터링에 걸려 막힌다. 그렇다면 문자열은 출력할 수 없는 것일까? String.fromCharCode 자바 스크립트 내장 함수를 이용하면 인자로 받는 아스키코드나 유니코드를 문자열로 반환해 주기 때문에 ' 나 " 를 쓰지 않고도 문자열 출력이 가능하다.
<script>alert(String.fromCharCode(83,117,99,99,101,101,100,33))</script> 스크립트 코드를 삽입하여 문자열을 출력했다. 함수 안의 인자값에 들어가는 숫자는 아스키 코드이다.
POST 방식이기에 만약 이 페이지처럼 입력 폼이 존재하지 않는다면 버프 슈트를 이용해 스크립트를 삽입할 수 있다.
이처럼 firstname 과 lastname 변수에 같은 스크립트 코드와 값을 넣어주고 Forward 시켜주면 같은 반응이 일어난다.
addslashes 함수는 ' "를 필터링 하지만 이처럼 '와 "를 사용하지 않고 우회할 수 있는 취약점이 존재하기에 여전히 위험하다.
[난이도 상]
이번 페이지는 아예 문자열화 시켜 출력한다.
난이도 상은 htmlspecialchars 함수를 통해 스크립트 구문을 필터링 하고 있었다.
'3. 웹 애플리케이션 취약점 진단 > 비박스를 활용한 웹 애플리케이션 취약점 진단' 카테고리의 다른 글
[비박스를 활용한 웹 취약점 진단] 7-6.크로스 사이트 스크립팅 [Reflected XSS-AJAX/JSON] (0) | 2023.12.13 |
---|---|
[비박스를 활용한 웹 취약점 진단] 7-5.크로스 사이트 스크립팅 [Reflected XSS-JSON] (0) | 2023.12.13 |
[비박스를 활용한 웹 취약점 진단] 7-3.크로스 사이트 스크립팅 [Reflected XSS-GET] (0) | 2023.12.13 |
[비박스를 활용한 웹 취약점 진단] 7-2.크로스 사이트 스크립팅 [Stored XSS-User Agent] (0) | 2023.12.13 |
[비박스를 활용한 웹 취약점 진단] 7-1.크로스 사이트 스크립팅 [Stored XSS-Change Secret] (0) | 2023.12.13 |