不说啥了,直接上原文:
两篇文章的地址分别为:http://rdc.taobao.com/blog/qa/?p=857
http://rdc.taobao.com/blog/qa/?p=882
什么是xss漏洞
XSS又叫CSS英文缩写为Cross Site Script
中文意思为跨站脚本攻击
具体内容指的是恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,
嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的.
xss的漏洞危害
- 获取用户cookie
- 修改页面信息
- 浏览器劫持
- 与其他漏洞结合(如:csrf漏洞)
- 其他
xss漏洞实例演示
- 略(在这里放貌似不太合适)
xss漏洞是如何产生的
以下Velocity模板VM中常见的代码
- <span>$!productName</span>
- <script>var from = ‘$!rundata.Parameters.getString(’from’)';</script>
对于第一种类型的代码我们可以输入变量为
<iframe src=http://hacker.com></iframe>
第一种类型的代码将变为
<span><iframe src=http://hacker.com></iframe></span>
对于第二种类型的代码我们可以输入变量为
‘;hackerFunction(document.cookie);’
第二种类型的代码将变为
<script>var from = ”;hackerFunction(document.cookie);”; </script>
以上两种类型的代码都轻易的被植入了恶意的脚本,也就是说产生了传说中的xss漏洞。
xss漏洞如何预防
1. 对于非富文本针对入参进行转义
可通过escapeHtml和JavaScript进行转义。
转义过后上面的代码将会变成
<span><iframe src&equalshttp&colon&sol&solhacker&periodcom><&soliframe></span>
转义后用户输入的恶意脚本代码就不会被执行从而达到了预防和修复的目的。
2. 对于富文本入参进行过滤
略。
总结
本篇简要介绍了什么是xss漏洞,xss漏洞在代码中是如何产生的,简单介绍了如何去预防和修复xss漏洞。
黑盒手动测试
- 有输入框的页面测试
对于非富文本在输入框中输入特殊字符 <”tiehua ‘> 提交
在提交后的页面查看源代码根据关键字tiehua查找源代码中的tiehua前后的<”>’是否已经被转义成
<">&apos 如果未被转义说明这个输入框存在xss漏洞的嫌疑(提交bug)。
对于富文本输入框输入<img onerror=”alert(123)” src=http://xxx.com>提交页面
如果页面有出现排版问题或者js错误说明这个输入框存在xss漏洞的嫌疑(提交bug)。
- 页面链接参数的测试
链接带参数的如:
http://mall.taobao.com/?ad_id=&am_id=&cm_id=&pm_id=
该链接包含了4个参数,对于这种的测试方法和输入框测试方法一样只不过把参数当成你的输入框进行
提交。如:
http://mall.taobao.com/?ad_id=<”tiehua’>&am_id=&cm_id=&pm_id=
另:可能大家会说光这点不足以说服开发修改bug,很可惜本文旨在说明如何找到xss漏洞并不是说明
如何利用xss漏洞,感兴趣的看情况线下交流呵呵。
黑盒工具测试
推荐工具
- Paros(免费)
- Acunetix.Web.Vulnerability.Scanner (商业工具)
白盒代码扫描测试
在上一篇中我们讲到了xss漏洞产生的代码原因和解决方法如:
<span>$!productName</span>
此类的非富文本代码我们可以强制要求规范为:
<span> $!stringEscapeUtil.escapeHtml ($!productName)</span>
对于富文本的我们可以强制要求代码规范为通过过滤层过滤。
根据以上的两条规则,我们可以从白盒代码上去进行静态扫描代码是否按照规范编写来预防和筛选xss漏洞。