跨站脚本(Cross-site scripting,简称为:CSS,)但与样式css的缩写混淆,因此跨站脚本的缩写是XSS
XSS通常是指利用网页开发时留下的漏洞,通过巧妙的方法注入恶意的指令代码到网页,使用户加载并执行攻击者恶意制造的网页程序
XSS 类型
最常见的集中分类:反射型(非持久性)XSS、存储型(持久型)XSS、DOM型XSS、通用型XSS、突变型XSS
反射型XSS
反射型XSS攻击,是指用户请求一个非法资源时触发的攻击,此类型攻击通常需要用户主动去访问带有攻击的链接,一旦点击链接,恶意服务器可能在你的代码中插入一些获取用户信息的方法,你就会被攻击成功。它的危害性与存储型相比,危害较小
存储型XSS
存储型XSS 攻击最常发生在由社区内容驱动的网站或 Web 邮件网站,不需要特制的链接来执行。黑客仅仅需要提交 XSS 漏洞代码到一个网站,网站后端对提交数据不做任何安全处理,直接存储在数据库中.当其他用户访问这个已被攻击的网站,漏洞代码攻击就会被触发。这个类型的 XSS 攻击会存储在数据库中,持续时间长,影响范围大。
DOM XSS
基于 DOM 的 XSS 攻击是反射型攻击的变种。其攻击在于当确认客户端代码中有DOM型XSS漏洞时其攻击时,在用户正常进行某种操作 ( js 操作) 时,诱使(钓鱼)一名用户访问自己构造的URL触发攻击者的 URL 攻击代码,这种构造的URL不用发送到服务器,可以躲避服务端的检测效果
<html>
<head>
<title>DOM Based XSS Demo</title>
<script>
function xsstest()
{
var str = document.getElementById("input").value;
document.getElementById("output").innerHTML = "<img
src='"+str+"'></img>";
}
</script>
</head>
<body>
<div id="output"></div>
<input type="text" id="input" size=50 value="" />
<input type="button" value="submit" onclick="xsstest()" />
</body>
</html>
通用型XSS
通用型XSS,也叫做UXSS或者Universal XSS,全称Universal Cross-Site Scripting
上面三种XSS攻击的是因为客户端或服务端的代码开发不严谨等问题而存在漏洞的目标网站或者应用程序。这些攻击的先决条件是访问页面存在漏洞,但是UXSS是一种利用浏览器或者浏览器扩展漏洞来制造产生XSS的条件并执行代码的一种攻击类型
突变型XSS
突变型XSS,也叫做mXSS或,全称Mutation-based Cross-Site-Scripting)
如果用户所提供的富文本内容通过javascript代码进入innerHTML属性后,一些意外的变化会使得这个认定不再成立:浏览器的渲染引擎会将本来没有任何危害的HTML代码渲染成具有潜在危险的XSS攻击代码。
随后,该段攻击代码,可能会被JS代码中的其它一些流程输出到DOM中或是其它方式被再次渲染,从而导致XSS的执行。 这种由于HTML内容进入innerHTML后发生意外变化,而最终导致XSS的攻击
XSS攻击的危害
挂马;
盗取用户cookie;DoS(拒绝服务)客户端浏览器;钓鱼攻击,高级钓鱼技巧;编写针对性的 XSS 病毒,删除目标文章、恶意篡改数据、嫁祸;劫持用户 Web 行为, 进一步渗透内网;爆发 Web2.0 蠕虫;蠕虫式的 DDoS 攻击;蠕虫式挂马攻击、刷广告、刷流量、破坏网上数据
1、网页挂马:利用js将一个XSS跨站攻击这样的一个代码挂到你的网页上,当你是一个较老的浏览器,可以利用浏览器的这种漏洞直接攻击你的操作系统,从而获得较高的系统权限
2、DoS:拒绝服务,顾名思义这种攻击是为了让服务器无法提供正常服务,最常见的DoS攻击是网络带宽攻击和连通性攻击
2.1 网络带宽攻击:指以极大的通信量冲击网络,使得所有可用网络资源都被消耗殆尽,最后导致合法的用户请求无法通过
2.2 连通性攻击:指用大量的连接请求冲击计算机,使得所有可用的操作系统资源都被消耗殆尽,最终计算机无法再处理合法用户的请求
3、DDoS:分布式攻击,DoS攻击本身是受网络规模和网络速度的限制,单个计算机没办法做到攻破一台服务器,所以集合许多计算机的带宽来同时对一台服务器发动攻击,即分布式攻击DDoS
XSS 攻击拦截
1、编码:在客户端使用 JavaScript 对用户输入进行编码时,有一些内置的方法和属性可以在自动感知上下文的情况下,对所有的输入数据进行编码
2、过滤器:我们可以对目标web 资源的请求和响应进行拦截,并做一些特定处理。比如在脚本执行之前找出可疑的脚本,并销毁掉。或是做一些黑名单的设置,一般比较常见的攻击方式有javascript:… 及内联事件 on* 对于这种注入,我们可以在浏览器触发点击事件之前,对这些类型on*、javascript:…进行黑名单的设置,然后可以使用 addEventListener对其点击事件进行监听,有这些黑名单的直接返回掉
3、上报攻击信息:我们将攻击者每次攻击信息收集起来,并发送到服务器进行分析、处理。这样一来,不仅可以增强黑名单,还能根据收集到的信息设计针对性措施
暂无评论内容