Reflected XSS
XSS에 사용되는 악성 스크립트가 URL에 삽입되고
서버의 응답에 담겨오는 XSS
[ Low ]

Reflected XSS 탭에 들어오면 이름을 묻고 입력할 수 있는 칸이 있다.

일단 닉네임인 "hantul"을 입력하고 Submit 버튼을 눌러보았다.

입력칸 아래에 "Hello hantul"이 출력되는 것을 확인할 수 있다.
정상적으로 출력되는 것을 확인하였으니 아래에 View Source 버튼을 눌러 소스코드를 확인해 보았다.

name 칸에 이름이 입력되었을 경우 아무런 필터링 없이 그대로 출력해주는 것을 확인할 수 있다.

필터링이 되지 않는다는 것을 확인하였기 때문에 name 입력칸에 스크립트를 작성 후 Submit 버튼을 눌러보았다.

스크립트가 정상적으로 실행되어 cookie 의 값이 출력된 모습을 확인할 수 있다.
이때, 웹 브라우저의 URL 칸을 확인해보면 현재 창의 URL 주소에 방금 작성한 코드가 포함되어있는 것을 볼 수 있다.
스크립트가 포함된 URL을 사용하여 요청을 보내고, 서버의 응답이 오는 동시에 스크립트가 실행이 된 것이다.

name 입력칸에 작성하지 않고 URL에 바로 스크립트를 작성하고 요청을 보내도 똑같이 스크립트가
실행되는 모습을 확인할 수 있다.
[ Medium ]

난이도를 Medium으로 설정하고 Reflected XSS를 실습해보겠다.

Low 레벨에서 사용한 스크립트를 그대로 사용해보았다.
코드가 실행되지 않는 모습을 확인할 수 있다.

소스 코드를 확인한 결과, 입력받은 문자열에 '<script>' 구문이 존재하는 경우,
str_replace() 함수를 사용하여 공백으로 치환하는 것을 알 수 있다.

필터링을 우회하기 위해 '<script>' 구문을 중첩하여 스크립트를 작성해보았다.

스크립트가 정상적으로 작동하는 것을 확인할 수 있다.

str_replace() 함수는 '<script>' 구문만을 필터링하기 때문에, img, svg, a 등 다른 HTML 태그를
사용할 경우, 그냥 우회가 가능하다.

img 태그를 사용하여 스크립트를 작성한 결과, 정상적으로 작동하는 모습을 확인할 수 있다.
[ High ]
< 이후 실습 예정 >
'Web-Hacking > DVWA' 카테고리의 다른 글
| [DVWA 실습] SQL Injection (0) | 2024.01.28 |
|---|---|
| [DVWA 실습] CSRF (0) | 2024.01.21 |
| [DVWA 실습] DOM based XSS (0) | 2024.01.14 |
| [DVWA 실습] Stored XSS (0) | 2024.01.12 |