XSS | 反射型 XSS 攻击

关注这个漏洞的其他相关笔记:XSS 漏洞 - 学习手册-CSDN博客

0x01:反射型 XSS — 理论篇

反射型 XSS 又称非持久型 XSS,这种攻击方式往往具有一次性。

常见的攻击方式: 攻击者通过电子邮件等方式将包含 XSS 代码的恶意链接发送给目标用户。当目标用户访问该链接时,服务器接收该目标用户的请求并进行处理,然后服务器把带有 XSS 代码的数据发送给目标用户的浏览器,浏览器解析这段带有 XSS 代码的恶意脚本后,就会触发 XSS 攻击。

其攻击流程如下图所示:

0x02:反射型 XSS — 实战篇

实验工具准备

实验环境的搭建流程我放在了 ReflectiveXSSLab.zip 中了,这里就不多说了,下面直接开始演示。

0x0201:反射型 XSS 攻击

在浏览器的导航栏中输入下面的网址,访问实验环境:

 http://127.0.0.1/ReflectiveXSSLab

可以发现页面发生了跳转,直接跳转到了一个 404 Not Found 的页面。值得注意的是,该页面回显的 404 - Page XXX Not Found,中的 XXX 似乎是通过 GET 请求传递并回显的。

我们可以修改一下导航栏中 error 字段的内容,并重新访问:

 http://127.0.0.1/ReflectiveXSSLab/404.php?error=Blue17

可以发现,error 字段的内容果然会直接回显回页面中,我们右击页面查看网页源码,看看回显的位置:

发现我们传递的参数直接回显在了<h1> 标签中,那么攻击者可以尝试构造下面的 Payload,来攻击用户:

 http://127.0.0.1/ReflectiveXSSLab/404.php?error=<script>alert(/You've Been Tricked/)</script>

可以看到,页面成功加载了攻击者传入的 XSS 代码,并运行。如果点击了 ”确定“ 按钮,可以看到,页面基本没有啥影响(弹窗只是可视化较强,真攻击谁还给你弹窗呀):

至此,一个反射型 XSS 攻击的全流程已经演示完毕。

此时,细心的小伙伴可能会说,这恶意链接这么明显,谁会中招,来,看看这个:性感美女图片 1.0

 [性感美女图片 1.0](http://127.0.0.1/ReflectiveXSSLab/404.php?error=%3Cscript%3Ealert(/You%27ve%20Been%20Tricked/)%3C/script%3E)

如果本地搭建了环境的宝子,点击了上方的链接,估计会跳出这个东东,就中招咯:

此时,有宝子又会说,你这太明显了,点了 ”确定“ 后又是一个 404 Not Found,而且 URL 这么怪,是个人都能发现这个链接有猫腻,马上举报!

那我们进化一下,看看这个:性感美女图片 2.0

 http://127.0.0.1/ReflectiveXSSLab/404.php?error=%3Cscript%3Ealert%28%2FYou%27ve%20Been%20Tricked%2F%29%3Blocation.href%3D%27http%3A%2F%2Fimg1.baidu.com%2Fit%2Fu%3D4150137793%2C3562379662%26fm%3D253%26app%3D138%26f%3DJPEG%3Fw%3D800%26h%3D1202%27%3C%2Fscript%3E

为了方便演示,笔者给 2.0 还是设置了弹窗(保留了弹窗功能才让你知道你被攻击了),点击了弹窗的确认后,会弹出啥,笔者这里就不截图了,怕过不了审,留给读者自己摸索吧。

0x0202:反射型 XSS 代码分析

下面是触发反射型 XSS 漏洞的关键代码:

 <?php
 $errorinfo = $_GET["error"];  // 获取 GET 请求传入的 error 值
 if (isset($errorinfo) == false) {
     $errorinfo = "";  // 如果未传递 error 参数,则置空
 }
 echo "<h1>404 - Page " . $errorinfo . " Not Found 未找到</h1>";
 ?>

代码 $_GET["error"] 通过 GET 方式获取参数 error 的值,然后没有做任何过滤,就直接通过 echo 拼接到一个 HTML 标签中输出回页面,这就是漏洞产生的原因。

当用户对 error 传入 <script>alert(/xss/)</script> 时,输出到页面的 HTML 代码实际上是:

 <h1>404 - Page <script>alert(/xss/)</script> Not Found 未找到</h1>

此段 HTML 代码中包含了一个 JavaScript 代码块,且此 JavaScript 代码块会引起浏览器的弹窗。

0x03:参考文献

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

SRC_BLUE_17

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值