研究员: Vivien Lebas
受影响的插件: Profile Builder(WordPress)
受影响版本: < 4.0.1
修复版本: 4.0.1
类型: PHP 对象注入(不安全的反序列化)
CWE: CWE-502
OWASP: A8 – 不安全的反序列化
CVSS 3.1: 6.6(中危)— AV:N/AC:H/PR:H/UI:N/S:U/C:H/I:H/A:H
WPScan: 已验证的安全公告
Profile Builder 的 Import/Export 附加组件在导入配置文件时,未验证被反序列化的数据类型。因此,高权限用户(管理员)可以通过导入精心构造的 JSON 文件来触发 PHP 对象注入。
该附加组件是一个免费扩展,默认处于禁用状态,并且 Profile Builder 本身不包含任何可用的 POP(面向属性编程)利用链。因此,要实现具体的危害,需要来自其他已安装插件或主题的合适 gadget。
该漏洞存在于导入功能中:
/wp-admin/admin.php?page=pbie-import-export&tab=import
导入文件中的某个值在没有任何类型检查的情况下被传递给 WordPress 的 maybe_unserialize()。如果该值是一个序列化对象字符串,PHP 会在导入请求期间实例化指定的类并执行其魔术方法(__wakeup、__destruct)。
manage_options)。在多站点环境中,导入操作受 manage_network 权限限制,因此需要网络/超级管理员;子站点的管理员会被拒绝。Evil 作为占位符,代表已安装插件或主题所提供的此类类。 https://victim.example/wp-admin/admin.php?page=pbie-import-export&tab=import
payload.json: {
"options": {},
"posts": {
"wppb-rf-cpt": [
{
"post_title": "POC",
"post_name": "poc",
"post_type": "post",
"post_status": "publish",
"postmeta": {
"poc": ["O:4:\"Evil\":0:{}"]
}
}
]
}
}
payload.json,然后点击 Import。postmeta 值中的字符串被传递给 maybe_unserialize(),因此指定的类会被实例化,其魔术方法会在导入请求期间执行。
wppb-ul-cpt、wppb-rf-cpt 或 wppb-epf-cpt 之一,但实际创建的文章类型取自每个文章的 post_type 字段,因此该路径无需 Pro 许可证即可访问。PHP 对象注入。借助来自其他已安装插件或主题的合适 gadget 链,这可能导致文件操作等行为,或者根据可用的 gadget,导致远程代码执行。
将 Profile Builder 更新至 4.0.1 或更高版本。
该漏洞已负责任地披露给供应商,并在修复程序发布后公布,仅供教育和防御目的使用。