
Preuve de concept vérifiée sur CVE-2022-24086
CVE-2022-24086, qu'Adobe a vu être « exploitée dans la nature dans des attaques très limitées », a reçu un score de gravité de 9,8 sur 10, et les adversaires qui l'exploitent peuvent exécuter du code à distance sur les systèmes affectés sans avoir besoin de s'authentifier. Le problème, maintenant suivi sous le nom de CVE-2022-24087, a le même score de gravité et peut conduire au même résultat lorsqu'il est utilisé dans des attaques. Les deux sont des vulnérabilités de validation d'entrée incorrecte et l'entreprise a publié des correctifs pour Adobe Commerce et Magento Open Source pour résoudre les deux problèmes de sécurité.
Nous nous concentrerons uniquement sur 2022-24086, car si le CMS est patché, il a généralement déjà les deux correctifs, donc il n'y a pas d'intérêt à creuser dans celui 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
Ce PoC a été testé sur les versions 2.3.4, 2.4.0, 2.4.2-p2, 2.4.3 et 2.4.3-p1 avec le module de modèles d'e-mail par défaut et les données d'exemple par défaut.
Plongeons dans les correctifs officiels, MDVA-43443, MDVA-43395. Tous les correctifs Composer pour toutes les versions partagent des parties communes, les plus importantes sont :
+ 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));
Comme nous le voyons, ils essaient de se débarrasser de {{ et }}. Ces doubles accolades sont utilisées dans les modèles d'e-mail intégrés.
Il est maintenant temps de plonger dans les modèles d'e-mail !
Le manuel officiel sur les modèles d'e-mail a été modifié le 15 mars, qu'est-ce qui a changé et pourquoi ? web.archive.org nous montrera une ancienne version de cette page et nous pouvons voir qu'ils ont supprimé les mentions concernant les variables système. Les informations sur les méthodes getTemplateFilter et addAfterFilterCallback ont été effacées du manuel.
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 plupart des principaux utilisateurs de Magento ont déjà appliqué le correctif et cet outil n'est plus aussi dangereux qu'il y a quelques mois. Mais en raison des dommages potentiels que cet outil peut infliger, ce PoC ne devrait pas être en accès limité.
Prix actuel - 0.5 BTC. Il comprend des instructions complètes sur la pénétration, des exemples de charges utiles et du support.
Notre contact XMPP pour consultation et commande est [email protected].
Ce PoC n'est explicitement pas en état de causer des dommages. C'est un point de départ solide pour construire quelque chose de plus grand.
Les auteurs de ce projet ne sont pas responsables des éventuels dommages causés par les matériaux.
CC0