一款针对Wordpress开发的代码审计工具——Wpbuttle(工具介绍与源码分析)
字数 1768 2025-08-20 18:17:53

WordPress代码审计工具Wpbuttle使用与源码分析

前言

Wpbuttle是一款针对WordPress插件/主题开发的PHP静态代码审计工具。与其他PHP代码审计工具不同,它专门为WordPress生态系统设计。虽然WordPress核心代码相对安全,但其插件和主题的安全质量参差不齐,Wpbuttle能够对这些组件进行初步的静态代码分析,辅助漏洞挖掘工作。

工具安装

  1. 克隆项目仓库:

    git clone https://github.com/webarx-security/wpbullet wpbullet
    
  2. 进入项目目录:

    cd wpbullet
    
  3. 安装依赖:

    pip install -r requirements.txt
    
  4. 运行工具:

    python wpbullet.py
    

注意:工具支持Python 2.x和3.x环境,测试环境为Python 3.7。

工具使用

基本命令选项

Wpbuttle支持以下主要选项:

  • --path: 指定本地插件目录或WordPress官网插件下载路径
  • --url: 指定插件在WordPress官网的URL
  • --output: 指定输出文件路径

特色功能:工具不仅能扫描本地源代码,还能根据提供的插件/主题URL自动下载并审计。

扫描流程

  1. 如果提供的是WordPress官网插件URL,工具会先下载插件:

    • 处理非zip文件
    • 处理zip压缩包文件
  2. 遍历插件目录,对所有.php文件进行分析

  3. 对每个PHP文件执行两种检查:

    • passive_check_processor: 被动检查
    • process_file: 主动检查

源码分析

被动检查(passive_check_processor)

被动检查主要分析WordPress特定的钩子注册方式,包含三个主要扫描器:

1. scope_admin_actions

检测使用admin_action_前缀注册的钩子,正则表达式为:

