日常vlog。
近期公司参与了一次网络安全大检查。手上有个项目被检测出存在XSS攻击漏洞,解决漏洞的同时,借此机会分享一下关于XSS攻击的一些学习总结。
一、是什么
XSS攻击,也叫跨站脚本攻击,通常是利用网页开发时留下的漏洞,通过巧妙的方法注入恶意指令代码到网页。这些恶意网页程序通常是JavaScript。攻击成功后,攻击者也有可能得到更高的权限、私密网页内容、会话和cookie等,危害极大。
二、什么原理
HTML是一种超文本标记语言,通过将一些字符特殊地对待来区别文本和标记,例如,小于符号(<)被看作是HTML标签的开始,
三、有哪些类型
XSS根据其特性和利用手法的不同,主要分成两大类型:
1、反射型XSS
反射型跨站脚本(Reflected Cross-site Scripting)也称作非持久型、参数型跨站脚本。这种类型的跨站脚本是最常见,也是使用最广的一种,主要用于将恶意脚本附加到URL地址的参数中,例如:
http://www.test.com/search.php?key="><script>alert("XSS")</script>
http://www.test.com/help.shtml?query=%3Cscript%3Ealert%281%29%3C/script%3E
http://www.test.com/logout.asp?out=1&url=javascript:alert(document.cookie)
反射型XSS的利用一般是攻击者通过特定手法(比如利用电子邮件),诱使用户去访问一个包含恶意代码的URL,当受害者单击这些专门设计的链接的时候,恶意JavaScript代码会直接在受害者主机上的浏览器执行。它的特点是只在用户单击时触发,而且只执行一次,非持久化,所以称为反射型跨站式脚本。
图源:XSS跨站脚本攻击剖析与防御(邱永华著)
2、持久型XSS
持久型跨站脚本(Persistent Cross-site Scripting)也等于存储型跨站脚本(Stored Cross-site Scripting),比反射型跨站脚本更具威胁性,并且可能影响到Web服务器自身的安全。此类XSS不需要用户单击特定URL就能执行跨站脚本,攻击者事先将恶意JavaScript代码上传或存储到漏洞服务器中,只要受害者浏览包含此恶意JavaScript代码的页面就会执行恶意代码。
图源:XSS跨站脚本攻击剖析与防御(邱永华著)
四、有哪些危害
1、网络钓鱼,包括盗取各类用户账号;
2、窃取用户cookies资料,从而获取用户隐私信息,或利用用户身份进一步对网站执行操作;
3、劫持用户(浏览器)会话,从而执行任意操作,例如进行非法转账、强制发表日志、发送电子邮件等;
4、强制弹出广告页面、刷流量等;
5、网页挂马;
6、进行恶意操作,例如任意篡改页面信息、删除文章等;
7、进行大量的客户端攻击,如DDoS攻击;
8、获取客户端信息,例如用户的浏览历史、真实IP、开放端口等;
9、控制受害者机器向其他网站发起攻击;
10、结合其他漏洞,如CSRF漏洞,实施进一步作恶;
11、提升用户权限,包括进一步渗透网站;
12、传播跨站脚本蠕虫等。
五、如何防御
1、 使用 XSS Filter
XSS Filter的作用是过滤用户(客户端)提交的有害信息,从而达到防范XSS攻击的效果。XSS Filter作为防御跨站攻击的主要手段之一,已经广泛应用在各类Web系统之中,包括现今的许多应用软件,例如 IE 8浏览器,通过加入XSS Filter功能可以有效防范所有非持久型的XSS攻击。
图源:XSS跨站脚本攻击剖析与防御(邱永华著)
2、Web安全编码规范
在安全领域,有一条黄金法则:“一切输入都是有害的”。即便是这样,因为业务需求,不可能完全过滤用户输入的某些内容,比较可行的解决方案就是在服务端进行 Web 安全编码,让有害的数据变成无害。
在输出数据前对潜在威胁的字符进行编码、转义,是防御XSS攻击的有效措施。
3、防御DOM-Based XSS
DOM型的XSS主要是由客户端的脚本通过DOM动态地输出数据到页面中,它不依赖于提交数据到服务器端,而从客户端获得DOM中的数据在本地执行。由于被处理的数据不在服务器的直接控制范围内,所以仅从服务器端部署防御措施是无法解决问题的。
防范基于DOM的XSS攻击要注意两点。
(1) 避免客户端文档重写、重定向或其他敏感操作,同时避免使用客户端数据,这些操作尽量在服务端使用动态页面来实现。
(2)分析和强化客户端JavaScript代码,尤其是一些受到用户影响的Dom对象。
4、其他防御措施
还有很多防御措施这里不一一列举。最重要一点还是在于我们平时编码要有一种危机感,不安全感。对自己的代码多持一些怀疑态度,不仅仅是考虑到功能实现了就万事大吉了。
关注 @程序喵子好东西与大家共同分享,共同进步!
更多精彩推荐: