欢迎新同学的光临 … … 人若无名,便可专心练剑
我不是一条咸鱼,而是一条死鱼啊!
前言
代码审计工具可以辅助我们进行白盒测试,大大提高漏洞分析和代码挖掘的效率。 常用的代码审计工具之后,选取其中的PHP源码审计工具 —— Rips 做详细的使用说明
工具介绍
在源代码的静态安全审计中,使用自动化工具辅助人工漏洞挖掘,一款好的代码审计软件,可以显著提高审计工作的效率。学会利用自动化代码审计工具,是每一个代码审计人员必备的能力。 代码审计工具按照编程语言、审计原理、运行环境可以有多种分类。目前商业性的审计软件一般都支持多种编程语言,比如VCG(VCG)、Fortify SCA,缺点就是价格比较昂贵。其他常用的代码审计工具还有findbugs、codescan、seay,但是大多都只支持Windows环境。针对PHP代码审计,这里只介绍免费的支持linux环境的 PHP 代码审计软件——Rips
RIPS是一款开源的,具有较强漏洞挖掘能力的自动化代码审计工具。它使用PHP语言编写的,用于静态审计PHP代码的安全性。
VCG(VisualCodeGrepper),是一款支持C/C++、C#、VB、PHP、Java和PL/SQL的免费代码安全审计工具。它是一款基于字典的检测工具,功能简洁,易于使用。
Fortify SCA(Static Code Analyzer)是由Fortify软件公司(已被惠普收购)开发的一款商业版源代码审计工具。它使用独特的数据流分析技术,跨层跨语言地分析代码的漏洞产生,目前支持所有的主流开发语言。
RIPS 使用教程
RIPS是一个用php编写的源代码分析工具,它使用了静态分析技术,能够自动化地挖掘PHP源代码潜在的安全漏洞。渗透测试人员可以直接容易的审阅分析结果,而不用审阅整个程序代码。由于静态源代码分析的限制,漏洞是否真正存在,仍然需要代码审阅者确认。RIPS能够检测XSS, SQL注入, 文件泄露,Header Injection漏洞等。
由于RIPS审计效率不是很高,如果审计一个大型的cms源码会花掉很多的时间,所以考虑过后决定选择前面课程中下载的代码进行审计,同学们学会工具的使用方法之后,可以课后自己下载一套cms源码来尝试进行分析
打开浏览器,输入url:http://localhost/rips
这就是rips的主界面,接下来我会向你一一介绍这些选项的含义
-
subdirs:如果勾选上这个选项,会扫描所有子目录,否则只扫描一级目录,缺省为勾选 -
verbosity level:选择扫描结果的详细程度,缺省为1(建议就使用1) -
vuln type:选择需要扫描的漏洞类型。支持命令注入、代码执行、SQL注入等十余种漏洞类型,缺省为全部扫描 -
code style:选择扫描结果的显示风格(支持9种语法高亮) -
/regex/:使用正则表达式过滤结果
值得注意的是:官方宣称rips只支持在firefox中使用
接下来在path/file中输入扫描目录:/var/www/html/codeaudit, 点击scan:
可以看到,扫描结果以图标的形式给出,非常直观。
rips对扫描到的课程存在漏洞的代码,不仅会给出解释,还会给去相应的利用代码,比如:
比如上图中,扫描到一个命令注入漏洞cmdinject1.php(确实是我们之前命令注入章节的实验代码),打开详情,可以看到它给出的解释是Userinput reaches sensitive sink.,即用户能够输入敏感信息, 造成命令注入漏洞。
点击左边的问号,会为你解释什么是命令注入漏洞:
点击左边的红色按钮,还能生成漏洞利用代码:, 比如,就拿这个漏洞来举例,再bash一栏种输入uname -a,点击creat,再将生成的代码保存为testcode.php:
在testcode.php保存目录执行命令:php testcode.php localhost/codeaudit/cmdinject:
可以看到成功返回服务器版本信息。
另外,help信息中还给出了漏洞的修补方案:
翻译过来就是:
将代码限制为非常严格的字符集或构建允许输入的命令的白名单。 不要试图过滤恶意的命令,攻击者总是能绕过。 尽量避免使用系统命令执行功能。 示例代码: modes = array(“r”,“w”,“a”); if(!in_array(modes=array(“r”,“w”,“a”);if(!ina?rray( _ GET [“mode”],$ modes))exit;
我自横刀向天笑,去留肝胆两昆仑
|