
针对 CVE-2022-24086 的已验证概念验证
CVE-2022-24086 被 Adobe 视为“在极有限的攻击中被在野利用”,其严重性评分为 9.8/10,攻击者利用它可以在无需认证的情况下在受影响系统上实现远程代码执行。该问题目前被跟踪为 CVE-2022-24087,具有相同的严重性评分,并且在攻击中利用时可导致相同的结果。两者都是“输入验证不当”(Improper Input Validation)漏洞,该公司已发布 Adobe Commerce 和 Magento Open Source 的补丁来解决这两个安全问题。
我们将只关注 2022-24086,因为如果 CMS 已打补丁,通常它已经包含两个补丁,因此没有必要深入挖掘 2022-24087。
Magento Open Source / Adobe Commerce - 2.3.3-p1 - 2.3.7-p2
Magento Open Source / Adobe Commerce - 2.4.0 - 2.4.3-p1
该 PoC 已在 2.3.4、2.4.0、2.4.2-p2、2.4.3 和 2.4.3-p1 版本上,使用默认电子邮件模板模块和默认示例数据进行了验证。
让我们深入研究官方补丁 MDVA-43443、MDVA-43395。所有版本的所有 composer 补丁都共享共同的部分,最重要的是:
+ private function sanitizeValue($value)
+ {
+ return is_bool($value) ? $value : str_replace(['{', '}'], '', (string) $value);
+ }
+ $pattern = '/{{.*?}}/';
+ do {
+ $result = preg_replace($pattern, '', (string)$result);
+ } while (preg_match($pattern, $result));
正如我们所见,他们试图去掉 {{ 和 }}。这些双花括号用于内置电子邮件模板。
现在是深入研究电子邮件模板的时候了!
官方电子邮件模板手册于 3 月 15 日编辑过,改了什么,为什么?web.archive.org 将向我们展示该页面的旧版本,我们可以看到他们删除了关于系统变量的提及。关于 getTemplateFilter 和 addAfterFilterCallback 方法的信息已从手册中删除。
public function getTemplateFilter()
{
if (empty($this->templateFilter)) {
$this->templateFilter = $this->getFilterFactory()->create();
$this->templateFilter->setUseAbsoluteLinks($this->getUseAbsoluteLinks())
->setStoreId($this->getDesignConfig()->getStore())
->setUrlModel($this->urlModel);
}
return $this->templateFilter;
}
public function addAfterFilterCallback(callable $afterFilterCallback)
{
// Only add callback if it doesn't already exist
if (in_array($afterFilterCallback, $this->afterFilterCallbacks)) {
return $this;
}
$this->afterFilterCallbacks[] = $afterFilterCallback;
return $this;
}

大多数主要的 Magento 用户已经打了补丁,该工具不再像几个月前那样危险。但由于该工具可能造成的潜在损害,这个 PoC 不应被限制访问。
当前价格 - 0.5 BTC。它包括完整的渗透测试说明、示例 payload 和支持。
我们的 XMPP 咨询和订购联系方式是 [email protected]。
该 PoC 明确不会被用于造成任何损害。它是构建更大项目的一个坚实起点。
本项目的作者不对材料造成的任何可能的损害负责。
CC0