dvwa中的xss(跨站脚本)攻击

2023-11-17

环境:

dvwa: 192.168.11.135 dvwa版本Version 1.9 (Release date: 2015-09-19)

kail机器:192.168.11.156

一、XSS是什么

XSS(Cross Site Scripting,跨站脚本攻击),是指恶意攻击者往web页面里插入恶意script代码,当用户浏览该页面时,嵌入其中web里面的script代码会被执行,从而达到恶意攻击用户的目的。

xss漏洞通常是通过php的输出函数将javascript代码输出到html页面中,通过用户本地浏览器执行的,所以xss漏洞关键就是寻找参数未过滤的输出函数

二、跨站脚本攻击XSS分类

  • 反射型XSS:<非持久化> 攻击者事先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码(服务器中没有这样的页面和内容),一般容易出现在搜索页面。

  • 存储型XSS:<持久化> 代码是存储在服务器中的,如在个人信息或发表文章等地方,加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,这种XSS非常危险,容易造成蠕虫,大量盗窃cookie(虽然还有种DOM型XSS,但是也还是包括在存储型XSS内)。

  • DOM型XSS:基于文档对象模型Document Objeet Model,DOM)的一种漏洞。DOM是一个与平台、编程语言无关的接口,它允许程序或脚本动态地访问和更新文档内容、结构和样式,处理后的结果能够成为显示页面的一部分。DOM中有很多对象,其中一些是用户可以操纵的,如uRI ,location,refelTer等。客户端的脚本程序可以通过DOM动态地检查和修改页面内容,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行,如果DOM中的数据没有经过严格确认,就会产生DOM XSS漏洞。

三、常用绕过方式

  1. 普通注入:<script>alert('XSS')</script> 或者 <script>alert(document.cookie)</script>

  1. 大小写绕过:<sCript>alert(document.cookie)</scRipt> 或者 <scRipt>alert('lady_killer9')</sCript>

  1. 双写绕过:<scr<script>ipt>alert(document.cookie)</scr<script>ipt> 或者 <scr<script>ipt>aleralertt(document.cookie)</scr<script>ipt>

  1. html标签绕过:<img src=x οnerrοr=alert('XSS');> 或者 <A HREF=http://192.168.11.135:81/phpinfo.php>link</A> 或者 <img src=x:alert(alt) οnerrοr=eval(src) alt=xss>

  1. 闭合标签绕过:></option></select><img src=x:alert(alt) οnerrοr=eval(src) alt=xss>

  1. 闭合+html标签绕过:></option></select><img src=x:alert(alt) οnerrοr=eval(src) alt=xss>

、XSS(Reflected)

4.1、XSS(Reflected) LOW级别

代码:

主要步骤:array_key_exists函数判断name变量是否存在,并判断是否非空。若存在且非空,直接输出。

漏洞原因:

  • 输入未过滤

  • 输出未改变编码

普通注入<script>alert('XSS')</script>

弹出:

4.2、XSS(Reflected) Medium级别

代码:

主要步骤:array_key_exists函数判断name变量是否存在,并判断是否非空。若存在且非空,使用str_replace函数替换<script>为空字符串,然后输出。

漏洞原因:

  • 输入过滤不到位,尝试使用str_replace函数进行过滤,此函数区分大小写,对替换后的字符串不会再检查,可被双写、大小写等绕过

  • 输出未改变编码

普通注入<script>alert(document.cookie)</script>

大小写绕过<sCript>alert(document.cookie)</scRipt>

弹出:

双写绕过<scr<script>ipt>alert(document.cookie)</scr<script>ipt>

弹出:

1.3、XSS(Reflected) High级别

代码:

主要步骤:array_key_exists函数判断name变量是否存在,并判断是否非空。若存在且非空,使用preg_replace函数进行正则表达式匹配,且大小写都会匹配到,替换为空字符串,然后输出。

漏洞原因:

  • 输入过滤不到位,尝试使用preg_replace函数进行正则表达式匹配过滤,但仅匹配了<script>相关,未匹配html标签

  • 输出未改变编码

普通注入<script>alert('XSS')</script>

注入失败,仅剩余了>,其他全部没有了,再尝试大小写或双写绕过。

大小写绕过<sCript>aleRt(document.cookie)</scRipt>

