初探前端WEB安全#2

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/xuexueenen/article/details/53149847

继上一篇文章介绍了浏览器的同源策略以及跨域请求的解决方案,本篇文章打算说说常见的XSS攻击,如果没有写多的话,就再说说CSRF


XSS渗透

XSS,Cross-Site Scripting是一类出现在web应用程序上的安全弱点,攻击者可以通过XSS插入一些代码,使得访问页面的其他用户都可以看到,也就是在html中用注入的Javascript脚本,然后触发执行。它允许攻击者绕过安全机制,通过尝试各种不同的方法插入恶意代码,如在即时通信消息、电子邮件、网页留言等加入进行构造的URL,在用户点击后执行恶意代码,攻击者可以得到敏感页面的权限,会话,cookies,或者其他的东西

XSS本质:

用<>标记注射HTML/JavaScript


如其中的alert语句就源自模版变量的输出,如:<%=content%>


XSS的危害也是极大,一不小心也会对系统造成巨大的损失

1.窃取用户的cookies资料,模拟用户身份登录窃取用户隐私数据

2.网络钓鱼

3.劫持用户(浏览器)会话

4.弹广告页面,刷流量

5.恶意操作

6.进行大量客户端攻击(如DOS,DDOS)

7.传播跨站XSS蠕虫

8.提升用户权限,进一步渗透网站

9.结合其他漏洞(如CSRF)实施进一步攻击

......


XSS渗透的基本原理:


XSS渗透的场景可以分为3类

1.临时型

这也是最简单的一种方式来检验系统的XSS漏洞的方式:

最常用的XSS漏洞的测试代码:


当这个代码被注入到输入框或是url参数的时候,会成功也可能会失败,如果失败了,也不意味着网站就是安全的,需要继续渗透。

如以下输入:


用户提交输入的数据之后,回显到页面之后,将会出现弹出框,这类情况一定要进行XSS过滤或者转义


2.持久型

此类XSS是对用户的数据先保存到服务器,后面才从服务器查询出来并展示到页面上,如果输入的是脚本数据,那么页面对该用户数据同样会执行。

这类XSS威胁性其实更大,比如攻击者在论坛发帖的过程中,将恶意脚本连同正常信息一期注入到帖子的内容中,随着帖子被论坛服务器存储下来,恶意脚本也永久地被存放在论坛服务器的后端存储器中。当其它用户浏览这个被注入了恶意脚本的帖子的时候,恶意脚本则会在他们的浏览器中得到执行,从而受到了攻击。


3.DOM型(Document Object Model XSS)

这类XSS攻击者将攻击脚本注入到 DOM 结构里。出现该类攻击的大多原因是含JavaScrip静态HTML页面存在XSS漏洞,因为此类渗透是基于在js上的,而且他不需要与服务端进行交互,像上述的几种渗透方式都需要服务端的反馈来构造xss,因为服务端对我们是不可见的

感觉挖掘DOM XSS十分麻烦,因为有时你需要追踪源,对方可能自定义函数,所以你需要一步一步把对方的自定义函数搞清楚,笔者脑子笨,也胆子小,不敢去尝试通过XSS去渗透线上的门户网站,只敢自己写一个小例子给大家解释下这样的渗透的效果。

这里笔者使用DOM元素内容的替换来伪装这是一个提交服务器的处理过程,正常的情况下应该是由服务器来返回这样的一个结果

客户端:


这里,我通过对请求URL的分析来获取其GET请求中的参数,这里我假设请求中有a这个参数的传递,并且a参数的值的内容会反馈到DOM元素中


那么在浏览器中:

我输入如下的链接:

http://dev.xs.com/xss/test3.html?a=<script>alert("xss")</script>

在早期的360浏览器上,点击test按钮会有如下的效果,当然为了能够体现这样一个简单示例的效果,笔者也是特意下了一个早期的360浏览器



不过,也是因为浏览器的不同,比如chrome会在你提交数据之前,对URL进行编码,这不是说DOM XSS不行了,因为这也是笔者的一个简单的例子,希望大家能够看到效果,所以不必在意,下方是chrome提交的效果:


大家也要注意,DOM XSS 是基于javascript基础上,而且不与服务端进行交互,他的code对你是可见的。


XSS防御

1.恶意脚本防范,对危险字符进行转义,可以自定义XSS过滤器



2.增加浏览器安全级别



3.开源工具库JS-XSS

http://jsxss.com/zh/index.html



4.避免使用客户端数据,尽量服务端动态生成


其实,说白了,就是不要信任客户端输入的数据,我们一定要对用户输入的内容进行严格的过滤和审查,才能进一步避免XSS这种注入式攻击!


嘿嘿,一不小心就写多了呢,本来还想在#2中简单说说CSRF呢,我也打算移动到下一篇了呢!


以上内容,大神们不免会有嫌弃,毕竟仅仅是浅谈笔者目前项目中开发用到的一点点技术和笔者自己一点点的积累,有啥问题也请大神们指点指点,毕竟笔者也还是个孩子,孩子的邮箱还是那个邮箱:

[email protected]


最后坦白来说,想写的东西有很多,想研究的东西有很多,想说的废话也有很多,嘿嘿,不过毕竟细水长流嘛,笔者也会继续默默的学习,默默的更新博客,尽管路不好走,但还得走啊!


猜你喜欢

转载自blog.csdn.net/xuexueenen/article/details/53149847