dvwa DOM XSS

DOM Based XSS:是基于DOM文档对象模型的操作,通过前端脚本修改页面的DOM节点形成的XSS,该操作不与服务器端进行交互,而且代码是可见的,从前端获取到DOM中的数据在本地执行,从效果上来说也是反射型XSS。

漏洞测试

low 级别

​​

可知Select按钮选择参数,数据提交是以GET请求的方式

<?php

# No protections, anything goes

?>

low 级别不存在Protect,可以非常简单的造成XSS攻击

构造payload

http://192.168.43.146/dvwa/vulnerabilities/xss_d/?default=%3Cscript%3Ealert%28%22XSS%22%29%3C/script%3E

当用户触发该URL时就会受到XSS攻击,有弹框出现

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

经过代码审计之后可知:array_key_exists检查数组里是否有指定的键名或索引,并且default值不为null,传递的数据中如果存在<script>标签,则会进入if条件,default默认赋值为“English”

stripos(string,find,start)  函数查找字符串在另一字符串中第一次出现的位置(不区分大小写)。

参数    描述
string 必需。规定要搜索的字符串。
find 必需。规定要查找的字符。
start 可选。规定开始搜索的位置。 相关函数:
strpos() - 查找字符串在另一字符串中第一次出现的位置(区分大小写)
strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)
strrpos() - 查找字符串在另一字符串中最后一次出现的位置(区分大小写)

由于stripos函数的作用所以不能使用<script>标签,但是真的就不能使用该标签吗,答案是可以的,此处要利用到URL中的一个特殊字符‘#’,该字符后的数据不会发送到服务器端,从而绕过服务端过滤

构造payload

http://192.168.43.146/dvwa/vulnerabilities/xss_d/?#default=%3Cscript%3Ealert%28%22XSS%22%29%3C/script%3E

触发该URL,成功绕过服务端的过滤

假如真的不能使用<script>标签,也有另一种方法进行绕过服务端的检测

用img标签或其他标签的特性去执行js代码,比如img标签的onerror事件

构造payload

http://192.168.43.146/dvwa/vulnerabilities/xss_d/?default=</option></select><img src=# onerror=alert("xss")>

触发该URL,成功绕过服务端的过滤

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的值必须为select选择菜单中的值,这里继续用上面的#符号绕过即可,构造payload

http://192.168.43.146/dvwa/vulnerabilities/xss_d/?#default=%3Cscript%3Ealert%28%22XSS%22%29%3C/script%3E

成功绕过后端switch的限制

impossible 级别

Security level set to impossible

<?php

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

?> 

XSS DOM 测试的更多相关文章

  1. XSS Reflected 测试

    由于最近在做XSS方面的测试,于是找到了DVWA平台进行实验测试,通过这三篇文章让大家了解XSS方面的大概内容,这三篇文章只是把你领进XSS的大门,要想真正深入的学习XSS,你还需要去学习很多东西来提 ...

  2. 如何在SAE搭建属于自己的黑盒xss安全测试平台

    Author:雪碧 http://weibo.com/520613815 此篇文章技术含量不高,大牛不喜勿喷,Thx!写这篇文章主要是为了各位小伙伴在SAE搭建XSSING平台的时候少走点弯路(同志们 ...

  3. js的dom测试及实例代码

    js的dom测试及实例代码 一.总结 一句话总结: 1.需要记得 创建 标签和创建文本节点都是document的活:document.createTextNode("Rockets的姚明&q ...

  4. OWASP出品:Xenotix XSS漏洞测试框架及简单使用

    OWASP Xenotix XSS Exploit Framework是一个高效的跨站脚本漏洞(XSS)检测和攻击测试框架.它通过特有的三大浏览器引擎(包括Trident, WebKit和Gecko) ...

  5. xss跨站脚本测试

    测试的时候会涉及到xss测试,下面简要整理下xss的知识 xss跨站脚本特点就是能注入恶意的HTML/JS代码到用户浏览器,劫持用户会话 常用alert来验证网站存在漏洞 如果确认存在漏洞,会随着注入 ...

  6. XSS Stored 测试

    dvwa存储型XSS 存储型XSS:会把用户输入的数据“存储”在服务器端,一般出现在需要用户可以输入数据的地方,比如网站的留言板.评论等地方,当网站这些地方过滤不严格的时候,就会被黑客注入恶意攻击代码 ...

  7. DVWA XSS (DOM) 通关教程

    DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容.结构以及样式. DOM型XSS其实是一种特殊类型的反射型XSS,它是 ...

  8. XSS攻击测试代码

    '><script>alert(document.cookie)</script>='><script>alert(document.cookie)&l ...

  9. DVWA之DOM XSS(DOM型跨站脚本攻击)

    目录 Low Medium High Impossible Low 源代码: <?php # No protections, anything goes ?> 从源代码可以看出,这里low ...

随机推荐

  1. WebStorm重复代码快捷表达

    一,问题 平时使用WebStorm时需要很多引用js,重复代码比较多,每次都要写很多次同样的代码,那么如何通过几个快捷键来简单的写出重复代码呢? 问题具体描述: 每次都要写两个script的重复: & ...

  2. python 多线程 及多线程通信,互斥锁,线程池

    1.简单的多线程例子 import threading,timedef b_fun(i): print "____________b_fun start" time.sleep(7 ...

  3. 【安全性测试】解决关于appscan基于登录会话检测失败问题

    有些问题久了忽然就想通怎么解决了,很神奇.这次要说的是,关于appscan无法检测到会话的问题,因为在百度上一直找不到相关的解决方法,这个问题困扰了我很久,今天终于找到方法解决了! 日常配置扫描内容: ...

  4. synchronized关键字的详细分析和代码实例

    在Java中,一般都是通过同步机制来解决线程安全问题的,在JDK 5.0之后又新增了Lock的方式来实现线程安全.所以说实现线程安全方式一共有三种方法 方式一: synchronized(同步监视器) ...

  5. js判断pc还是移动端

    if (!/windows phone|iphone|android/ig.test(window.navigator.userAgent)) { //pc }else{ //h5 }

  6. Create and test an approval workflow with Microsoft Flow

    https://docs.microsoft.com/zh-cn/flow/getting-started https://docs.microsoft.com/en-us/flow/modern-a ...

  7. 0.Git介绍

    版本控制工具:SVN,Git Git是分布式版本控制系统,SVN是集中式的版本控制系统.(借一位网友的图以示区别) SVN只有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过 ...

  8. spring-security权限管理学习目标

    1.SVN基本介绍: 1.svn基本的概念 2.svn架构 3.svn下载与安装 4.svn搭建与基本操作 2.svn基本操作 1.操作1 2.操作2 3.冲突产生 4.冲突解决 3.SVN在IDEA ...

  9. 自动生成业务库码表insert脚本

    背景:服务请求一体化项目升级到V4的服务请求类型时,所有配置库数据迁移到各省的业务库中,虽然数据出现大量冗余,但是这是唯一能解决V4 大量服务请求类型不在同一张表中的骚操作了,防止查询服务请求类型时G ...

  10. NeuChar 平台使用及开发教程(一):开始使用 NeuChar

    如果您还不知道什么是 NeuChar,或者我们为什么要做 NeuChar,请看这里. 角色 NeuChar 打通了从开发者到终端用户的完整的上下游链路,了解 NeuChar 之前,先要明确两个角色身份 ...