注入失败。

双写绕过<scr<script>ipt>aleralertt(document.cookie)</scr<script>ipt>

注入失败。可能使用了正则表达式,尝试不使用js标签

html标签绕过<img src=x οnerrοr=alert('XSS');>

<A HREF=http://192.168.11.135:81/phpinfo.php>link</A>

五、XSS(Stored)

5.1、XSS(Stored) LOW级别

正常输出:

代码:

主要步骤

  • isset函数判断btnSign是否提交,即是否点击了Sign Guessbook按钮;

  • 使用trim函数去除提交的mtxMesssage、txtName前后导空格,分别给message、name变量;

  • 使用stripslashes函数对message删除反斜杠,使用mysqli_real_escape_string函数对name、message变量中的特殊字符转义;

  • 使用mysqli_query函数插入数据库。

漏洞原因:

  • 未过滤输入,使用post方式增加难度

  • 输出未改变编码

  • 使用前端限制长度

通过阅读后端代码,我们发现name、message长度的判断并不在后端,按F12查看前端代码:

普通注入:分别在Name与Message输入框输入 <script>alert('lady_killer9')</script>

点击Sign Guestbook后:

注入失败。

方法1Name有长度限制,Message注入失败,应该是Name可以注入,但是被限制了。尝试抓包进行注入:

注入成功,弹出:

方法2:前端页面中删除maxlength="10"

改成

5.2、XSS(Stored) Medium级别

正常输出:

前端限制Name、Message的长度。

代码:

主要步骤

  • isset函数判断btnSign是否提交,即是否点击了Sign Guessbook按钮;

  • 使用trim函数去除提交的mtxMesssage、txtName前后导空格,分别给message、name变量;

  • 使用strip_tags函数对 使用函数addslashes添加反斜杠的message变量 剥去heml、xml、php标签,使用mysqli_real_escape_string函数对message变量中的特殊字符转义

  • 使用str_replace函数将name中的<script>标签替换为空字符串,使用mysqli_real_escape_string函数对name变量中的特殊字符转义

  • 使用mysqli_query函数插入数据库

漏洞原因:

  • 输入过滤不到位,尝试使用str_replace函数进行过滤,此函数区分大小写,对替换后的字符串不会再检查,可被双写、大小写等绕过

  • 输出未改变编码

  • 使用前端限制长度

普通注入:前端删除输入长度限制,分别在Name与Message输入框输入 <script>alert('lady_killer9')</script>

标签被删除

标签没了,尝试大小写绕过。

大小写绕过<scRipt>alert('lady_killer9')</sCript>

注入成功。

5.3、XSS(Stored) High级别

post方式,前端检查长度,直接删除,然后Html标签绕过。

代码:

主要步骤

  • isset函数判断btnSign是否提交,即是否点击了Sign Guessbook按钮;

  • 使用trim函数去除提交的mtxMesssage、txtName前后导空格,分别给message、name变量;

  • 使用strip_tags函数对 使用函数addslashes添加反斜杠的message变量 剥去heml、xml、php标签,使用mysqli_real_escape_string函数对message变量中的特殊字符转义

  • 使用preg_replace函数进行正则表达式匹配,然后替换为空字符串,使用mysqli_real_escape_string函数对name变量中的特殊字符转义

  • 使用mysqli_query函数插入数据库

漏洞原因:

  • 输入过滤不到位,尝试使用preg_replace函数进行正则表达式匹配过滤,但仅匹配了<script>相关,未匹配html标签

  • 输出未改变编码

  • 使用前端限制长度

html标签绕过<img src=x οnerrοr=alert('XSS');>

注入成功。

六、参考

跨站脚本漏洞(XSS)基础讲解 - 简书 (jianshu.com)

网络安全-靶机dvwa之XSS注入Low到High详解(含代码分析)_lady_killer9的博客-CSDN博客_dvwa xss注入

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

