- Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Partagez vos astuces de piratage en soumettant des PR au [dépôt hacktricks](https://github.com/carlospolop/hacktricks) et au [dépôt hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
Il y a déjà eu plusieurs cas d'**élévation de privilèges** où un **processus privilégié** avec des **poignées ouvertes et héritables** a **exécuté** un **processus non privilégié** en lui donnant **accès à toutes ces poignées**.
Par exemple, imaginez qu'un **processus s'exécutant en tant que SYSTEM ouvre un nouveau processus** (`OpenProcess()`) avec **un accès complet**. Le même processus **crée également un nouveau processus** (`CreateProcess()`) **avec des privilèges bas mais héritant de toutes les poignées ouvertes du processus principal**.\
Ensuite, si vous avez **un accès complet au processus à privilèges bas**, vous pouvez saisir la **poignée ouverte du processus privilégié créé** avec `OpenProcess()` et **injecter un shellcode**.
Comme vous l'avez lu dans l'exemple initial, si un **processus non privilégié hérite d'une poignée de processus** d'un **processus privilégié** avec des autorisations suffisantes, il sera en mesure d'exécuter **du code arbitraire dessus**.
Dans [**cet excellent article**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/) vous pouvez voir comment exploiter toute poignée de processus qui a l'une des autorisations suivantes :
Comme pour les poignées de processus, si un **processus non privilégié hérite d'une poignée de thread** d'un **processus privilégié** avec des autorisations suffisantes, il sera en mesure d'exécuter **du code arbitraire dessus**.
Dans [**cet excellent article**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/) vous pouvez également voir comment exploiter toute poignée de processus qui a l'une des autorisations suivantes :
Si un **processus non privilégié hérite** d'une **poignée** avec des **autorisations d'écriture équivalentes** sur un **fichier ou un registre privilégié**, il sera en mesure de **remplacer** le fichier/registre (et avec beaucoup de **chance**, **d'escalader les privilèges**).
Les **poignées de section** sont similaires aux poignées de fichiers, le nom commun de ces types d'objets est **"File Mapping"** (https://docs.microsoft.com/en-us/windows/win32/memory/file-mapping). Ils sont utilisés pour travailler avec des **gros fichiers sans garder tout** le fichier en mémoire. Cela rend l'exploitation "similaire" à l'exploitation d'une poignée de fichier.
[**Process Hacker**](https://github.com/processhacker/processhacker) est un outil que vous pouvez télécharger gratuitement. Il a plusieurs options incroyables pour inspecter les processus et l'une d'entre elles est la **capacité à voir les poignées de chaque processus**.
Notez que pour **voir toutes les poignées de tous les processus, le privilège SeDebugPrivilege est nécessaire** (vous devez donc exécuter Process Hacker en tant qu'administrateur).
Le binaire [**Handles** ](https://docs.microsoft.com/en-us/sysinternals/downloads/handle)de Sysinternals listera également les poignées par processus dans la console :
[**Cet outil**](https://github.com/lab52io/LeakedHandlesFinder) vous permet de **surveiller** les **poignées** qui fuient et même de les **exploiter automatiquement** pour escalader les privilèges.
Maintenant que vous savez comment trouver les poignées des processus, vous devez vérifier si un **processus non privilégié a accès à des poignées privilégiées**. Dans ce cas, l'utilisateur du processus pourrait être en mesure d'obtenir la poignée et de l'utiliser pour escalader les privilèges.
Il a été mentionné précédemment que vous avez besoin du privilège SeDebugPrivilege pour accéder à toutes les poignées. Mais un **utilisateur peut toujours accéder aux poignées de ses processus**, il peut donc être utile si vous voulez privesc juste à partir de cet utilisateur pour **exécuter les outils avec les autorisations régulières de l'utilisateur**.
Par exemple, le code suivant appartient à un **service Windows** qui serait vulnérable. Le code vulnérable de ce binaire de service est situé à l'intérieur de la fonction **`Exploit`**. Cette fonction commence par **créer un nouveau processus de poignée avec un accès complet**. Ensuite, elle **crée un processus à faible privilège** (en copiant le jeton à faible privilège de _explorer.exe_) exécutant _C:\users\username\desktop\client.exe_. La **vulnérabilité réside dans le fait qu'elle crée le processus à faible privilège avec `bInheritHandles` comme `TRUE`**.
Par conséquent, ce processus à faible privilège est capable de saisir la poignée du processus à haut privilège créé en premier et d'injecter et d'exécuter un shellcode (voir la section suivante).
Dans un scénario réel, vous ne pourrez probablement pas **contrôler le binaire** qui sera exécuté par le code vulnérable (_C:\users\username\desktop\client.exe_ dans ce cas). Vous allez probablement **compromettre un processus et vous devrez vérifier si vous pouvez accéder à une poignée vulnérable de tout processus privilégié**.
Dans cet exemple, vous pouvez trouver le code d'une possible exploitation pour _C:\users\username\desktop\client.exe_.\
La partie la plus intéressante de ce code se trouve dans `GetVulnProcHandle`. Cette fonction va **commencer à récupérer toutes les poignées**, puis elle va **vérifier si l'une d'entre elles appartient au même PID** et si la poignée appartient à un **processus**. Si toutes ces exigences sont remplies (une poignée de processus ouverte accessible est trouvée), elle essaie d'**injecter et d'exécuter un shellcode en abusant de la poignée du processus**.\
L'injection du shellcode est effectuée à l'intérieur de la fonction **`Inject`** et elle va simplement **écrire le shellcode à l'intérieur du processus privilégié et créer un thread à l'intérieur du même processus** pour exécuter le shellcode).
Dans un scénario réel, vous ne pourrez probablement pas **contrôler le binaire** qui sera exécuté par le code vulnérable (_C:\users\username\desktop\client.exe_ dans ce cas). Vous allez probablement **compromettre un processus et vous devrez vérifier si vous pouvez accéder à une poignée vulnérable de tout processus privilégié**.
Dans cet exemple, **au lieu d'exploiter la poignée ouverte pour injecter** et exécuter un shellcode, **le jeton du processus de poignée ouverte privilégié sera utilisé pour en créer un nouveau**. Cela est fait dans les lignes de 138 à 148.
Notez comment la **fonction `UpdateProcThreadAttribute`** est utilisée avec l'**attribut `PROC_THREAD_ATTRIBUTE_PARENT_PROCESS` et la poignée du processus ouvert privilégié**. Cela signifie que le **thread de processus créé exécutant \_cmd.exe**\_\*\* aura le même privilège de jeton que le processus de poignée ouverte**.
Cet outil vous permet de surveiller les handles divulgués pour trouver ceux qui sont vulnérables et même de les exploiter automatiquement. Il dispose également d'un outil pour en divulguer un.
- Travaillez-vous dans une **entreprise de cybersécurité** ? Voulez-vous voir votre **entreprise annoncée dans HackTricks** ? ou voulez-vous avoir accès à la **dernière version de PEASS ou télécharger HackTricks en PDF** ? Consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop) !
- **Rejoignez le** [**💬**](https://emojipedia.org/speech-balloon/) [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez** moi sur **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
- **Partagez vos astuces de piratage en soumettant des PR au [repo hacktricks](https://github.com/carlospolop/hacktricks) et au [repo hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.