当前位置: 首页 > news >正文

DVWA-DOM型XSS全等级绕过方法

DOM型XSS全等级绕过
  • 前言
  • 一、LOW级别
  • 二、Medium级别
      • 图片插入语句法
  • 三、High级别
      • 字符 # 绕过服务端过滤
  • 四、Impossible级别

前言

    DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容、结构以及样式。DOM型XSS其实是一种特殊类型的反射型XSS,它是基于DOM文档对象模型的一种漏洞。在网站页面中有许多页面的元素,当页面到达浏览器时浏览器会为页面创建一个顶级的Document object文档对象,接着生成各个子文档对象,每个页面元素对应一个文档对象,每个文档对象包含属性、方法和事件。可以通过JS脚本对文档对象进行编辑从而修改页面的元素。也就是说,客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用。

一、LOW级别

打开dvwa,并将等级设置为low
在这里插入图片描述
我们查看源代码

<?php
# No protections, anything goes
?>

 
 

        从源代码可以看出,这里low级别的代码没有任何的保护性措施!
    观察主页面,可以看到页面的功能是让我们选择默认的语言,但是这里又没有对default参数没有进行任何的过滤。
    在这里插入图片描述
        因此,我们在这里构造XSS代码,在default参数后面写入脚本,构造访问连接:

    http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=<script>alert('Oh_No')</script>
    
     
     

      点击之后,我们的 script脚本成功被执行了!
      在这里插入图片描述
      查看网页的源代码即可看出,因为我们的脚本插入到代码中,所以执行了
      在这里插入图片描述
          同样的,我们可以修改语句,使其弹窗可以获取cookie
      在这里插入图片描述

      二、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源代码中可以看到它对default参数的值进行了检查,用了stripos()函数对default参数的值进行了检测是否有<scipt字符,如果有的话,就将default=English。

        注意:stripos() 函数是不区分大小写的。具体函数用法请参考:
        PHP stripos() 函数.

        图片插入语句法

            既然这里过滤了<script,那么我们可以用图片插入语句法:

        <img src =1 onerror = alert('dom')>
        
         
         

              当我们访问URL:

          http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=<img src =1 onerror = alert('dom')>
          
           
           

                此时没有出现任何的变化,界面没有反应。这个时候查看网页的源代码:
            在这里插入图片描述
                可以看到我们输入的脚本语句被插入进了value值中,没有插入到option标签的值中,所以我们语句当中的<img>标签就没有起到作用,因此不会弹窗。
            我们改进我们的语句,尝试将前面的标签闭合

            http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=</select><img src =1 onerror = alert('dom')>
            
             
             

                  页面成功出现弹窗:
              在这里插入图片描述
                  查看一下网页的源代码:
              在这里插入图片描述
                  我们还可以直接在English值的后面直接进行拼接:

              http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=English</select><img src =1 onerror = alert('dom')>
              
               
               

                    页面也能直接出现弹窗:

                在这里插入图片描述
                    查看网页源代码:
                在这里插入图片描述

                三、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级别源代码,这里先if判断default的值是否为空,如果不为空就用switch语句进行匹配,很明显这相当于设置了白名单,只允许传 default值为EnglishFrenchGermanSpanish 其中一个。

                  字符 # 绕过服务端过滤

                      url中有一个字符为#,该字符后的数据不会发送到服务器端,#后面的内容是对浏览器的操作,不会发送到http请求当中去,从而绕过服务端过滤。
                      因此可以这样构造连接:

                  http://127.0.0.1/dvwa/vulnerabilities/xss_d/?default=English#<script>alert('high!!!')</script>
                  
                   
                   

                        点击提交刷新页面后,出现弹窗:
                    在这里插入图片描述

                    四、Impossible级别

                    查看源代码

                    <?php
                    # Don't need to do anything, protction handled on the client side
                    ?> 
                    
                     
                     

                          意思是不需要做任何事,保护在客户端处理

                          尝试修改English为:
                      <script>alert(‘hello’)</script>
                      在这里插入图片描述
                          从上图可以看出框内的值是我们输入的参数的经过URL编码后的数据。
                      查看网页源代码:
                      在这里插入图片描述
                          并没有对我们输入的内容进行URL解码,所以我们输入的任何内容都是经过URL编码,然后直接赋值。因此不存在XSS漏洞。

                          我们可以对比LOW级别的网页源代码:
                      在这里插入图片描述

                          本站所有文章均为原创,欢迎转载,请注明文章出处: https://blog.csdn.net/weixin_43847838/article/details/111940420.。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。

                      相关文章:

                    • STM32 HAL库 UART串口发送数据实验
                    • 新数据结构(10)——Java抽象类和接口
                    • DeepSeek vs ChatGPT:AI对决中的赢家是……人类吗?
                    • 网络安全试题
                    • 机器视觉检测中,2D面阵相机和线扫相机的区别
                    • 扫描线算法笔记(C++)
                    • Java 大视界 -- 区块链赋能 Java 大数据:数据可信与价值流转(84)
                    • 架构——LVS负载均衡主要模式及其原理、服务水平、优缺点
                    • 基于云计算、大数据与YOLO设计的火灾/火焰目标检测
                    • 深度学习在蛋白质-蛋白质相互作用(PPI)领域的研究进展(2022-2025)
                    • 【网络编程】网络编程基础:TCP/UDP 协议
                    • 关于使用雪花算法生成唯一ID,返回给前端ID不一致的问题
                    • 图解JVM-1. JVM与Java体系结构
                    • 解决DeepSeek服务器繁忙问题:本地部署与优化方案
                    • Centos虚拟机扩展磁盘空间
                    • 仿 Sora 之形,借物理模拟之技绘视频之彩
                    • Mac M1中安装、配置、常用Homebrew
                    • 百度搜索和文心智能体接入DeepSeek满血版——AI搜索的新纪元
                    • 固井配方推荐知识图谱思路
                    • Vue前端开发-Vant组件之Button组件
                    • 马上评|独生子女奖励不能“私了”,政府诚信是第一诚信
                    • 马斯克的胜利?OpenAI迫于压力放弃营利性转型计划
                    • 《中国医药指南》就涉宫颈癌等论文出现男性病例致歉:辞退涉事编辑
                    • “两高”出台司法解释,严打破坏黑土地资源犯罪
                    • 胖东来关闭官网内容清空?工作人员:后台维护升级
                    • 新华每日电讯:上海“绿色大民生”撑起“春日大经济”