验证:工作原理,这个功能类似一个留言板,输入信息后下面会增加对应的信息
输入fengzilin 会显示
点击 submit 查 URL 链接
http://192.168.37.147/DVWA-master/vulnerabilities/xss_r/?name=fengzilin#
根据回显信息判断出,显示文本内容是 Hello $name
输入的变量被放入 $name
中
添加一条 JavaScript 代码获取 cookie
<script>alert(document.cookie);</script>
点击submit 显示结果
我们提交的文本信息被浏览器执行了,显示出了我们的cookie 信息
按F12 查看cookie
完全一致,关键点是通过 URL 控制了页面的输出,我们看一下 URL ,JavaScript 代码是可以通过 URL 控制页面输出,
http://192.168.37.147/DVWA-master/vulnerabilities/xss_r/?name=%3Cscript%3Ealert%28document.cookie%29%3B%3C%2Fscript%3E#
通过 burpsuite 抓包分析
可以看出反射型 XSS 是将原来提交的语法返回来,然后浏览器在本地解析了,js所以就会弹出弹窗
Name:fengzilin
Message:
显示已经插入了 js 代码
存储型 XSS 和 反射型 XSS 的区别是 XSS只会弹一次cookie 信息,存储型 XSS 每访问这个页面弹出都会弹出 cookie 信息,因为 XSS 代码已经嵌入在了 该 web 站点当中,所以每次访问都会执行
刷新一次就会出现
接下来进入数据库查看数据存放
MariaDB [(none)]> select * from dvwa.guestbook;
可以看到我们提交的数据被存放在数据库当中,每次用户访问页面时 Web 程序会从数据库中读取出 XSS 攻击代码,从而代码可以重复使用
也可以直接查看源代码:
按 Ctrl+ F 输入 alert 查找
burpsuite 抓包分析
当访问该网页时,网页从数据库返回js语句,然后浏览器解析,触发XSS ,存储型的危害极大,如果有存储型漏洞,每个用户访问都会触发存储型XSS
DOM Based XSS 漏洞是基于文档对象模型 (Document Objeet Model,DOM) 的一种漏洞。 它其实属于反射型 XSS 的一种,所以它也通过 URL 来进行触发 XSS 攻击。
创建一个JavaScript脚本dom 网页
[root@localhost ~]# vim /var/www/html/dom.html
<html>
<body>
<script type="text/javascript">
document.write("Hello World!")
script>
body>
html>
访问http://192.168.37.147/dom.html 发现输出文本
现在默认情况下很多浏览器都会存在 XSS 防御,比如Chrome的 XSS-Auditor 功能,我们日常使用都开启了,我们关闭
方法:
1)右击桌面图标,选择属性,复制目标中的内容
"C:\Program Files\Google\Chrome\Application\chrome.exe"
2)在桌面空白处,右击→新建→快捷方式,在"请键入对象的位置" 输入一下内容
"C:\Program Files\Google\Chrome\Application\chrome.exe" --args --disable-xss-auditor
3)起一个名字:Chrome关闭XSS
4)双击运行
4.进入 DVWA 进行 XSS DOM 攻击
可以看到参数在 URL 地址中是可控的
修改URL 中传递的参数为 fengzilin
http://192.168.37.147/DVWA-master/vulnerabilities/xss_d/?default=fengzilin
可以看到 URL 中的参数被带入到页面中浏览器执行,从而修改页面中内容变为:fengzilin
在URL中加入js脚本
http://192.168.37.147/DVWA-master/vulnerabilities/xss_d/?default=<script>alert("fengzilin");script>
可以看到我们构造的代码都能够被执行,当然这样可能和其他两种攻击方式也没什么不同,我们切换到网页源代码中查看
这里需要逐步点开才可以看到我们修改的信息位置,注意图片中三角形朝下的项,一次点开即可
我们修改这一项的值为 FZL 然后回车,页面中的值也为修改为 FZL