dvwa中的xss(跨站脚本)攻击 的相关文章

  • 网络安全基础知识面试题库

    1 基于路由器的攻击手段 1 1 源IP地址欺骗式攻击 入侵者从外部传输一个伪装成来自内部主机的数据包 数据包的IP是 内网的合法IP 对策 丢弃所有来自路由器外端口 却使用内部源地址的数据包 1 2 源路由攻击 入侵者让数据包循着一个不可
  • Codeigniter - 基于帖子禁用 XSS 过滤

    我正在尝试在网站后面设置一个 CMS 但是每当发布数据时 a href 其中帖子数据被废弃 input gt post content true 打开它 但如何关闭它 感谢大家 PVS 如果您想更改默认行为post 方法 您可以扩展核心输入
  • 你的服务器还安全吗?用户数据是否面临泄露风险?

    一系列严重的网络安全事件引起了广泛关注 多家知名公司的服务器遭到黑客挟持 用户的个人数据和敏感信息面临泄露的风险 这些事件揭示了网络安全的脆弱性和黑客攻击的威胁性 提醒着企业和个人加强对网络安全的重视 一 入侵案例 1 1 蔚来数据泄露 1
  • 【安全】mybatis中#{}和${}导致sql注入问题及解决办法

    0 问题 使用mybatis的时候遇到了 和 可能导致sql注入的问题 1 预先了解 1 底层通过prepareStatement对当前传入的sql进行了预编译 一个 被解析为一个参数占位符 解析之后会将String类型的数据自动加上引号
  • 在 Struts 2 中使 ${} 运算符 XSS 安全(与 Tapestry 相同)

    正如中提到的http www disasterarea co uk blog xss vulnerability in web frameworks 2 http www disasterarea co uk blog xss vulner
  • 将准备好的语句包装在函数中[重复]

    这个问题在这里已经有答案了 我一直在阅读有关 SQL 注入的文章 并决定修改我的代码以防止 SQL 注入 例如 我有一个输入 我将其值插入到数据库中 最初 我对注射的防范是这样的 function test input data data
  • 使用 Spring MVC 框架清理用户输入

    我正在使用 spring mvc 框架开发 Web 应用程序 我想知道是否有任何最好的方法来清理用户输入或通用方法来清理 springs 中的所有用户输入以避免 XSS 和 Sql 注入攻击 您可以使用Filters在 Spring 框架中
  • HTML 和属性编码

    我遇到了一个发表在 Meta SO 上 https meta stackexchange com questions 104230 attack of the double encoded hellip part n我很好奇未编码和编码的
  • 如何从 iframe 读取父页面的页面标题?

    我有一个页面调用另一个页面 在另一台服务器上 我希望该页面从父页面读取标题 这可能吗 或者这是否存在一些安全问题 您无法像这样跨服务器进行通信
  • img src 属性中使用 javascript 进行 XSS 攻击

    一些较旧的浏览器容易受到 XSS 攻击 img src 当前版本的 IE FF Chrome 不是 我很好奇是否有浏览器容易受到类似的攻击 img src somefile js or 或其他类似的地方 somefile js 包含一些恶意
  • 默认情况下,ASP.NET MVC 4 是否需要额外的 XSS 处理

    默认情况下 ASP NET MVC 4 会忽略帖子消息中的 HTML 输入 如果我没有明确接受 HTML 是否需要编写任何代码来保护我的网站免受 XSS 攻击 我不会使用 AllowHtml or ValidateInput false 我
  • 不要直接访问超全局 $_GET 数组

    我是 PHP 新手 所以请原谅我 如果这是一个愚蠢的问题 但为什么我不应该直接访问超全局数组中的项目 NetBeans 警告我不要这样做 参见标题 而且我在其他地方读过同样的内容 但我还没有找到一个很好的解释 会出现什么问题 是否存在安全问
  • PHP XSS 预防白名单

    我的网站使用所见即所得编辑器 供用户更新帐户 输入评论和发送私人消息 编辑器 CKEditor 非常适合只允许用户输入有效的输入 但我担心通过 TamperData 或其他方式注入 我如何在服务器端控制这个 我需要将特定标签列入白名单 b
  • CodeIgniter - 为什么使用 xss_clean

    如果我正在清理我的数据库插入 并且还转义我编写的 HTMLhtmlentities text ENT COMPAT UTF 8 是否还需要使用 xss clean 过滤输入 它还有什么其他好处 xss clean http docs gip
  • 尝试利用?

    我看到我的 nopCommerce 网站记录了以下搜索 ADw script AD4 alert 202 ADw script AD4 我有点好奇他们想要完成什么 我搜索了一下 似乎是ADw script AD4 以 UTF7 编码为
  • GWT SafeHTML、XSS 和最佳实践

    OWASP 的优秀人员强调 您必须对 HTML 文档中要放入不受信任数据的部分 正文 属性 JavaScript CSS 或 URL 使用转义语法 看OWASP XSS https www owasp org index php XSS 2
  • 清理 html 字符串中的所有脚本

    HTML5 剪贴板很棒 但我正在寻找一种使其安全的方法 用户正在将文本 html 粘贴到我的网页中 这允许他们粘贴图像 表格等 我正在寻找一种方法 在将粘贴的内容添加到页面之前删除所有脚本 我需要删除
  • 创建全屏 iframe

    我目前正在研究 XSS 攻击 目的是在客户端演示中使用它们 我是渗透测试员 我编写了一个工具 该工具将托管网站登录页面的恶意版本 获取用户名和密码 然后将受害者重定向回原始网站 然而 我一直在尝试使用 iframe 来让它工作 因为它看起来
  • 使用 eval 时不会受到 XSS 威胁

    我正在制作 不是现在 但我仍然对这个感到好奇 一款使用 HTML5 和 JS 的游戏 我想要的是人们可以插入自定义脚本 但要安全 function executeCustomJS code eval code bad 当然这段代码非常糟糕
  • 如果未使用“data-target”属性,Bootstrap 3.3.7 是否安全?

    有一个安全漏洞 https snyk io test npm bootstrap 3 3 7 tab issues关于 Bootstrap 3 3 7 它表示 该软件包的受影响版本很容易通过数据目标属性受到跨站点脚本 XSS 攻击 我想知道

