dvwa学习笔记——dom型xss

三、dom型xss

DOM xss是基于dom文档对象模型,前端脚本通过dom动态修改页面,由于不与服务端进行交互,而且代码是可见的,从前端获取dom中的数据在本地执行
常见的可以操纵dom的对象:URL,localtion,referrer等。

low源码:

dvwa下的dom型xss页面的意思是选择一种语音,只在前端执行,且代码并未对default进行处理

漏洞分析与利用:

源码并未做任何安全防护措施,所以可以直接在url上构造攻击脚本

构造脚本:

...dvwa/vulnerabilities/xss_d/?default=English<script>alert(/xss/)</script>

执行脚本:

查看页面源码,脚本已经插入value值和option标签中。

medium源码:

漏洞分析与利用:

array_key_exists检查数组里是否有指定的键名和索引,如果default值不为null,default的值就等于获取到的default。

stripos返回default中字符串<script首次出现的位置(不区分大小写),如果有,则default的值等于English,所以这里用<script>标签无法绕过,可以考虑使用<img>标签,但因为直接使用img标签的话img无法插入到option标签里,因此先闭合</option>和</select>标签。

构造脚本:

default=</option></select><img src=0 onerror=alter(/xss/)>

执行脚本:

抓取页面源代码,</option></select>已经屏蔽掉前面的<option><select>,以便后面的img内脚本得以实现。

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

?>  

漏洞分析与利用:

源码先判断default值是否为空,若不空,则用switch语句进行匹配,匹配成功,则插入case字段相应值,如果匹配不成功,则执行default语句。可在?default=English设置#字符,因为#之后的字符串不会被发送到服务器,而script语句就可以在前端页面实现。

构造脚本:

?default=English#<script>alert(/xss/)</script>

执行脚本:

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值