728x90
DOM Based Cross Site Scripting
- 클라이언트 측 자바스크립트를 조작하여 악성 스크립트를 실행하는 공격

DVWA DOM XSS 페이지는 위 사진과 같이 언어를 선택할 수 있는 기능이 구현되어 있다.
ㅤ

언어를 선택하면 URL 파라미터로 값이 들어가는 걸 볼 수 있었다.
<?php
// Is there any input?
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {
$default = $_GET['default'];
# Do not allow script tags
if (stripos ($default, "<script") !== false) {
header ("location: ?default=English");
exit;
}
}
?>
DVWA 깃허브 코드를 보니, <script 가 포함되어있는지 stripos() 함수를 통해 확인하고, 포함되어있으면 ?default=English 가 실행되었다.
하지만 script 태그 말고도 XSS 공격이 가능하니 이를 우회해보려고 한다.<img> 태그를 사용하여 이미지 소스가 존재하지 않을때 에러를 발생시키면서 alert창을 띄우도록 해보았다.
ㅤ

<img src="" onerror=alert(1)> 를 입력했지만 alert창이 띄워지진 않았다. 하지만 default=English가 적용되진 않았고, 옵션에 빈 값이 들어간 걸 보니 무언가가 동작한 것 같다는 생각을 했다.
ㅤ

개발자 도구를 켜서 option 태그를 확인해보았다.
파라미터 값으로 입력했던 태그가 option에 들어간 것을 알 수 있었다.
ㅤ

입력하고자 했던 태그 구문을 URL에 삽입해주었다.
alert창이 잘 띄워진 걸 볼 수 있다.
ㅤ

쿠키 값은 alert(document.cookie)를 통해 알아낼 수 있었다.
728x90
'DVWA' 카테고리의 다른 글
| DVWA | Stored XSS | medium (0) | 2024.11.26 |
|---|---|
| DVWA | Reflected XSS | medium (1) | 2024.11.26 |
| DVWA | Weak Session IDs | medium (0) | 2024.11.26 |
| DVWA | Blind SQL Injection | medium (0) | 2024.11.21 |
| DVWA | SQL Injection | medium (0) | 2024.11.21 |