博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
XSS(跨站脚本攻击)
阅读量:5109 次
发布时间:2019-06-13

本文共 2644 字,大约阅读时间需要 8 分钟。

 恶意Web用户(骇客)将代码(包括Html代码和客户端脚本如JavaScript)植入到提供给其它用户(受害者)使用的页面中

一、简介:

XSS又叫CSS(Cross Site Script),跨站脚本攻击。它指的是恶意攻击者往Web页面里插入恶意Html代码,当用户浏览该页时,嵌入其中Web里面的Html代码会被执行,从而达到恶意攻击用户的特殊目的。XSS属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。

二、XSS漏洞的分类:

XSS攻击分成两类,一类是来自内部的攻击,主要指的是利用程序自身的漏洞,构造跨站语句,如:dvbbs的showerror.asp存在的跨站漏洞。

另一类则来自外部的攻击,主要指的自己构造XSS跨站漏洞网页或寻找非目标机以外的有跨站漏洞的网页。如当我们要渗透一个站点,我们自己构造一个有跨站漏洞的网页,然后构造跨站语句,通过结合其它技术,如社会工程学等,欺骗目标服务器的管理员打开。

类型A:(威胁个体)本地利用漏洞,这种漏洞存在于页面中客户端脚本自身。

攻击过程:

Alice给Bob发送一个恶意构造了的URL;

Bob点击并查看了这个URL;

恶意页面中的JavaScript打开一个具有漏洞的HTML页面并将其安装在Bob电脑上。

具有漏洞的Html页面包含了Bob电脑本地域执行的JavaScript。

Alice的恶意脚本可以在Bob的电脑上执行Bob所持有的权限下的命令。

类型B:(威胁企业级Web应用)反射式漏洞,与A类似,不同的是Web客户端使用Server端脚本生成页面为用户提供数据时,如果未经验证的用户数据包含在页面中而未经Html实体编码,客户端代码便能注入到动态页面中。

攻击过程:

 Alice经常浏览某个网站,此网站为Bob所拥有。Bob的站点运行Alice使用用户名/密码进行登录,并存储敏感信息(比如银行账户信息)。

Charly发现Bob的站点包含反射性的XSS漏洞。

Charly编写一个利用漏洞的URL,并将其冒充为来自Bob的邮件发送给Alice。

Alice在登录到Bob的站点后,浏览Charly提供的URL。

嵌入到URL的恶意脚本在Alice的浏览器中执行,就像它直接来自Bob的服务器一样。此脚本盗窃敏感信息(授权、信用卡、账号信息等),然后在Alice完全不知情的情况下将这些信息发送到Charly的Web站点。

类型C: (威胁企业级Web应用)存储式漏洞,该类型是最为广泛而且有可能影响到Web服务器自身安全的漏洞,骇客将攻击脚本上传到服务器上,使得所有访问该页面的用户都面临信息泄漏的可能,其中包括了Web服务器的管理员。

攻击过程:

 Bob拥有一个Web站点,该站点允许用户发布信息/浏览已经发布的信息。

Charly注意到Bob的站点具有类似C的XSS漏洞。

Charly发布一个热点信息,吸引其它用户纷纷阅读。

Bob或者任何其他人如Alice浏览该信息,其会话Cookie或者其它信息将被Charly盗走。

三、XSS攻击的危害:

1.盗取各类用户账户,如机器登录账号、用户网银账号、各类管理员账号;

2.控制企业数据,包括读取、篡改、添加、删除企业敏感数据的能力;

3.盗窃企业重要的具有商业价值的资料;

4.非法转账;

5.强制发送电子邮件;

6.控制受害者机器向其他网站发起攻击。

四、XSS的防御

1.基于特征的防御

传统XSS防御多采用特征匹配方式,在所有提交的信息中都进行匹配检查。对于这种类型的XSS攻击,采用的模式匹配方法一般会需要对“javascript”这个关键字进行检索,一旦发现提交的信息中包含"javascript",就认定为XSS攻击。

缺陷:骇客可以通过插入字符或完全编码的方式躲避检测。并且对所有包含了“javascript”的关键字,也会发生报警。

如:

1)在javascript中加入多个tab键,得到<img src="javascript:alert('XSS');">;

2)在javascript中加入“空格”字符,得到<img scr="javascri pt:alert('XSS');">;

3)在javascript中加入“回车”字符。

4)在javascritp中的每字字符间加入回车换行符,得到

5)采用完全编码,得到<img src=javascrip?74:alert('xss')>

2.基于代码修改的防御(从Web开发角度来避免)

步骤1、对所有用户提交内容进行可靠的输入验证,包括对URL、查询关键字、HTTP头、POST数据等,仅接受指定长度范围内、采用适当格式、采用所预期的字符的内容提交,对其他的一律过滤。
步骤2、实现Session标记(session tokens)、CAPTCHA系统或者HTTP引用头检查,以防功能被第三方网站所执行。
步骤3、确认接收的的内容被妥善的规范化,仅包含最小的、安全的Tag(没有javascript),去掉任何对远程内容的引用(尤其是样式表和javascript),使用HTTP only的cookie。
当然,如上操作将会降低Web业务系统的可用性,用户仅能输入少量的制定字符,人与系统间的交互被降到极致,仅适用于信息发布型站点。并且考虑到很少有Web编码人员受过正规的安全培训,很难做到完全避免页面中的XSS漏洞。

3.基于攻击手法的行为检测方法(天清入侵检测产品)

首先对各种场景下的XSS攻击样本库进行整理和分类,并建立起XSS攻击行为特征库,在实时攻击检测阶段,对所有可能实现XSS攻击的数据来源,如HTTP-Refe、URL、Cookie、表单数据等,进行数据收集和初步分析,存在注入脚本的用户提交信息才进入下一步的XSS攻击判断。

优势:

A.采用行为特征库而非数据特征库方式,可以避免由于检测固定特征导致的误报可能。

B.内置数据预处理过程,可以对所有可能包含XSS攻击的数据进行预处理,放行大部分正常HTTP请求,仅对少量疑似事件进行深入分析,提升分析速度,降低资源开销。

五、案例

1.在MySpace上传播的XSS攻击性的蠕虫病毒,;

2.2011年6月28日,新浪微博的XSS攻击,。

 

转载于:https://www.cnblogs.com/AngelLee2009/archive/2011/10/24/2223031.html

你可能感兴趣的文章
【iOS越狱开发】如何将应用打包成.ipa文件
查看>>
[NOIP2013提高组] CODEVS 3287 火车运输(MST+LCA)
查看>>
Yii2 Lesson - 03 Forms in Yii
查看>>
Python IO模型
查看>>
Ugly Windows
查看>>
DataGridView的行的字体颜色变化
查看>>
Java再学习——关于ConcurrentHashMap
查看>>
如何处理Win10电脑黑屏后出现代码0xc0000225的错误?
查看>>
局域网内手机访问电脑网站注意几点
查看>>
c++ STL
查看>>
json数据在前端(javascript)和后端(php)转换
查看>>
[Serializable]的应用--注册码的生成,加密和验证
查看>>
Groovy中那些神奇注解之ToString
查看>>
Day19内容回顾
查看>>
第七次作业
查看>>
MySql update inner join!MySql跨表更新 多表update sql语句?如何将select出来的部分数据update到另一个表里面?...
查看>>
SpringBoot项目打包
查看>>
Linux操作系统 和 Windows操作系统 的区别
查看>>
《QQ欢乐斗地主》山寨版
查看>>
文件流的使用以及序列化和反序列化的方法使用
查看>>