前言
近日发现了一款有意思的PHP静态代码审计工具——Wpbullet。与其他PHP代码审计工具不同的是,Wpbullet是一款针对WordPress插件/主题开发的静态代码分析工具。
Wordpress自身代码尚且可以说很安全,但是其插件的安全却参差不齐,这款工具可以对WordPress、插件、主题进行静态代码初步的审计,方便后续的漏洞挖掘工作。
由于该工具的说明文档较少,我对其工作原理以及其检测能力比较好奇,因此这篇文章除了简单介绍一下这个工具如何使用之外,更重要的是分析Wpbuttle这块工具的源码,介绍一下它的检测思路。
工具安装
Wpbulle的github地址如下:
https://github.com/webarx-security/wpbullet
安装过程很简单,只需克隆项目、安装依赖并运行脚本即可
\$ git clone https://github.com/webarx-security/wpbullet wpbullet
\$ cd wpbullet
\$ pip install -r requirements.txt
\$ python wpbullet.py
python2.x python3.x环境皆可使用。笔者这里测试使用的是python3.7环境
工具使用
可用选项:
值得注意的是Wpbulle这款工具除了支持对本地源代码的审计之外,还支持根据传入的插件/主题
URL
自动下载源码来审计。如上图使用说明可见,--path除了可以传入本地插件目录以外,还支持传入wordpress官网中插件下载路径,工具将对插件下载解压并进行审计操作。
在了解了Wpbulle工具如何安装与使用后,我们来看一下Wpbulle代码,了解一下这个工具是如何实现的,以及其是否能很好的帮助我们挖出漏洞
首先我们来到扫描入口处wpbullet-dev/core/scanner.py
在scan中,首先可以看到其根据需要,从提供的wordpress官网插件地址进行下载的操作,如下图:
上图分别对非zip与zip文件进行下载处理。当然,如果我们用Wpbulle扫描本地插件,是不需要进行上图下载操作。
Scan方法中随后遍历插件目录,对后缀为php的文件调用check_file对文件进行分析,见下图红框出:
我们跟进一下check_file方法