随机推荐

  • Python Web系列学习1

    1 全栈网络框架 除了封装网络和线程操作 还提供HTTP栈 数据库读写管理 HTML模板引擎等一系列功能的网络框架 Django Flask Tornado是全栈网络框架的典型标杆 Twisted更专注于网络底层的高性能封装而不提供HTML
  • 服务器2008r2启动修复,Windows Server 2008 R2原生启动试用

    IT168 特别策划 6000名IT精英齐聚一堂 与来自微软产品核心研发团队及各个领域数百位顶级专家面对面交流 Tech Ed 2009盛典召开在即 IT168带您一起体验丰富多彩的活动和内容安排 更加深入 专注的互动讨论 IT168 专稿
  • 文件恢复原理&&Linux文件恢复工具-foremost&extundelete

    文件恢复的原理 首先简单介绍一下 Linux 文件系统的最基本单元inode inode 译成中文就是索引节点 每个存储设备 例如硬盘 或存储设备的分区被格式化为文件系统后 应该有两部份 一部份是 inode 另一部份是 block blo
  • FPGA设计篇之流水线思想

    FPGA设计篇之流水线思想 一 写在前面 二 正文开始 2 1举个栗子 2 2 1情况一 组合逻辑 2 1 2情况二 流水线设计 2 1 4 小总结 2 2举第二个栗子 写在最后 一 写在前面 流水线 大家好 我是富土康三号流水线的张全蛋
  • 常见计算机文件类型,关于文件类型电脑文件常用的有哪些类型?对应的软件有什么?rmvb 爱问知识人...

    正确的安装步骤 首先进入BIOS设置光驱优先 1 首先按Del键进入BIOS 2 通过键盘上的方向键选中Advanced BIOS Features 3 回车进入BIOS设置界面 4 用方向键选中First Boot Device或 1st
  • STM32CubeMx配置HAL库流水灯

    STM32CubeMx配置HAL库流水灯 文章目录 STM32CubeMx配置HAL库流水灯 RCC Clock Configuration GPIO Project Manager GENERATE CODE 程序编写 注意事项 RCC
  • Offer差点无缘?HUAWEI 4面技术5面HR,踩线挺过!

    大厂面试真题向来都是各大求职者的最佳练兵场 而今天小编带来的便是 HUAWEI 面经 这是一次真实的面试经历 虽然不是我自己亲身经历但是听当事人叙述后便会深有同感 因为我朋友差点就与offer擦肩而过了 总共4面技术5面HR 真的好艰难 为
  • laravel cookie的使用方法

    1 Cookie make Cookie forever Cookie get 的使用方法 Route get cookieset function foreverCookie Cookie forever forever Success
  • 线程的五大状态

    线程从创建 运行到结束总是处于下面五个状态之一 新建状态 就绪状态 运行状态 阻塞状态及死亡状态 http www blogjava net images blogjava net santicom 360 E6 88 AA E5 9B B
  • 【论文笔记】AudioGPT: Understanding and Generating Speech,Music, Sound, and Talking Head

    一 简介 核心问题 目前llm无法解决复杂的音频信息或进行口语对话 数据和计算资源制约了高方向的发展 本文 1 使用chatgpt作为接口 2 没有训练口语模型 而是将LLM与语音对话的输入 输出接口 ASR TTS 连接起来 AudioG
  • MATLAB怎么画时间序列的自相关函数和偏自相关函数图

    autocorr Series 画出自相关图 图中上下两条横线分别表示自相关系数的上下界 超出边界的部分表示存在相关关系 a b autocorr Series a 为各阶的相关系数 b 为滞后阶数 parcorr Series 画出偏自相
  • 服务器SSL不安全漏洞修复方案

    关于SSL POODLE漏洞 POODLE Padding Oracle On Downgraded Legacy Encryption 是最新安全漏洞 CVE 2014 3566 的代号 俗称 贵宾犬 漏洞 此漏洞是针对SSL3 0中CB
  • 风险平价组合(risk parity)理论与实践

    本文介绍了风险平价组合的理论与实践 后续文章将对risk parity组合进行更深入探讨以及引入预期收益后的资产配置实战策略 感兴趣的朋友可以直接前往BigQuant人工智能量化投资平台克隆代码进行复现 前言 资产配置是个很广泛的话题 在投
  • 【ChatGPT+Python】Landsat卫星图像黑边去云及旋转校正

    引言 下图是一张Landsat图像的示例 右图 我们可以明显地看到四周的黑边和倾斜的角度 这是由于卫星传感器成像导致的 一般情况下 我们是不需要去除黑边和选择的 因为这样做之后投影信息和位置信息就不正确了 但对于做深度学习图像处理任务的同学
  • “宽度确定高度等比例的图片”和“高度确定宽度等比例的图片”有什么不同

    文章目录 1 宽度确定高度等比例的图片 和 高度确定宽度等比例的图片 有什么不同 2 附 1 宽度确定高度等比例的图片 和 高度确定宽度等比例的图片 有什么不同 宽度确定高度等比例的图片 和 高度确定宽度等比例的图片 都是指图片的宽度和高度
  • stm32与esp8266连接,将数据上传到OneNet(MQTT)

    文章目录 前言 一 所用器件 1 STM32F103C8T6 2 转串口模块 CH340 3 esp8266 01s 4 气体检测模块 MQ 二 代码分析 1 接线 2 代码 三 OneNet创建一个设备 1 百度搜索onenet 2 进入
  • 第二届蓝桥杯-最小公倍数问题

    题目 题目链接 题解 数学 高精度 如果直接按照计算多个数连续计算最小公倍数 那么显然要经过高精度乘法 高精度除法 两个高精度过于麻烦了 换个思路 我们将每个数都分解质因数 全部数的最小公倍数必然由分解得到的质因数相乘得到 而且构成最小公倍
  • uniapp开发h5,解决项目启动时,Network: unavailable问题

    网上搜了很多 发现都说是要禁用掉电脑多余的网卡 这方法我试了没有好 不晓得为啥子 之后在网上看 uniapp的devServer vue2的话对标的就是webpack4的devserver 除了复杂的函数配置项 所以我去查了webpack4
  • Maven学习 (一) 搭建Maven环境

    http www cnblogs com quanyongan archive 2013 04 17 3025971 html 有两种方式可以配置maven的环境配置 本人推荐使用第二种 即使用本地的maven安装文件 个人感觉这样可以方便
  • dvwa中的xss(跨站脚本)攻击

    环境 dvwa 192 168 11 135 dvwa版本 Version 1 9 Release date 2015 09 19 kail机器 192 168 11 156 一 XSS是什么 XSS Cross Site Scriptin