一、代码安全测试简介
定义
就是从安全的角度对代码进行的安全测试评估。同时结合丰富的安全知识、编程经验、测试技术,利用静态分析和人工审核的方法寻找代码在架构和编码上的安全缺陷,在代码形成软件产品前将业务软件的安全风险降到最低。
二、代码安全测试方法(动态和静态)
(1)、静态方面
说明:静态方面的代码审核采用的是人工审核和静态分析工具辅助的方式进行
人工审核:<工具:xsearch_CHS.exe>
既能解决内部问题也能解决外部问题。是目前最有效率的解决方案,并且在理论上手工代码审核是非常有效的,但人工审核的效率不高,所以我们会采用自动化分析工具辅助人工的方式来提高审核效率
静态分析工具
通过一组全面规则,测试机制和方针在软件开发过程、测试中发现软件的安全缺陷
三、代码审计的通用思路
⑴.通读全文代码,从功能函数代码开始阅读,例如include文件夹下的common_fun.php,或者有类似关键字的文件。
⑵.看配置文件,带有config关键字的文件,找到mysql.class.php文件的connect()函数,查看在数据库连接时是否出现漏洞。
⑶.继续跟读首页文件index.php,了解程序运作时调用了哪些函数和文件以index.php文件作为标线,一层一层去扩展阅读所包含的文件,了解其功能,之后进入其功能文件夹的首页文件,进行,扩展阅读。
四、漏洞产生的原因
⑴.变量控制不严(一切输入都是有害)。
⑵.变量到达有利用价值的函数(一起进入函数的变量都是有害的),漏洞的利用效果取决于最终函数的功能。
五、漏洞挖掘流程分析(找关键字)
SQL注入关键字:
select、insert、update、KaTeX parse error: Expected group after '_' at position 1: _̲_GET、___POST、$__REQUEST
上传漏洞关键字:
$__FILES、move___uploaded__file
执行漏洞关键字:
shell___exec、exec、passthru system、popem
包含漏洞关键字:
include、include____once、require、require____once
变量覆盖关键字:
$$
跨站漏洞关键字:
echo、print、print_r、var_dump、var_export,insert
六、手工代码审计实例分析
⑴、phpweb的安装
①.将phpweb安装包复制PHPstudy的网站根目下
②.通过浏览器访问<192.168.60.19:99/phpweb/base/install/>进行安装
关于安装phpweb中出现乱码问题的解决方案:
这种情况出现的主要原因是PHPstudy中中间件的版本问题,多出现在PHPstudy 2018上,由于编码不能被解析,因此常常出现乱码。
解决方案:
1、更换2016版本的PHPstudy;
2、更改php.ini配置文件,(zend_extension_ts=“F:\ZEND\lib\Optimizer-3.2.6\php-5.2.x\ZendOptimizer.dll”),复制添加到其中即可,
!!!!注意:路径以“php-5.2.x\ZendOptimizer.dll”文件所在的路径为主。
③、界面恢复正常后,点击接受协议,然后下一步,输入数据库名和密码,输入登录账号,完成安装。
⑵、关于PHP源代码审计工具seay的使用说明
①、由于是绿色版直接打开即可;
②、添加源码:
③、此时可以根据需要添加关键字或者条件来进行审计。
检测完成后可以相应文件进行查看。
⑶、关于扫描工具惠普扫描器的使用说明
按照默认,点击确定。
根据扫描出的判断,进行试验。
举例:
七、工具的局限性
- 工具本身存在一定量的误报或者漏报。
- 扫描结果需要大量人工确定甄别。
- 如用多种语言开发的软件,则需单独分析。
- 使用工具缺乏规范化的编码规范。
- 不能自动收集常见的代码安全问题。