Skip to content
KitploitKITPLOIT
OutilsExploitsBlog
Log in
Soumettre
OutilsExploitsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

FluxContactConfidentialité© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
LocalPotato_CVE-2023-21746 — Preuve de concept d'exploit pour l'escalade de privilèges locale sous Windows (CVE-2023-21746) abusant de l'authentification locale NTLM pour obtenir les privilèges SYSTEM via l'accès aux partages SMB et le détournement de DLL. | Kitploit
Outils/GitHubGitHub/muhammad-ali007/localpotato_cve-2023-21746
Escalade de PrivilègesAnalyse des VulnérabilitésExploitationMouvement LatéralPost-ExploitationTests d'IntrusionDéveloppement de Charges UtilesExploitation de Binaires

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
GitHub
muhammad-ali007/localpotato_cve-2023-21746

LocalPotato_CVE-2023-21746

Preuve de concept d'exploit pour l'escalade de privilèges locale sous Windows (CVE-2023-21746) abusant de l'authentification locale NTLM pour obtenir les privilèges SYSTEM via l'accès aux partages SMB et le détournement de DLL.

Voir le dépôt
3218il y a 3 ansPas encore vérifié

Une vulnérabilité d'élévation de privilèges locaux (LPE) sous Windows a été signalée à Microsoft le 9 septembre 2022 par Andrea Pierini (@decoder_it) et Antonio Cocomazzi (@splinter_code). Cette vulnérabilité permettrait à un attaquant disposant d'un compte à faibles privilèges sur un hôte de lire/écrire des fichiers arbitraires avec les privilèges SYSTEM.

Bien que la vulnérabilité en elle-même ne permette pas d'exécuter directement des commandes en tant que SYSTEM, on peut la combiner avec plusieurs vecteurs pour atteindre ce résultat. De manière opportune, le 13 février, un autre PoC d'élévation de privilèges a été publié par BlackArrowSec, qui abuse du service StorSvc, permettant à un attaquant d'exécuter du code en tant que SYSTEM tant qu'il peut écrire un fichier DLL dans n'importe quel répertoire du PATH.

Le PoC LocalPotato exploite une faille dans un cas particulier de l'authentification NTLM appelé authentification locale NTLM pour tromper un processus privilégié afin qu'il authentifie une session que l'attaquant démarre contre le serveur SMB local. En conséquence, l'attaquant se retrouve avec une connexion qui lui donne accès à tous les partages avec les privilèges du processus trompé, y compris les partages spéciaux comme C$ ou ADMIN$.

Le processus suivi par l'exploit est le suivant :

  • L'attaquant déclenchera une connexion d'un processus privilégié vers un serveur malveillant sous son contrôle. Cela fonctionne de manière similaire aux précédents exploits Potato, où un utilisateur non privilégié peut forcer le système d'exploitation à créer des connexions utilisant un utilisateur privilégié (généralement SYSTEM).
  • Le serveur malveillant instanciera un contexte de sécurité A pour la connexion privilégiée mais ne le renverra pas immédiatement. Au lieu de cela, l'attaquant lancera un client malveillant qui initie simultanément une connexion vers le serveur SMB local (partage de fichiers Windows) avec ses propres informations d'identification non privilégiées. Le client enverra le message Type1 pour initier la connexion, et le serveur répondra en envoyant un message Type2 avec l'ID d'un nouveau contexte de sécurité B.
  • L'attaquant échangera les ID de contexte des deux connexions afin que le processus privilégié reçoive le contexte de la connexion au serveur SMB au lieu du sien. En conséquence, le client privilégié associera son utilisateur (SYSTEM) au contexte de sécurité B de la connexion SMB créée par l'attaquant. Ainsi, le client de l'attaquant peut désormais accéder à n'importe quel partage réseau avec les privilèges SYSTEM !

En disposant d'une connexion privilégiée aux partages SMB, l'attaquant peut lire ou écrire des fichiers sur la machine cible à n'importe quel endroit. Bien que cela ne nous permette pas d'exécuter des commandes directement contre la machine vulnérable, nous combinerons cela avec un vecteur d'attaque différent pour atteindre cet objectif.

Notez que la vulnérabilité se trouve dans le protocole NTLM plutôt que dans le serveur SMB, donc ce même vecteur d'attaque pourrait théoriquement être utilisé contre tout service qui utilise l'authentification via NTLM. En pratique, cependant, certaines précautions doivent être prises lors de la sélection du protocole à attaquer. Le PoC utilise le serveur SMB pour éviter certaines protections supplémentaires en place pour d'autres protocoles contre des vecteurs d'attaque similaires et met même en œuvre un contournement rapide pour que l'exploit fonctionne contre le serveur SMB. Article de l'auteur original de l'exploit - (https://decoder.cloud/2023/02/13/localpotato-when-swapping-the-context-leads-you-to-system/)

