关于wpgarlic
wpgarlic是一款功能强大的WordPress插件模糊测试工具,该工具可以帮助广大研究人员查找WordPress插件漏洞。目前为止,该工具已经成功在大约1500万个网站上找出了140多个WordPress插件漏洞。
考虑到模糊测试工具的运行机制,即模糊测试工具具备一定的随机性,因此有的时候报告会存在假阳性,也就是误报。因此广大研究人员需要对该工具所检测到的内容进行观察和分析,不要直接将原始报告提交给厂商。
工具下载
广大研究人员可以使用下列命令将该项目源码克隆至本地:
代码语言:javascript复制git clone https://github.com/kazet/wpgarlic.git
工具使用样例
任意文件读取
假设我们需要对responsive-vector-maps v6.4.0版本插件进行模糊测试,直接运行下列命令即可:
代码语言:javascript复制./bin/fuzz_plugin responsive-vector-maps --version 6.4.0
注意:如果你想要测试目标插件的最新版本,可以直接忽略“--version”参数。
模糊测试完成之后(大约需要10-30分钟),就可以使用下列命令查看模糊测试结果了:
代码语言:javascript复制./bin/print_findings data/plugin_fuzz_results/
我们可以从上述结果中了解到,模糊测试工具检测到了fopen()的执行,并涉及到一个已知的Payload。大多数的Payload会包含GARLIC来自动检测输出,我们可以在“docker_image/magic_payloads.php”中查看或配置相关内容。
接下来,我们可以详细浏览源代码,并了解到“wp_ajax_rvm_import_markers”节点会使用文件内容来呈现输出结果,此时将允许我们读取服务器中的任意文件内容:CVE-2021-24947。
反射型XSS
假设我们现在需要对page-builder-add插件的v1.4.9.4版本进行模糊测试:
代码语言:javascript复制./bin/fuzz_plugin page-builder-add --version 1.4.9.4
打印输出结果后,我们将会看到如下所示的返回Payload:
接下来,我们可以手动测试和验证这个XSS漏洞:CVE-2021-25067。
使用CheatSheet
工具的首次运行可能需要大约一个小时的时间,因为我们需要使用PHP和WordPress来构建Docker镜像。
通过名称来对插件进行模糊测试:
代码语言:javascript复制./bin/fuzz_plugin PLUGIN_SLUG
通过文件来对插件进行模糊测试:
代码语言:javascript复制./bin/fuzz_plugin PLUGIN_FILE_NAME.zip
打印输出结果:
代码语言:javascript复制./bin/print_findings data/plugin_fuzz_results/
运行测试:
代码语言:javascript复制./bin/test
格式化代码:
代码语言:javascript复制./bin/reformat
手测测试环境
我们可以使用已安装的插件自己搭建一个测试环境:
代码语言:javascript复制./bin/manual_testing PLUGIN_SLUG|PLUGIN_PATH.zip [version]
此时,工具将监听“https://127.0.0.1:8001/”。
现在,数据库中将包含两个测试用户:
1、用户名:admin,密码:admin,权限:管理员 2、用户名:subscriber,密码:subscriber,权限:订阅者
许可证协议
本项目的开发与发布遵循MIT开源许可证协议。
项目地址
https://github.com/kazet/wpgarlic
参考资料
https://kazet.cc/2022/02/03/fuzzing-wordpress-plugins.html
https://wpscan.com/vulnerability/c6bb12b1-6961-40bd-9110-edfa9ee41a18
https://wpscan.com/vulnerability/365007f0-61ac-4e81-8a3a-3a068f2c84bc
https://wpscan.com/vulnerability/db5a0431-af4d-45b7-be4e-36b6c90a601b
https://kazet.cc/2022/02/03/fuzzing-wordpress-plugins.html#patched-equality