<summary><strong>Apprenez le hacking AWS de zéro à héros avec</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
Il y a déjà eu plusieurs cas d'**escalade de privilèges** où un **processus privilégié** avec des **handles ouverts et héritables** a **exécuté** un **processus non privilégié** lui donnant **accès à tous ces handles**.
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 réduits mais héritant de tous les handles ouverts du processus principal**.\
Ensuite, si vous avez **un accès complet au processus à faibles privilèges**, vous pouvez récupérer le **handle ouvert sur le 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'un handle de processus** d'un **processus privilégié** avec suffisamment de permissions, il sera capable d'exécuter **du code arbitraire sur celui-ci**.
Dans [**cet excellent article**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/) vous pouvez voir comment exploiter n'importe quel handle de processus qui a l'une des permissions suivantes :
Similaire aux handles de processus, si un **processus non privilégié hérite d'un handle de thread** d'un **processus privilégié** avec suffisamment de permissions, il sera capable d'exécuter **du code arbitraire sur celui-ci**.
Dans [**cet excellent article**](http://dronesec.pw/blog/2019/08/22/exploiting-leaked-process-and-thread-handles/) vous pouvez également voir comment exploiter n'importe quel handle de processus qui a l'une des permissions suivantes :
Si un **processus non privilégié hérite** d'un **handle** avec des **permissions d'écriture** équivalentes sur un **fichier ou registre privilégié**, il pourra **écraser** le fichier/registre (et avec beaucoup de **chance**, **escalader les privilèges**).
Les **Handles de Section** sont similaires aux handles de fichier, 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 **de gros fichiers sans garder l'intégralité** du fichier en mémoire. Cela rend l'exploitation assez "similaire" à celle d'un Handle de Fichier.
[**Process Hacker**](https://github.com/processhacker/processhacker) est un outil que vous pouvez télécharger gratuitement. Il dispose de plusieurs options incroyables pour inspecter les processus et l'une d'elles est la **capacité de voir les handles de chaque processus**.
Notez que pour **voir tous les handles de tous les processus, le 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 handles par processus dans la console :
[**Cet outil**](https://github.com/lab52io/LeakedHandlesFinder) vous permet de **surveiller** les **handles fuités** et même de les **autoexploiter** pour escalader les privilèges.
Maintenant que vous savez comment trouver les handles des processus, ce que vous devez vérifier est si un **processus non privilégié a accès à des handles privilégiés**. Dans ce cas, l'utilisateur du processus pourrait être capable d'obtenir le handle et de l'abuser pour escalader les privilèges.
Il a été mentionné auparavant que vous avez besoin du SeDebugPrivilege pour accéder à tous les handles. Mais un **utilisateur peut toujours accéder aux handles de ses processus**, donc cela pourrait être utile si vous voulez privesc juste à partir de cet utilisateur pour **exécuter les outils avec les permissions 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 se trouve dans la fonction **`Exploit`**. Cette fonction commence par **créer un nouveau processus avec un accès complet**. Ensuite, elle **crée un processus à faibles privilèges** (en copiant le jeton à faibles privilèges 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 à faibles privilèges avec `bInheritHandles` sur `TRUE`**.
Par conséquent, ce processus à faibles privilèges peut récupérer le handle du processus à privilèges élevés créé en premier et injecter et exécuter un shellcode (voir la section suivante).
Dans un scénario réel, vous ne pourrez probablement pas **contrôler le binaire** qui va être exécuté par le code vulnérable (_C:\users\username\desktop\client.exe_ dans ce cas). Probablement, vous **compromettrez un processus et vous devrez vérifier si vous pouvez accéder à une quelconque poignée vulnérable d'un processus privilégié**.
Dans cet exemple, vous pouvez trouver le code d'un exploit possible pour _C:\users\username\desktop\client.exe_.\
La partie la plus intéressante de ce code se trouve dans `GetVulnProcHandle`. Cette fonction va **commencer par récupérer toutes les poignées**, puis elle vérifiera si l'une d'entre elles appartient au même PID et si la poignée appartient à un **processus**. Si toutes ces conditions sont remplies (une poignée de processus ouverte et accessible est trouvée), elle essaiera d'**injecter et exécuter un shellcode en abusant de la poignée du processus**.\
L'injection du shellcode est réalisée à l'intérieur de la fonction **`Inject`** et consistera 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 devrez probablement **compromettre un processus et chercher si vous pouvez accéder à un handle vulnérable de n'importe quel processus privilégié**.
Dans cet exemple, **au lieu d'abuser du handle ouvert pour injecter** et exécuter un shellcode, on va **utiliser le jeton du processus privilégié avec le handle ouvert pour créer un nouveau processus**. Cela est réalisé dans les lignes de 138 à 148.
Notez comment la **fonction `UpdateProcThreadAttribute`** est utilisée avec l'**attribut `PROC_THREAD_ATTRIBUTE_PARENT_PROCESS` et le handle vers le processus privilégié ouvert**. Cela signifie que le **thread du processus créé exécutant \_cmd.exe**\_\*\* aura le même privilège de jeton que le processus avec le handle ouvert\*\*.
Cet outil vous permet de surveiller les handles fuités pour trouver ceux qui sont vulnérables et même de les exploiter automatiquement. Il dispose également d'un outil pour en provoquer une fuite.
<summary><strong>Apprenez le hacking AWS de zéro à héros avec</strong><ahref="https://training.hacktricks.xyz/courses/arte"><strong>htARTE (HackTricks AWS Red Team Expert)</strong></a><strong>!</strong></summary>
* Si vous souhaitez voir votre **entreprise annoncée dans HackTricks** ou **télécharger HackTricks en PDF**, consultez les [**PLANS D'ABONNEMENT**](https://github.com/sponsors/carlospolop)!
* Obtenez le [**merchandising officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* Découvrez [**La Famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection d'[**NFTs**](https://opensea.io/collection/the-peass-family) exclusifs
* **Rejoignez le** 💬 [**groupe Discord**](https://discord.gg/hRep4RUj7f) ou le [**groupe Telegram**](https://t.me/peass) ou **suivez-moi** sur **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**.**
* **Partagez vos astuces de hacking en soumettant des PR aux dépôts github** [**HackTricks**](https://github.com/carlospolop/hacktricks) et [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).