DOM Based XSS
XSS에 사용되는 악성 스크립트가
URL Fragment에 삽입되는 XSS
[ Low ]

DOM Based XSS 탭에 들어오면 언어를 선택할 수 있도록 되어있다.이 중 English 를 선택해보았다.

English를 선택하고 Select 버튼을 누르니 URL 파라미터에 선택한 언어가 담겨있는 모습을 확인할 수 있다.

선택한 언어가 URL에 담겨 페이지를 구성하도록 하는 코드를 개발자 모드로 확인할 수 있었다.

이를 바탕으로 클라이언트의 브라우저에서 실행 가능한 스크립트인 쿠키를 출력하는 코드를 default=뒤에 작성하여
전송한 결과 쿠키 정보가 정상적으로 출력되는 모습을 확인할 수 있다.
하지만 이는 URL Parameter에 스크립트를 작성하여 전송하였기 때문에, 서버의 응답으로부터 받는 XSS 라고 볼 수 있다.
DOM Based XSS는 서버의 요청과 응답에 포함되지 않는 Fragment를 활용한 XSS 이기 때문에,# 뒤에 스크립트를 작성하여 요청을 보내보았다.

브라우저 단에서 정상적으로 스크립트가 실행된 모습을 확인할 수 있다.

이 상태에서 다른 언어도 선택해보았다.

다른 언어를 선택하였음에도 fragment에 작성된 스크립트가 정상적으로 실행되는 모습을 확인할 수 있었다.
[ Medium ]

Medium 난이도의 DOM Based XSS를 실습해보겠다.

소스 코드를 확인해 보았을 때, stripos 함수를 활용하여 <script 문자열 검증을 하고 있다.

Low 레벨의 스크립트를 그대로 활용하여 XSS를 시도해보았으나 별 반응이 없었다.

img 태그를 사용하여 XSS를 시도해 보았으나, 소용이 없었다.

개발자 모드로 HTML 코드를 확인해 본 결과, 언어 선택을 하는 부분에 <option> 태그가 사용된 것을 알 수 있었다.
이때 사용하는 <select> 태그에는 텍스트만 삽입이 가능하다고 한다.
즉, 이 태그를 강제로 닫아주어야 XSS가 가능하다는 것이다.

</select> 로 <select> 태그를 닫아주니 XSS가 실행된 모습을 확인할 수 있다.
[ High ]
< 이후 실습 예정 >
'Web-Hacking > DVWA' 카테고리의 다른 글
| [DVWA 실습] SQL Injection (0) | 2024.01.28 |
|---|---|
| [DVWA 실습] CSRF (0) | 2024.01.21 |
| [DVWA 실습] Reflected XSS (0) | 2024.01.12 |
| [DVWA 실습] Stored XSS (0) | 2024.01.12 |