Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
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é.

··Flux·Contact·Confidentialité·© 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
32il 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".

  • Commençons par vérifier que notre utilisateur actuel ne fait pas partie du groupe Administrateurs.
  • Pour exploiter avec succès "StorSvc", nous devons copier "SprintCSP.dll" dans n'importe quel répertoire du PATH actuel. Nous pouvons vérifier le PATH en exécutant la commande suivante : C:> reg query "HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Environment" -v Path
  • Nous ciblerons le répertoire %SystemRoot%\system32, qui se développe en "C:\windows\system32". Vous devriez pouvoir utiliser n'importe lequel des répertoires, cependant.
  • En utilisant LocalPotato, nous pouvons copier SprintCSP.dll dans system32 même si nous utilisons un utilisateur non privilégié : C:\Users\user\Desktop> LocalPotato.exe -i SprintCSP.dll -o \Windows\System32\SprintCSP.dll
  • Avec notre DLL en place, nous pouvons maintenant exécuter "RpcClient.exe" pour déclencher l'appel à "SvcRebootToFlashingMode", exécutant ainsi la charge utile dans notre DLL. C:\Users\user\Desktop> RpcClient.exe
  • Pour vérifier si notre exploit a fonctionné comme prévu, nous pouvons vérifier si notre utilisateur fait maintenant partie du groupe Administrateurs. C:> net user user

Détection et atténuation

Détection Maintenant que nous avons compris comment fonctionne l'exploit localpotato et comment il peut être enchaîné avec le service StorSvc pour exécuter du code en tant que SYSTEM, il est temps de voir comment cela peut être détecté dans le système et comment prévenir de telles attaques.

Règle YARA : Comme cette attaque implique un exécutable s'exécutant dans le terminal en ligne de commande avec des arguments, deux moyens courants de détecter cette activité seraient d'utiliser l'outil de correspondance de motifs YARA pour détecter les motifs de fichiers et d'examiner les événements générés par l'exécution de cet outil de piratage localpotato.exe. Comme l'attaque utilise l'outil de piratage connu sous le nom de localpotato.exe, nous pouvons créer une règle YARA pour détecter la présence de cet outil dans le système en utilisant YARA ou d'autres outils de détection comme THOR pour scanner l'hôte. (La règle YARA est jointe dans ce dépôt, cette règle minimale recherche des motifs de chaînes courants dans l'exécutable localpotato).

Règle Sigma : SIGMA est un langage de signature générique utilisé pour écrire des règles de détection basées sur les motifs trouvés dans les journaux d'événements. Afin de détecter localpotato dans le réseau, il est attendu d'avoir une surveillance centralisée des journaux activée en place. La règle SIGMA suivante est tirée du dépôt officiel SIGMA (https://github.com/SigmaHQ/sigma/blob/master/rules/windows/process_creation/proc_creation_win_hktl_localpotato.yml).

  • Détection de LocalPotato (règle jointe dans le dépôt)
  • Détection du détournement de Storsvc et SprintCSP.dll Nous avons appris que la vulnérabilité localpotato est combinée avec Storsvc pour détourner SprintCSP.dll et exécuter en tant que SYSTEM. La règle SIGMA suivante, jointe et tirée du GitHub officiel, peut être utilisée pour détecter cette activité.

Nous pouvons utiliser ces règles sigma pour les convertir dans l'outil de détection / surveillance en place et rechercher dans les journaux d'événements pour chasser les attaques potentielles.

Atténuation

  • Correctifs de sécurité : L'exploit localpotato cible une vulnérabilité du système d'exploitation Windows. Assurez-vous que tous les systèmes sont mis à jour avec les derniers correctifs de sécurité pour empêcher les attaquants d'exploiter cette vulnérabilité. Cette vulnérabilité n'affecte pas le système d'exploitation patché.
  • Principe du moindre privilège : Une façon d'empêcher les attaquants d'exploiter l'exploit localpotato est de mettre en œuvre le principe du moindre privilège. Cela signifie limiter l'accès des utilisateurs uniquement aux ressources dont ils ont besoin pour effectuer leurs fonctions professionnelles. Ce faisant, les attaquants sont moins susceptibles d'obtenir les privilèges élevés nécessaires pour exécuter l'exploit.
  • Surveiller les activités suspectes : Utilisez des outils comme "Splunk" pour surveiller les activités suspectes sur votre réseau. Recherchez les signes d'une attaque localpotato, tels qu'une activité de processus inhabituelle ou des tentatives d'exécution de code malveillant.
Télécharger l’outil