wpCentral 权限提升漏洞

Posted by JenI on 2020-02-18 00:00:00+08:00

前言

wpCentral是WordPress的一个插件,用于简化WordPress站点管理。管理员通过将自己的多个WordPress站点添加到wpCentral,可以实现在单一面板内集中管理所有WordPress网站。近日,wpCentral 被发现存在管理员认证凭据泄露的问题,任何登录了 WordPress 的普通用户都可以借由泄露的认证凭据将自身权限提升为管理员。

漏洞分析

为了在目标站点和管理面板之间提供连接,wpCentral 会生成一个 128 位的随机授权密钥 wpcentral_auth_key,这个密钥用作对用户请求进行身份验证、授权。通常来说,这类密钥应该由管理员严加保管,但是 wpCentral 却将其作为插件使用方法中的一部分插入到了管理员页脚中:

wpCentral-Privilege Escalation-1

wpCentral 插件被启用之后,会通过 add_action 将指定函数连接到某个动作,用于实现插件的功能。其中,管理员页脚(admin_footer)在加载时调用了 wpc_modal_dialog 方法:

wpCentral-Privilege Escalation-2

wpc_modal_dialog 方法用于展示 wpCentral 仪表盘的使用步骤。该方法内部将 html 代码与 wpc_get_connection_key 方法获取的连接密钥拼接后,作为管理员页脚的一部分输出在页面上。也就是说,任何可以加载管理员页脚的页面都会展示出 wpCentral 插件的连接密钥。

在 wordpress 中,只要当前页面为管理页面,即使是普通用户的管理页面,管理员页脚也会被加载,它并不会验证登录用户是否为管理员。这意味着任何一个登录用户都有权查看管理员的页脚内容:

wpCentral-Privilege Escalation-3

wpCentral 还定义了自动登录的方法,如果攻击者拿到了 auth_key,可以直接以授权用户的身份登录管理页面:

wpCentral-Privilege Escalation-4

当用户处于未登录状态时,会进入 else 代码块。这里注册了 AJAX 操作,调用 my_wpc_signon 方法完成自动登录:

wpCentral-Privilege Escalation-5

my_wpc_signon 内部首先进行了认证,认证逻辑如下:

wpCentral-Privilege Escalation-6

这里判断了请求中 auth_key 是否为空、是否和 wpCentral 生成的随机授权密钥相同,如果不满足条件,则退出脚本,即认证失败。如果满足条件,则会以数据库中用户 "1" 的身份登录:

wpCentral-Privilege Escalation-7

用户 "1" 是网站搭建时创建的第一个用户,一般为网站的管理员用户。使用正确的授权密钥发起格式正确的请求后,就可以直接以管理员身份登录后台。

漏洞复现

注册一个用户,注册成功后登录后台管理页面:

wpCentral-Privilege Escalation-8

查看网页源代码,找到页脚部分,复制泄露的 wpCentral Connection Key:

wpCentral-Privilege Escalation-9

注销掉当前用户,接着访问 /wp-admin/admin-ajax.php?action=my_wpc_signon&auth_key= 页面,auth_key 值为刚刚复制的 wpCentral Connection Key:

wpCentral-Privilege Escalation-10

成功以管理员的身份登录了后台管理页面:

wpCentral-Privilege Escalation-11

登录后台之后就可以自由发挥了。WordPress 后台的防御并不严格,有多种方法可以 GetShell,这里提供几种

WordPress 后台 Getshell 几种方法

  • 编辑主题文件
wpCentral-Privilege Escalation-12

连接地址:

/wp-content/themes/主题名/修改的文件
  • 编辑插件文件
wpCentral-Privilege Escalation-13

连接地址:

/wp-content/plugins/插件名/修改的文件

如果知道修改的插件文件在哪里被加载,地址也可以换成加载插件的文件地址,以上图为例的话,连接地址为:

/wp-admin/index.php
  • 作为主题文件上传

将木马文件添加到任意一个主题压缩包内

wpCentral-Privilege Escalation-14

连接地址:

/wordpress/wp-content/themes/主题名/木马名
  • 作为插件文件上传

​将木马文件添加到任意一个插件压缩包内

wpCentral-Privilege Escalation-15

连接地址:

/wordpress/wp-content/plugins/插件名/木马名

参考

https://www.wordfence.com/blog/2020/02/vulnerability-in-wpcentral-plugin-leads-to-privilege-escalation/


作者:   JenI   转载请注明出处,谢谢


Comments !