[반사된 XSS의 정의]
반사된 XSS란 웹 페이지 URL에 존재하는 파라미터에 악의적인 스크립트 코드를 입력하여 사용자가 URL을 클릭하면 파라미터에 입력한 악성 스크립트 코드가 실행되게 하는 공격이다. 스크립트 코드가 포함된 URL을 메일로 전송하거나 게시물로 등록하여 사용자가 클릭하도록 유도한다.
[GET]
xss_get.php 페이지에 XSS 취약점이 존재하는지 알아보기 위해 First name 입력란에 "<script>alert('Succeed');</script>" 스크립트 코드를 입력한다.
스크립트 코드가 실행되면 'Succeed'라는 경고창을 출력한다.
경고창에 있는 확인 버튼을 클릭하면 기존 페이지를 보여주는데 First name에는 스크립트 코드를 입력하였기 때문에 Last name에 입력한 값만 출력한다.
[POST]
1. 작은 따옴표를 우회하지 않는 경우
xss_post.php 페이지는 POST 메소드를 사용하여 HTTP 연결 요청을 하는 페이지다. XSS 취약점이 존재하는지 알아보기 위해 First name 입력란에 "<script>alert('Succeed');</script>" 스크립트 코드를 입력한다.
스크립트 코드가 실행되면 'Succeed'라는 경고창을 출력한다.
경고창에 있는 확인 버튼을 클릭하면 기존 페이지를 보여주는데 First name에는 스크립트 코드를 입력하였기 때문에 Last name에 입력한 값만 출력한다.
2. 작은 따옴표를 우회하는 경우
XSS 취약점이 존재하는지 알아보기 위해 First name 입력란에 "<script>alert('Succeed');</script>" 스크립트 코드를 입력한다. 그러나 작은 따옴표를 우회하기 때문에 'Succeed'라는 경고창이 출력되지 않는다.
작은 따옴표가 있는 문자열 출력 스크립트 코드 대신에 작은 다옴표가 없는 "<script>alert(document.cookie)</script>
" 쿠키 값 출력 스크립트 코드를 입력해본다.
스크립트 코드가 실행되면 쿠키 값이 적혀있는 경고창을 출력한다.
경고창에 있는 확인 버튼을 클릭하면 기존 페이지를 보여주는데 First name에는 스크립트 코드를 입력하였기 때문에 Last name에 입력한 값만 출력한다.
작은 따옴표를 사용하지 않고도 문자열을 출력하는 "<script>alert(String.fromCharCode(83, 117, 99, 99, 101, 100, 33))</script>" 스크립트 코드도 존재한다. 스크립트 코드에 사용하는 'String.fromCharCode' 함수는 자바 스크립트 내장 함수로 인자로 받는 아스키코드나 유니코드를 문자열로 반환한다.
스크립트 코드가 실행되면 'Succeed!'라는 경고창을 출력한다.
경고창에 있는 확인 버튼을 클릭하면 기존 페이지를 보여주는데 First name에는 스크립트 코드를 입력하였기 때문에 Last name에 입력한 값만 출력한다.
xss_post.php 페이지에는 입력란이 존재해서 버프 스위트를 사용하지 않아도 스크립트 코드 입력이 가능하지만, 변수가 드러나지 않는 POST 메소드를 사용하여 요청하는 페이지에 XSS를 할 때는 위와 같이 버프 스위트를 사용한다.
스크립트 코드가 실행되어 'String.fromCharCode' 함수에 인자로 들어간 아스키코드를 문자열로 출력한다.
'웹 > 비박스' 카테고리의 다른 글
비밀번호 변경 & 비밀번호 힌트 변경 (0) | 2022.07.31 |
---|---|
서버 측 요청 변조 (0) | 2022.07.31 |
세션 관리 취약점 (0) | 2022.07.17 |
Blind SQL Injection - Time Based (0) | 2022.07.07 |
Blind SQL Injection - Boolean Based (0) | 2022.07.05 |