如何寻找Wordpress插件漏洞|Hacking Wordpress Plugins

如何寻找Wordpress插件漏洞|Hacking Wordpress Plugins

在这篇文章中,我将教你我学到的一切以及如何开始寻找wordpress 插件漏洞的方法。请记住,我不会教不同的漏洞类型,我只会教如何寻找漏洞。我自己学会了它,它很有趣。这是获得简历并开始进行代码审查的好方法。让我们开始吧.

遵循用户输入

开始寻找wordpress插件漏洞的一个好方法是跟踪用户输入。有多种方法可以在 PHP 中获取用户输入

$_POST 用于获取post参数

$_GET 用于获取get参数

$_REQUEST 用于获取 post 或 get 参数

$_SERVER 用于获取各种http请求头的值

$_COOKIE 用于获取cookies的值和

$_FILES 用于文件

这些是开发人员可以获得用户输入的以下方式。因此,当破解 wordpress 插件,或者只是破解任何一般的 php 代码时,最好开始查看这些,并从那里按照用户输入进行操作。我们可以通过 grepping 来实现。

例子

例如,我们将破解并复制 Mail Masta 1.0 中包含的本地文件。
这是原始报告https://www.exploit-db.com/exploits/50226

如何寻找Wordpress插件漏洞|Hacking Wordpress Plugins

所以我们首先通过 grepping for$_GET找出所有接受用户输入的 php 代码。在这样做时,一个 php 文件似乎很有趣。inc/campaign/count_of_send.php

如何寻找Wordpress插件漏洞|Hacking Wordpress Plugins

所以我用我的代码编辑器打开它

如何寻找Wordpress插件漏洞|Hacking Wordpress Plugins

代码相当简单,在第 4 行,它获取 get 参数 'pl' 的值,然后将其传递给函数 include。包含可能会导致 lfi,所以我们在这里有一个 lfi。现在,让我们尝试重现它。

如何寻找Wordpress插件漏洞|Hacking Wordpress Plugins

你可以看到它有效。我们有一个 lfi。这就是您通过遵循用户输入发现漏洞的方式。

挂钩

在 wordpress 中,我们有一个叫做 hooks 的东西。挂钩是开发人员将函数挂钩到 wordpress 中预定义位置的方法。它可以通过 add_action() 函数来完成。为了进一步阅读,我推荐这个https://developer.wordpress.org/plugins/hooks/
https://developer.wordpress.org/reference/functions/add_action/

现在在测试时,有一些我需要注意的钩子。

wp_ajax_$action_name 用于挂钩到 ajax (admin-ajax.php)

admin_post_$action_name 用于挂钩到 admin-post.php

wp_ajax_nopriv_$action_name,admin_post_nopriv_$action_name同上但不需要认证

admin_init 用于挂钩每个管理页面加载

wp_loaded 用于在安装插件时挂钩

admin_action_ 我还不确定这一点,但是,请注意这一点

profile_update&personal_options_update当用户编辑他/她的帐户时调用。

现在就像上面一样,我们必须找到是否有函数挂钩到这些钩子上。这可以通过 grepping 来完成

例子

对于此示例,我们将在下载 2.0.9 的双重选择中复制 sqli。
原始报告可以在这里找到。https://www.exploit-db.com/exploits/39896

如何寻找Wordpress插件漏洞|Hacking Wordpress Plugins

因此,我们首先使用 grep 查找与 wp_ajax 挂钩的任何操作

如何寻找Wordpress插件漏洞|Hacking Wordpress Plugins

我们的wp_ajax_populate_download_edit_formpublic/class-doifd.php

让我们打开文件并分析代码。

如何寻找Wordpress插件漏洞|Hacking Wordpress Plugins

在这里,我们可以看到它与函数 挂钩populate_download_edit_form
让我们分析一下函数

如何寻找Wordpress插件漏洞|Hacking Wordpress Plugins

在这里,我们可以看到它获取 post 参数 id 的值并将其存储到变量 $value 中,然后 $value 变量用于 sql 查询而不过滤或准备语句,使其容易受到 sqli 的攻击。现在让我们重现它。
ajax 钩子是wp_ajax_populate_download_edit_form这样的 ajax 动作参数是populate_download_edit_form,我们还将提供 id 参数

如何寻找Wordpress插件漏洞|Hacking Wordpress Plugins

我们将使用基于布尔值的 poc的payload。使用throws 正常响应 and 1=1and 1=1

如何寻找Wordpress插件漏洞|Hacking Wordpress Plugins

但是使用and 1=2带有 null 的响应意味着我们的 sqli 确实存在

如何寻找Wordpress插件漏洞|Hacking Wordpress Plugins

这就是你在寻找wordpress 插件漏洞时检查钩子的方式。记住在测试时还要检查 wp_ajax 以外的其他钩子。

写到这里就结束了。
要了解不同的漏洞类型,您必须自己学习。
wordfence.com/../2021/07/Common-WordPress-Vulnerabilities-and-Prevention-Through-Secure-Coding-Best-Practices.pdf
这是一篇很好的文章,可以教你一些php 和 wordpress 中的错误类型。
我有 3 个可能即将到来的 cve 单独使用 wordpress hacking,它教会了我 php 代码审查,这就是为什么我真的很喜欢 wordpress hacking

如何寻找Wordpress插件漏洞|Hacking Wordpress Plugins

更新:我现在保留了一个 cve 
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-24800

加入赏金猎人 Discord 服务器:https://discord.gg/bugbounty

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用*标注