对网站进行渗透测试前,如果发现网站使用的程序是开源的CMS,测试人员一般会在互联网上搜索该CMS已经公开的漏洞,然后尝试利用公开的漏洞进行测试。由于CMS已开源,所以可以将源码下载后,直接进行代码审计,寻找源码中的安全漏洞。下面将结合实际的源码,介绍几种常见的安全漏洞。
代码审计的工具有免费的也有商业的,例如RIPS、Fortify SCA、Seay源码审计工具、FindBugs等。这些工具实现的原理有定位危险函数、语句分析等。在实际的代码审计过程中,工具只是辅助,更重要的是测试人员要具有较强的代码开发知识,结合业务流程,寻找代码中隐藏的漏洞。
在代码审计时,常用的IDE是PHPSTORM+Xdebug,通过配置IDE,可以单步调试PHP代码,方便了解CMS的整个运行流程。
1、SQL注入漏洞
打开CMS源码的model.php文件(model文件一般为操作数据库的文件),会发现函数GETInfoWhere()将变量$strWhere直接拼接到select语句中,没有任何的过滤,代码如下所示。