代码审计利器-RIPS实践

什么是RIPS?
RIPS是最流行的静态代码分析工具,可自动检测PHP应用程序中的漏洞。 通过对所有源代码文件进行标记化和解析,RIPS能够将PHP源代码转换为程序模型,并检测在程序流程中可能被用户输入(受恶意用户影响)污染的敏感接收器(可能易受攻击的功能)。 除了发现漏洞的结构化输出外,RIPS还提供了一个集成的代码审计框架。

目前最新版本为0.55
作为审计工具,自然需要有源码供其审计,这里以dvwa为例,两者已经压缩包都已经提供(dvwa搭建注意事项参考:https://zhuanlan.zhihu.com/p/34970507)

现在开始实验:
将rips解压后的文件夹移动到网站根目录下
代码审计利器-RIPS实践_第1张图片
浏览器访问localhost/rips-0.55即可访问主界面
代码审计利器-RIPS实践_第2张图片
最上方是所有功能按钮菜单
在这里插入图片描述
由上到下,由左到右依次是:
要扫描的源码路径
扫描级别 扫描类型
代码样式 正则表达式
使用非常简单,这里我们以扫描dvwa为例进行讲解

在第一个框中输入dvwa源码的绝对路径
在这里插入图片描述
右边的subdirs勾选表示递归扫描子文件夹
扫描级别选择只扫描用户指定的
代码审计利器-RIPS实践_第3张图片
扫描类型处可以选择全部扫描也可以选择只扫描某种类型,此处以扫描文件包含漏洞为例
代码审计利器-RIPS实践_第4张图片
点击右侧的scan即开始扫描
此时为弹出警示,意思是说要扫描的文件太多了,确定扫描吗?
点击continue即可
代码审计利器-RIPS实践_第5张图片
可以看到扫描过程也是比较快的
代码审计利器-RIPS实践_第6张图片
扫描之后注意到右侧有四个按钮
在这里插入图片描述
点击files显示被扫描的文件
代码审计利器-RIPS实践_第7张图片
点击user input显示的是用户输入点
代码审计利器-RIPS实践_第8张图片
functions显示被扫描的函数
代码审计利器-RIPS实践_第9张图片
stats会出来一个报表
代码审计利器-RIPS实践_第10张图片
包含详细的扫描信息,我们只需关注扫描出一个文件包含漏洞
将报表关掉后,在主界面可以看到代码
在这里插入图片描述
从代码中可以看出,page参数没有任何过滤措施,攻击者可以尝试控制page参数
回顾一下什么是文件包含?
服务器包含文件时,不管文件后缀是否是php,都会尝试当做php文件执行,如果文件内容确为php,则会正常执行并返回结果,如果不是,则会原封不动地打印文件内容,所以文件包含漏洞常常会导致任意文件读取与任意命令执行

我们注意到左侧有四个小按钮
在这里插入图片描述
第一个按钮可以查看代码,定位到出现漏洞的地方
代码审计利器-RIPS实践_第11张图片
可以看到此处是由Include()这个特性函数引起的
第二个按钮用于缩略
在这里插入图片描述
第三个按钮可以查看帮助(这也是最有用的)
代码审计利器-RIPS实践_第12张图片
在帮助说明中会解释什么是文件包含漏洞,漏洞是如何产生的,漏洞的样例代码
在这里插入图片描述
还会给出poc
在这里插入图片描述
如果是代码的开发者自行审计的话,还可以参照给出的patch进行修复
在这里插入图片描述

既然找到了漏洞,我们就定位到dvwa,打开相应的文件
代码审计利器-RIPS实践_第13张图片
根据RIPS给的poc来验证是否真的存在文件包含漏洞
poc中给的是读取linux下的/etc/passwd,我们使用的windows,所以可以尝试读取hosts文件,poc如下:
?page=file:///C:\Windows\System32\drivers\etc\hosts
执行结果如图,果然读到了hosts文件
代码审计利器-RIPS实践_第14张图片

你可能感兴趣的:(代码审计利器-RIPS实践)