安全测试总结
安全测试的问题分类
- sql注入
- js攻击
- 缺head头
- 其他
安全测试的工具
- appscan
- BurpSuite
安全测试流程
- 启动网站(如果影响不大,可以把登陆退出功能暂时注释掉,在程序里写上固定的用户),确定网站可以正确运行,数据齐全(建议使用新建的数据库,因为安全测试会导入很多乱七八糟的数据)
- 运行测试软件,配置测试环境(比如数据库类型,系统类型等),手动探索,把所有的连接,功能什么的都运行一遍
- 进行安全测试(由于时间较长,所以要把测试服务器和测试机的节能关掉,以免自动休眠)
- 依次手动检验测试出来的每一个问题,力求复现每一个问题,删除误判的,导出测试报告
- 整理excel表格,依次列出每个问题的url,发生问题的参数,并标明修改进度(未重现,重现,修改完毕,复查完毕,已保留)
- 已重现的找相关人员进行修改,未重现的或者不理解的找相关人员或高级工程师进行咨询确认.
- 手动测试已经修改过的问题,确认不会复现
- 用测试工具打开上次的测试文件,重新测试.
- 根据测试结果再次整理漏洞进度表格
- 写测试报告
注意:
1.测试软件测出的问题不一定是准确的,只有能手动复现的问题才算漏洞.
2.不能复现的问题,不一定不存在,可能是你技术水平不过关或者复现方法有问题
3.测试软件没测出来的问题类型,不一定不存在,可以进行手动测试
4.测试软件测的某类问题不一定全面,如果测出一个问题,并且可以复现,那么其他类似的功能可能都有这个问题,即使软件没测出来
1.sql注入
问题产生原因: 后台没有使用框架的参数注入功能,而使用了sql字符串和参数的拼接
测试方法: ' or 'f'='f' 或者 ' and 'f'!='f'
修复方法: 使用框架本身的set方法来注入值,或者转义参数中的特殊字符,比如',--等(这个方法不保险,因为总会遗忘一些东西)
2.js攻击
主要为XXS攻击和CSRF攻击
XSS攻击
问题产生原因: 后台传来的参数里面的特殊符号没有进行转义
测试方法: '"><script>alert(1)</script> 或者'"></script>
修复方法: 1.后台传参之前,对特殊符号进行转义.
2.使用ajax等方法,获取参数后,在前台使用进行转义
3.使用<c:out value="${xxx}"/>
4.放入隐藏的textarea中,用js取出来使用.
CSRF攻击
问题产生原因: 没有区分请求的来源网站
测试方法: 写一个form表单,提交到测试网站中,看看是否能执行
修复方法: 添加一个随机的隐藏参数,参考网站 http://www.ibm.com/developerworks/cn/web/1102_niugang_csrf/
其他js攻击:盗用cookie,盗用会话标识....
3.缺head头
问题产生原因: 缺少head头或者meat标签
测试方法: 查看浏览器的network,看看response头有哪些
修复方法: 补充缺少的head头 (参考安全相关的head头)
4.其他
其他问题零零散散,也不少,有严重的,有不严重的,比如:
系统级别漏洞:可以任意上传下载文件(这个主要是把文件路径写在了参数里面),修改策略:路径应该保存再数据库,参数里写相应路径的id;
框架级别漏洞:比如当年的struts2的漏洞#xxx19(好像是这个号),可以直接被黑客操纵获取服务器的root权限,简直屌爆了.
参考漏洞:html中留有系统相关的注释(这里建议使用jsp的注释,源码可看,转成html就没了<%--”和“--%>
安全测试工具:
appscan:
我现在用的是appscan9.0,这个版本有破解文件,总体来说使用方便,可以生成美观的pdf格式的漏洞报告,很给力,缺点是很多误报
BurpSuite:
这个软件分为free版和收费版,free版只有拦截器的功能,不能进行安全测试,收费版可以进行安全测试,从我的几次操作来看,能测出一些appscan无法测出的问题.
当然,因为这个软件的破解不完全(到了一定时间破解就失效了),所以我通常用它来做拦截器
wireshark:
这个软件本身不能进行安全测试,但是由于抓包功能强大,所以可以作为辅助作用,比如当appscan频繁让你登陆时,你可以抓包看看发送的请求是不是缺少认证(我经历过一次,抓包显示appscan发送的请求总是缺少认证,由于appscan配置不是很熟练,所以把程序的第三方认证给删了).