CVE-2021-1675 est une vulnérabilité critique d'exécution de code à distance et d'élévation de privilèges locaux surnommée « PrintNightmare ».
Des exploits de validation de principe ont été publiés (Python, C++) pour la capacité d'exécution de code à distance, ainsi qu'un rendu C# pour l'élévation de privilèges locale. Nous n’avions pas vu d’implémentation native dans PowerShell pur et nous voulions essayer d’affiner et de recréer l’exploit.
Ce script PowerShell effectue une élévation de privilèges locale (LPE) avec la technique d'attaque PrintNightmare.
Cela a été testé sur Windows Server 2016 et Windows Server 2019.
Ajoutez un nouvel utilisateur au groupe des administrateurs locaux par défaut :
Module d'importation .cve-2021-1675.ps1 Invoke-Nightmare # ajoute l'utilisateur `adm1n`/`P@ssw0rd` dans le groupe d'administrateurs local par défautInvoke-Nightmare -DriverName "Xerox" -NewUser "deb" -NewPassword "SuperSecure"
Fournissez une charge utile DLL personnalisée, pour faire tout ce que vous pourriez souhaiter.
Module d'importation .cve-2021-1675.ps1 Invoke-Nightmare -DLL "C: chemin absolu vers votre bindshell.dll"
La technique LPE n'a pas besoin de fonctionner avec RPC ou SMB distants, car elle fonctionne uniquement avec les fonctions de Print Spooler.
Ce script intègre une charge utile GZIP codée en Base64 pour une DLL personnalisée, qui est corrigée en fonction de vos arguments, afin d'ajouter facilement un nouvel utilisateur au groupe d'administrateurs locaux.
Ce script intègre des méthodes de PowerSploit/PowerUp pour accéder de manière réfléchie aux API Win32.
Cette méthode ne parcourt pas tous les pilotes d'imprimante pour trouver le chemin d'accès DLL approprié : elle récupère simplement le premier pilote et détermine le chemin approprié.