[DVWA 실습] DOM based XSS

[ XSS에 대하여 ]

 

DOM Based XSS

XSS에 사용되는 악성 스크립트가

URL Fragment에 삽입되는 XSS

 

 

[ Low ]

DOM Based XSS 탭

 

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

 

URL 파라미터에 언어가 담겨있다.

 

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

 

개발자 모드로 확인한 사이트 코드

 

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

 

 

param에 스크립트를 포함하여 URL 작성

 

이를 바탕으로 클라이언트의 브라우저에서 실행 가능한 스크립트인 쿠키를 출력하는 코드를 default=뒤에 작성하여

전송한 결과 쿠키 정보가 정상적으로 출력되는 모습을 확인할 수 있다.

하지만 이는 URL Parameter에 스크립트를 작성하여 전송하였기 때문에, 서버의 응답으로부터 받는 XSS 라고 볼 수 있다.

DOM Based XSS는 서버의 요청과 응답에 포함되지 않는 Fragment를 활용한 XSS 이기 때문에,# 뒤에 스크립트를 작성하여 요청을 보내보았다.

 

fragment에 스크립트를 작성하여 전송

 

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

 

다른 언어 선택

 

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

 

다른 언어 선택 후에도 스크립트가 실행된 모습

 

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

 

 

 

 

 

[ Medium ]

DOM Based XSS Medium

 

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

 

 

DOM Based XSS

 

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

 

Low 레벨의 스크립트를 활용

 

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

 

img 태그를 활용한 XSS

 

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

 

 

개발자 모드(F12)로 확인한 HTML 코드

 

개발자 모드로 HTML 코드를 확인해 본 결과, 언어 선택을 하는 부분에 <option> 태그가 사용된 것을 알 수 있었다.

이때 사용하는 <select> 태그에는 텍스트만 삽입이 가능하다고 한다.

즉, 이 태그를 강제로 닫아주어야 XSS가 가능하다는 것이다.

 

<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