Jusqu'à présent, nous avons utilisé LocalPotato pour écrire des fichiers arbitraires sur la machine cible. Pour obtenir un shell privilégié, nous devons encore trouver comment utiliser l'écriture arbitraire pour exécuter une commande.

Récemment, un autre vecteur d'élévation de privilèges a été découvert, où un attaquant pourrait détourner une DLL manquante pour exécuter des commandes arbitraires avec les privilèges SYSTEM. Le seul problème avec ce vecteur était qu'un attaquant devrait écrire une DLL dans le PATH du système pour le déclencher. Par défaut, le PATH de Windows n'inclut que des répertoires que seuls les comptes privilégiés peuvent écrire. Bien qu'il soit possible de trouver des machines où l'installation d'applications spécifiques a modifié la variable PATH et rendu la machine vulnérable, le vecteur d'attaque ne s'applique qu'à des scénarios particuliers. Combiner cette attaque avec LocalPotato nous permet de surmonter cette restriction et d'obtenir un exploit d'élévation de privilèges pleinement fonctionnel.

StorSvc et détournement de DLL Comme découvert par BlackArrowSec (https://github.com/blackarrowsec/redteam-research/tree/26e6fc0c0d30d364758fa11c2922064a9a7fd309/LPE via StorSvc), un attaquant peut envoyer un appel RPC à la méthode "SvcRebootToFlashingMode" fournie par le service "StorSvc", ce qui déclenchera à son tour une tentative de chargement d'une DLL manquante appelée "SprintCSP.dll". Si vous n'êtes pas familier avec RPC, considérez-le comme une API qui expose des fonctions afin qu'elles puissent être utilisées à distance. Dans ce cas, le service StorSvc expose la méthode SvcRebootToFlashingMode, que toute personne ayant accès à la machine peut appeler. Puisque StorSvc s'exécute avec les privilèges SYSTEM, créer SprintCSP.dll quelque part dans le PATH permettra son chargement à chaque fois qu'un appel à SvcRebootToFlashingMode est effectué.

Compilation de l'exploit Lien de l'exploit - (https://github.com/decoder-it/LocalPotato) Pour utiliser cet exploit, vous devez d'abord compiler les deux fichiers fournis :

  • SprintCSP.dll : C'est la DLL manquante que nous allons détourner. Nous devrons modifier la commande pour exécuter un reverse shell.
  • RpcClient.exe : Ce programme déclenchera l'appel RPC à SvcRebootToFlashingMode. Selon la version de Windows que vous ciblez, vous devrez peut-être modifier un peu le code de l'exploit, car différentes versions de Windows utilisent des identifiants d'interface différents pour exposer SvcRebootToFlashingMode. Les projets pour les deux fichiers se trouvent dans le répertoire "LPE via StorSvc".

Commençons par traiter "RpcClient.exe". Comme mentionné précédemment, nous devrons modifier l'exploit en fonction de la version Windows de la machine cible. Pour ce faire, nous devrons modifier les premières lignes de "LPE via StorSvc\RpcClient\RpcClient\storsvc_c.c" afin que le système d'exploitation correct soit choisi. Cela configurera l'exploit pour utiliser l'identifiant d'interface RPC correct. Maintenant que le code a été corrigé, ouvrons une invite de commande développeur et construisons le projet en exécutant la commande suivante : Commandes : C:\LPE via StorSvc\RpcClient> msbuild RpcClient.sln C:\LPE via StorSvc\RpcClient> move x64\Debug\RpcClient.exe C:\Users\user\Desktop\ (L'exécutable compilé se trouvera sur votre bureau.)

Maintenant, pour compiler "SprintCSP.dll", nous devons seulement modifier la fonction "DoStuff()" dans "C:\LPE via StorSvc\SprintCSP\SprintCSP\main.c" afin qu'elle exécute une commande qui nous accorde un accès privilégié à la machine. Pour simplifier, nous ferons en sorte que la DLL ajoute notre utilisateur actuel au groupe Administrateurs. Nous pouvons également obtenir un reverse shell de cette cible vers notre machine. Nous compilons maintenant la DLL en exécutant la commande suivante et déplaçons le résultat vers notre bureau : Commandes : C:\LPE via StorSvc\SprintCSP> msbuild SprintCSP.sln C:\LPE via StorSvc\SprintCSP> move x64\Debug\SprintCSP.dll C:\Users\user\Desktop\

Nous sommes maintenant prêts à lancer l'exploit. Assurez-vous d'avoir l'exploit "LocalPotato.exe", le fichier "RpcClient.exe" et le fichier "SprintCSP.dll".

Télécharger l’outil