
Proof of Concept verificato su CVE-2022-24086
CVE-2022-24086, che Adobe ha visto essere "sfruttata in attacchi molto limitati", ha ricevuto un punteggio di gravità di 9,8 su 10, e gli avversari che la sfruttano possono ottenere l'esecuzione di codice in remoto sui sistemi interessati senza bisogno di autenticarsi. Il problema ora tracciato come CVE-2022-24087 ha lo stesso punteggio di gravità e può portare allo stesso risultato se sfruttato in attacchi. Entrambe sono vulnerabilità di convalida dell'input impropria e l'azienda ha rilasciato patch per Adobe Commerce e Magento Open Source per risolvere i due problemi di sicurezza.
Ci concentreremo solo su 2022-24086, perché se il CMS è stato patchato, di solito ha già entrambe le patch, quindi non ha senso approfondire la 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
Questo PoC è stato testato sulle versioni 2.3.4, 2.4.0, 2.4.2-p2, 2.4.3 e 2.4.3-p1 con il modulo predefinito dei modelli email e i dati di esempio predefiniti.
Analizziamo le patch ufficiali, MDVA-43443 e MDVA-43395. Tutte le patch composer per tutte le versioni condividono parti comuni, le più importanti sono:
+ 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));
Come possiamo vedere, cercano di eliminare {{ e }}. Quelle doppie parentesi graffe vengono utilizzate nei modelli email integrati.
Ora è il momento di analizzare i modelli email!
Il manuale ufficiale sui modelli email è stato modificato il 15 marzo: cosa è cambiato e perché? web.archive.org ci mostrerà una vecchia versione di quella pagina e possiamo vedere che hanno rimosso i riferimenti alle variabili di sistema. Le informazioni sui metodi getTemplateFilter e addAfterFilterCallback sono state cancellate dal manuale.
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;
}

La maggior parte dei principali utenti di Magento ha già applicato le patch e questo strumento non è più pericoloso come lo era un paio di mesi fa. Ma a causa del potenziale danno che questo strumento può infliggere, questo PoC non dovrebbe essere ad accesso limitato.
Prezzo attuale - 0.5 BTC. Include istruzioni complete sulla penetrazione, payload di esempio e supporto.
Il nostro contatto XMPP per consulenza e ordini è [email protected].
Questo PoC non è esplicitamente in grado di causare danni. È un solido punto di partenza per costruire qualcosa di più grande.
Gli autori di questo progetto non sono responsabili per qualsiasi possibile danno causato dai materiali.
CC0