HTB Sorcery: Conquistando o Domínio FreeIPA
Este artigo detalha a exploração de um domínio FreeIPA, cobrindo uma cadeia completa de exploração, começando com um ataque ao site. Exploraremos a injeção Cypher, contornaremos a verificação Passkey no site e obteremos RCE através do serviço Kafka. Realizaremos reconhecimento no host, seguido de phishing bem-sucedido e muito mais.
Nossa meta final é obter privilégios de superusuário na máquina Sorcery da plataforma de treinamento Hack The Box. O nível de dificuldade é "insano".
Aviso: É melhor se conectar às máquinas HTB usando ferramentas de anonimização e virtualização. Não faça isso a partir de computadores onde dados importantes são armazenados: você estará na mesma rede que outros participantes.
Reconhecimento
Escaneamento de Portas
Adicione o endereço IP da máquina ao /etc/hosts:
10.10.11.73 sorcery.htb
Execute um escaneamento de portas.
Dica: O escaneamento de portas é o primeiro passo padrão em qualquer ataque. Ele permite que o atacante descubra quais serviços estão aceitando conexões no host. Com base nessas informações, o próximo passo para obter um ponto de entrada é selecionado.
A ferramenta mais conhecida para escaneamento é o Nmap. Você pode melhorar os resultados do seu trabalho com este script:
bash#!/bin/bash ports=$(nmap -p- --min-rate=500 $1 | grep ^[0-9] | cut -d '/' -f1 | tr ' ' ',' | sed s/,$//) nmap -p $ports -A $1
Ele funciona em duas etapas. A primeira executa um escaneamento rápido normal, a segunda, mais minuciosa, usando scripts embutidos (opção -A).
Mais detalhes sobre como trabalhar com o Nmap podem ser encontrados no artigo "Nmap desde o início. Dominando o reconhecimento e o escaneamento de rede".
Resultado do script:
O scanner encontrou duas portas abertas:
- 22 - OpenSSH 9.6p1;
- 443 - Servidor web Nginx 1.27.1.
O campo commonName no certificado SSL contém o nome de domínio do site. Ele já está gravado em /etc/hosts.
Página de Login
Ponto de Entrada
Na página, você pode se registrar e fazer login usando credenciais ou um token Passkey. Após o registro, obtemos uma lista de posts.
Página Principal do Site
Nas configurações do perfil, você pode gravar um Passkey em um token.
Página de Perfil
Como sabemos o domínio real do site, tentaremos encontrar outros por força bruta - isso expandirá a área de teste. Para escanear subdomínios, você pode usar ffuf.
Dica: Uma das primeiras ações ao testar a segurança de um aplicativo web é escanear por força bruta de diretórios para encontrar informações ocultas e funções inacessíveis aos visitantes comuns. Para isso, você pode usar programas como dirsearch e DIRB.
Eu prefiro o ffuf leve e muito rápido. Ao iniciar, especificamos os seguintes parâmetros:
-u- URL;-w- dicionário (eu uso dicionários do conjunto SecLists);-t- número de threads;-r- executar redirecionamentos;-fs- filtrar páginas por tamanho;-fc- excluir respostas com código 403 do resultado.
A posição da força bruta é marcada com a palavra FUZZ.
Execute o scanner, listando todos os parâmetros:
bashffuf -u "https://sorcery.htb/" -H 'Host: FUZZ.sorcery.htb' -w subdomains-bitquark-top100000.txt -t 128
Resultado do escaneamento de subdomínios:
Todas as opções da lista foram incluídas na saída do utilitário, portanto, é melhor usar filtros, por exemplo, por tamanho da resposta (parâmetro -fs).
bashffuf -u "https://sorcery.htb/" -H 'Host: FUZZ.sorcery.htb' -w subdomains-bitquark-top100000.txt -t 128 -fs 169
Resultado do escaneamento de subdomínios:
Encontramos um novo recurso e atualizamos a entrada no arquivo /etc/hosts.
10.10.11.73 sorcery.htb git.sorcery.htb
Página Principal do Gitea
Na lista de projetos públicos, há um infrastructure acessível sem autorização.
Lista de Repositórios
Conteúdo do repositório infrastructure
O repositório tem uma tarefa ativa, que fala sobre a injeção de uma consulta SQL no banco de dados.
Página da Tarefa
Ponto de Apoio
Injeção Cypher
Baixamos o código-fonte do repositório e encontramos todos os manipuladores de solicitações. Um dos manipuladores GET aceita id e retorna o objeto Product correspondente.
Código-fonte do aplicativo
O restante do artigo está disponível apenas para assinantes do site Xakep.ru. Para continuar a leitura, é necessário se tornar um membro da comunidade.

