signed

QiShunwang

“诚信为本、客户至上”

XSS跨站脚本攻击原理

2021/4/26 14:33:50   来源:

XSS跨站脚本攻击原理

文章目录

    • XSS跨站脚本攻击原理
      • 1.反射型 XSS 原理
      • 2.存储型 XSS 原理
      • 3.DOM 型 XSS 原理
        • 3.1 DOM 概述
        • 3.2 Document 对象,使用documen.write() 向输出流写文本
        • 3.3 关闭浏览器XSS 防护进行 XSS DOM 攻击

1.反射型 XSS 原理

验证:工作原理,这个功能类似一个留言板,输入信息后下面会增加对应的信息

输入fengzilin 会显示

image-20210326142252927

点击 submit 查 URL 链接

http://192.168.37.147/DVWA-master/vulnerabilities/xss_r/?name=fengzilin#

image-20210326142355753

根据回显信息判断出,显示文本内容是 Hello $name 输入的变量被放入 $name

添加一条 JavaScript 代码获取 cookie

<script>alert(document.cookie);</script>

image-20210326143000311

点击submit 显示结果

image-20210326142923224

我们提交的文本信息被浏览器执行了,显示出了我们的cookie 信息

按F12 查看cookie

image-20210326143216048

完全一致,关键点是通过 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 抓包分析

image-20210326145438485

可以看出反射型 XSS 是将原来提交的语法返回来,然后浏览器在本地解析了,js所以就会弹出弹窗

2.存储型 XSS 原理

Name:fengzilin

Message:<script>alert(document.cookie);</script>

image-20210326151313561

显示已经插入了 js 代码

image-20210326151349880

存储型 XSS 和 反射型 XSS 的区别是 XSS只会弹一次cookie 信息,存储型 XSS 每访问这个页面弹出都会弹出 cookie 信息,因为 XSS 代码已经嵌入在了 该 web 站点当中,所以每次访问都会执行

刷新一次就会出现

image-20210326152834392

接下来进入数据库查看数据存放

MariaDB [(none)]> select * from dvwa.guestbook;

image-20210326154400131

可以看到我们提交的数据被存放在数据库当中,每次用户访问页面时 Web 程序会从数据库中读取出 XSS 攻击代码,从而代码可以重复使用

也可以直接查看源代码:

按 Ctrl+ F 输入 alert 查找

image-20210326153348452

burpsuite 抓包分析

当访问该网页时,网页从数据库返回js语句,然后浏览器解析,触发XSS ,存储型的危害极大,如果有存储型漏洞,每个用户访问都会触发存储型XSS

image-20210326155042686

3.DOM 型 XSS 原理

3.1 DOM 概述

DOM Based XSS 漏洞是基于文档对象模型 (Document Objeet Model,DOM) 的一种漏洞。 它其实属于反射型 XSS 的一种,所以它也通过 URL 来进行触发 XSS 攻击。

ct_htmltree

3.2 Document 对象,使用documen.write() 向输出流写文本

创建一个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 发现输出文本

image-20210328153251550

3.3 关闭浏览器XSS 防护进行 XSS DOM 攻击

现在默认情况下很多浏览器都会存在 XSS 防御,比如Chrome的 XSS-Auditor 功能,我们日常使用都开启了,我们关闭

方法:

1)右击桌面图标,选择属性,复制目标中的内容

"C:\Program Files\Google\Chrome\Application\chrome.exe"

image-20210328153936906

2)在桌面空白处,右击→新建→快捷方式,在"请键入对象的位置" 输入一下内容

"C:\Program Files\Google\Chrome\Application\chrome.exe" --args --disable-xss-auditor

image-20210328154545207

3)起一个名字:Chrome关闭XSS

image-20210328154644157

4)双击运行

image-20210328154426692

4.进入 DVWA 进行 XSS DOM 攻击

image-20210328155026242

可以看到参数在 URL 地址中是可控的

修改URL 中传递的参数为 fengzilin

http://192.168.37.147/DVWA-master/vulnerabilities/xss_d/?default=fengzilin   

image-20210328155208355

可以看到 URL 中的参数被带入到页面中浏览器执行,从而修改页面中内容变为:fengzilin

在URL中加入js脚本

http://192.168.37.147/DVWA-master/vulnerabilities/xss_d/?default=<script>alert("fengzilin");</script>

image-20210328160107824

可以看到我们构造的代码都能够被执行,当然这样可能和其他两种攻击方式也没什么不同,我们切换到网页源代码中查看

image-20210328160552111

这里需要逐步点开才可以看到我们修改的信息位置,注意图片中三角形朝下的项,一次点开即可

image-20210328160652078

我们修改这一项的值为 FZL 然后回车,页面中的值也为修改为 FZL

image-20210328160825675