2020年10月6日,Wordfence威胁情报团队在Welcart电子商务中发现了一个高严重性对象注入漏洞,该漏洞是WordPress插件,安装量超过20,000,在日本占有最大的市场份额。
完成调查后,Wordfence于2020年10月9日联系了该插件的发行商Collne Inc.。完整披露信息已于2020年10月12日发送,该插件于2020年10月20日发布了1.9.36版补丁。
Wordfence Premium客户在2020年10月9日收到了防止此漏洞的防火墙规则。仍在使用免费版本Wordfence的网站将在2020年11月8日后30天收到此规则。
Welcart电子商务是一个WordPress插件,可用于创建具有单独客户帐户区域的在线商店。它使用自己的cookie(与WordPress使用的cookie分开)来跟踪用户会话。对该站点的每个请求都会导致usces_cookie该get_cookie函数被解析。此函数用于usces_unserialize解码此cookie的内容。
function get_cookie($key='usces_cookie') {
$values = isset($_COOKIE[$key]) ? usces_unserialize(stripslashes($_COOKIE[$key])) : NULL;
return $values;
}
function usces_unserialize( $data ) {
if( is_serialized( $data ) ) {
return @unserialize( $data );
}
if( is_array( $data ) ) {
return $data;
}
return @json_decode( $data, true );
}
不幸的是,这意味着攻击者可以将带有usces_cookie参数集的请求发送到特制的字符串,该字符串一旦取消序列化,便会注入PHP对象。
为了完全利用所谓的POP链,PHP对象注入需要提供一种易受攻击的魔术方法。在之前我们已经提到了POP链。POP链使攻击者可以利用所谓的魔术方法来获取远程执行代码,删除任意文件或执行可能使他们接管站点的其他操作。
该插件包括一个tcpdf库,其中包含一个__destruct魔术方法,该魔术方法在其他情况下也可以用于创建POP链。幸运的是,不存在完整的POP链,因为该插件TCPDF在加载和定义该类之前未对cookie进行序列化,因此无法用该类注入对象。
更好的消息是,该漏洞无法与WordPress核心类中最近修补的漏洞结合使用Requests_Utility_FilteredIterator,因为该usces_unserialize功能使用该is_serialized功能来决定是否对序列化数据进行反序列化并针对Requests_Utility_FilteredIterator此检查失败进行攻击。
结论
在今天的文章中,我们详细介绍了Welcart电子商务插件中的PHP对象。我们强烈建议您在撰写本文时尽快将其更新至最新版本1.9.36。如果您认识的人正在使用Welcart电子商务,我们建议与他们共享此建议,以便他们可以采取必要的措施来保护其网站。

评论0