(add_action(\s{0,}\S{0,})\((\s{0,}\S{0,})(\"|')(adminaction[a-zA-Z0-9-]+))(?!{}(\"|')(\s{0,}\S{0,}),(.+)(\"|')(\s{0,})([a-zA-Z0-9-]+)(\s{0,})(\"|')

安全风险admin_action_前缀的钩子可通过http://[WordPress路径]/wp-admin/admin.php?action=xxx访问,任何已登录用户均可访问,可能导致权限绕过漏洞。

案例:Keypic插件2.1.2版本存在任意用户删除漏洞,通过admin_action_keypic_report_spam_and_delete_user钩子实现。

2. scope_ajax_hooks

检测使用wp_ajax_前缀注册的钩子。

安全风险:这类钩子可通过http://[WordPress路径]/wp-admin/admin-ajax.php?action=xxx访问,同样存在权限控制风险。

3. scope_admin_init

检测使用admin_init注册的初始化操作。

安全风险:相关回调可通过admin-ajax.phpadmin-post.php触发,已登录用户均可访问。

主动检查(process_file)

主动检查加载预编译的扫描插件(位于Modules目录),主要检测:

  1. 高危函数调用:如代码执行、文件操作等危险函数
  2. 输入过滤缺失:检查用户输入是否未经安全函数过滤直接传入高危函数

检测原理

  • functions列表:定义高危函数
  • blacklist列表:定义安全过滤函数
  • build_pattern方法:生成检测规则的正则表达式
  • user_input检查:判断参数是否可控

示例检测

<?php
$var = $_GET['x'];
eval($var);

扫描结果:会标记出未经过滤的用户输入直接传入eval函数的风险。

工具优缺点分析

优点

  1. 专门针对WordPress生态设计,针对性较强
  2. 原理简单,易于理解和扩展
  3. 支持远程下载和自动扫描
  4. 结合了WordPress特有的安全检测点

缺点

  1. 基于文本特征分析,相比基于AST和CFG的工具(如RIPS)准确性较低
  2. 难以准确判断外部输入是否经过安全处理
  3. 漏报率较高
  4. 文档说明较少

总结

Wpbuttle作为一款专门针对WordPress的静态代码分析工具,虽然存在一些局限性,但仍能有效辅助安全研究人员进行WordPress插件和主题的漏洞挖掘工作。通过理解其工作原理和检测逻辑,用户可以更好地利用它发现潜在的安全问题,并结合手动分析提高漏洞发现的准确率。

对于希望扩展或改进该工具的研究人员,建议从以下几个方面入手:

  1. 增加更多WordPress特有的检测规则
  2. 改进检测逻辑,减少误报和漏报
  3. 完善文档说明
  4. 考虑引入更高级的代码分析技术
WordPress代码审计工具Wpbuttle使用与源码分析 前言 Wpbuttle是一款针对WordPress插件/主题开发的PHP静态代码审计工具。与其他PHP代码审计工具不同,它专门为WordPress生态系统设计。虽然WordPress核心代码相对安全,但其插件和主题的安全质量参差不齐,Wpbuttle能够对这些组件进行初步的静态代码分析,辅助漏洞挖掘工作。 工具安装 克隆项目仓库: 进入项目目录: 安装依赖: 运行工具: 注意 :工具支持Python 2.x和3.x环境,测试环境为Python 3.7。 工具使用 基本命令选项 Wpbuttle支持以下主要选项: --path : 指定本地插件目录或WordPress官网插件下载路径 --url : 指定插件在WordPress官网的URL --output : 指定输出文件路径 特色功能 :工具不仅能扫描本地源代码,还能根据提供的插件/主题URL自动下载并审计。 扫描流程 如果提供的是WordPress官网插件URL,工具会先下载插件: 处理非zip文件 处理zip压缩包文件 遍历插件目录,对所有 .php 文件进行分析 对每个PHP文件执行两种检查: passive_check_processor : 被动检查 process_file : 主动检查 源码分析 被动检查(passive_ check_ processor) 被动检查主要分析WordPress特定的钩子注册方式,包含三个主要扫描器: 1. scope_ admin_ actions 检测使用 admin_action_ 前缀注册的钩子,正则表达式为: 安全风险 : admin_action_ 前缀的钩子可通过 http://[WordPress路径]/wp-admin/admin.php?action=xxx 访问,任何已登录用户均可访问,可能导致权限绕过漏洞。 案例 :Keypic插件2.1.2版本存在任意用户删除漏洞,通过 admin_action_keypic_report_spam_and_delete_user 钩子实现。 2. scope_ ajax_ hooks 检测使用 wp_ajax_ 前缀注册的钩子。 安全风险 :这类钩子可通过 http://[WordPress路径]/wp-admin/admin-ajax.php?action=xxx 访问,同样存在权限控制风险。 3. scope_ admin_ init 检测使用 admin_init 注册的初始化操作。 安全风险 :相关回调可通过 admin-ajax.php 和 admin-post.php 触发,已登录用户均可访问。 主动检查(process_ file) 主动检查加载预编译的扫描插件(位于Modules目录),主要检测: 高危函数调用 :如代码执行、文件操作等危险函数 输入过滤缺失 :检查用户输入是否未经安全函数过滤直接传入高危函数 检测原理 functions 列表:定义高危函数 blacklist 列表:定义安全过滤函数 build_pattern 方法:生成检测规则的正则表达式 user_input 检查:判断参数是否可控 示例检测 : 扫描结果 :会标记出未经过滤的用户输入直接传入 eval 函数的风险。 工具优缺点分析 优点 专门针对WordPress生态设计,针对性较强 原理简单,易于理解和扩展 支持远程下载和自动扫描 结合了WordPress特有的安全检测点 缺点 基于文本特征分析,相比基于AST和CFG的工具(如RIPS)准确性较低 难以准确判断外部输入是否经过安全处理 漏报率较高 文档说明较少 总结 Wpbuttle作为一款专门针对WordPress的静态代码分析工具,虽然存在一些局限性,但仍能有效辅助安全研究人员进行WordPress插件和主题的漏洞挖掘工作。通过理解其工作原理和检测逻辑,用户可以更好地利用它发现潜在的安全问题,并结合手动分析提高漏洞发现的准确率。 对于希望扩展或改进该工具的研究人员,建议从以下几个方面入手: 增加更多WordPress特有的检测规则 改进检测逻辑,减少误报和漏报 完善文档说明 考虑引入更高级的代码分析技术