安全性测试方案
一、静态代码测试
主要通过对源代码进行安全扫描,根据程序中数据流、控制流、语义等信息与其特有软件安全规则库进行匹对,从中找出代码中潜在的安全漏洞。
代码审计工具RIPS:
介绍:RIPS是一个用php编写的源代码分析工具,它使用了静态分析技术,能够自动化地挖掘PHP源代码潜在的安全漏洞。渗透测试人员可以直接容易的审阅分析结果,而不用审阅整个程序代码。由于静态源代码分析的限制,漏洞是否真正存在,仍然需要代码审阅者确认。RIPS能够检测XSS, SQL注入, 文件泄露,Header Injection漏洞等。
官方网站:http://rips-scanner.sourceforge.net/
使用方法:下载后解压到web目录,然后访问此目录,输入需检测的路径(如/var/www/web1)后提交(即点击“SCAN”按钮)。
测试示例:
对于前台功能的测试结果如下图,根据提示找到对应代码并修复。
测试分析:
①前端使用$_FILE获取参数易导致跨站攻击。对于文件上传,可以使用TP自带的上传功能。
②API项目部分参数使用$_POST和$_GET方式获取参数易导致跨站攻击。
③后端使用的Ueditor插件上传部分可能引起跨站攻击,应注意对Ueditor进行相关配置。
二、动态渗透测试
使用自动化工具或者人工的方法模拟黑客的输入,对应用系统进行攻击性测试,从中找出运行时刻所存在的安全漏洞。以反向安全性测试为主(即事先检查哪些地方可能存在安全隐患,然后针对这些可能的隐患进行测试)。
1、建立缺陷威胁模型
建立缺陷威胁模型主要是从已知的安全漏洞入手,检查软件中是否存在已知的漏洞。建立威胁模型时,需要先确定软件牵涉到哪些专业领域,再根据各个专业领域所遇到的攻击手段来进行建模。
涉及领域有:①操作系统
②服务器环境:数据库漏洞、运行语言、服务器
③应用程序:开发框架漏洞、业务逻辑漏洞等
2、寻找和扫描入侵点
检查威胁模型里的哪些缺陷可能在本软件中发生,再将可能发生的威胁纳入入侵点矩阵进行管理。如果有成熟的漏洞扫描工具,那么直接使用漏洞扫描工具进行扫描,然后将发现的可疑问题纳入入侵点矩阵进行管理。
安全领域 |
安全漏洞 |
Web应用 |
SQL注入 |
跨站攻击(XSS) |
|
跨站请求伪造(CSRF) |
|
分布式拒绝服务攻击(DDOS) |
|
文件上传 |
|
暴力破解 |
|
Cookie/Session安全 |
|
数据加密 |
|
越权操作 |
|
开发框架漏洞 |
|
Web服务器 |
目录遍历漏洞 |
不安全的配置管理 |
|
操作系统 |
缓冲区溢出 |
文件执行 |
|
不安全的配置管理 |
3、入侵矩阵的验证测试
1)系统测试
使用360网站安全检测(http://webscan.360.cn/)进行测试。
测试注意:实际测试时,应在测试完一遍以后,将登陆模块注释掉,并初始化用户信息,以便进入个人中心进行测试。测试时建议先清空缓存文件。
测试结果示例:
2)工具测试
使用AWVS进行测试。
下载地址:http://www.freebuf.com/sectool/13103.html (或去官方网站下载)
使用教程:http://www.jb51.net/hack/497815.html
测试注意事项:由于阿里云的安全防护功能,测试可能会被当做攻击而被拦截。因此测试前需要将IP地址加入阿里云白名单,具体可参照360网站安全检测添加IP到阿里云白名单的步骤。如果仍无法进行测试,可以尝试本地测试。
测试结果示例如图:
注:也可使用sqlmap单独进行SQL注入测试。
3)手动测试
由于手动测试的局限性及大工作量,因此不建议使用手动测试。
三、业务逻辑分析
对于静态代码测试与动态渗透测试,只能检查代码的安全性。对于业务逻辑方面仍需要进行分析与测试,以确定业务逻辑实现是否存在漏洞。
①需要走查分析的功能模块:
供车方:报价、新增(员工、司机、巴士、银行卡)、密码修改、代客包车等
包车方:包车发布、登录注册、在线充值、余额提现、完善资料、新增(员工、银行卡)、密码设置等。
②分析内容
1)数据有效性检查
2)是否可以重复提交
3)权限检查
4)……
四、建议
①开通阿里云的WEB应用防火墙
②开通阿里云的态势感知功能
③阿里云云盾会定期扫描网站并检测系统存在漏洞,可以定期检查
④上线前对于Linux、Nginx、php的配置项进行优化