
Prova de Conceito Verificada no CVE-2022-24086
O CVE-2022-24086, que a Adobe viu ser “explorada ativamente em ataques muito limitados”, recebeu uma pontuação de gravidade de 9,8 em 10, e adversários que a exploram podem obter execução remota de código em sistemas afetados sem a necessidade de autenticação. O problema agora é rastreado como CVE-2022-24087, que tem a mesma pontuação de gravidade e pode levar ao mesmo resultado quando utilizado em ataques. Ambos são vulnerabilidades de validação de entrada incorreta, e a empresa lançou patches para Adobe Commerce e Magento Open Source para resolver os dois problemas de segurança.
Vamos nos concentrar apenas no 2022-24086, porque se o CMS estiver corrigido, geralmente ele já possui ambos os patches, então não faz sentido investigar o de 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
Este PoC foi testado nas versões 2.3.4, 2.4.0, 2.4.2-p2, 2.4.3 e 2.4.3-p1 com o módulo de modelos de e-mail padrão e dados de amostra padrão.
Vamos analisar os patches oficiais, MDVA-43443, MDVA-43395. Todos os patches do composer para todas as versões compartilham partes comuns, as mais importantes são:
+ 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));
Como podemos ver, eles tentam se livrar de {{ e }}. Essas chaves duplas são usadas nos modelos de e-mail integrados.
Agora é hora de mergulhar nos modelos de e-mail!
O manual oficial sobre modelos de e-mail foi editado em 15 de março. O que mudou e por quê? O web.archive.org nos mostrará uma versão antiga dessa página, e podemos ver que eles removeram menções sobre variáveis de sistema. Informações sobre os métodos getTemplateFilter e addAfterFilterCallback foram apagadas do manual.
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;
}

A maioria dos principais usuários do Magento já aplicou os patches, e essa ferramenta não é mais tão perigosa quanto era há alguns meses. Mas, devido ao dano potencial que essa ferramenta pode causar, este PoC não deveria estar em acesso limitado.
Preço atual - 0.5 BTC. Inclui instruções completas sobre penetração, payloads de exemplo e suporte.
Nosso contato XMPP para consulta e pedidos é [email protected].
Este PoC está explicitamente em um estado que não pode causar nenhum dano. É um ponto de partida sólido para construir algo maior.
Os autores deste projeto não são responsáveis por qualquer dano possível causado pelos materiais.
CC0