Tryhackme - Cyborg

s3cureroys3cureroy
5 min read

Cyborg, es un reto un poco diferente a lo que suelo hacer, ya que para resolver el desafío que traigo se debe realizar primero una enumeración de la web, para posteriormente usar una aplicación de backup para recuperar los ficheros cifrados.

Escaneo de puertos

Lo primero que se ha de hacer es ver que puertos dispone la máquina abiertos, y en este caso, se dispone del puerto correspondiente a SSH (22), y el que corresponde a un servidor Web (80).

Como no tenemos ninguna información para acceder por SSH, se comienza a revisar la página web, obteniendo la página por defecto de Apache. Se procede a utilizar una herramienta de fuzzing para revisar otros recursos que pueda haber disponibles.

Enumeración Web.

Para utilizar otra herramienta diferente, se decide usar la herramienta Dirbuster, una herramienta con interfaz gráfica que viene incluida con Kali Linux.

Mediante la herramienta de fuzzing y el diccionario usados, se obtiene el siguiente árbol de directorios.

Entonces, se procede a revisar el contenido de los ficheros, empezando por los que se encuentran en la ruta /etc/squid, conocida solución de proxy.

Contenido del fichero etc/squid/squid.conf.

auth\_param basic program /usr/lib64/squid/basic\_ncsa\_auth /etc/squid/passwd 
auth\_param basic children 5 
auth\_param basic realm Squid Basic Authentication 
auth\_param basic credentialsttl 2 hours 
acl auth\_users proxy\_auth REQUIRED 
http\_access allow auth\_users

En el fichero de configuración, se puede observar que protege el acceso al backend de la herramienta mediante autenticación básica, concretamente, mediante la contraseña almacenada en el fichero etc/squid/passwd .

Contenido del fichero etc/squid/passwd

music_archive:$apr1$BpZ.Q.1m$F0qqPwHSOG50URuOVQTTn.

El fichero passwd contiene un usuario llamado music_archive, y una contraseña.

Se intenta descifrar la contraseña mediante John the ripper y se obtiene que la contraseña es squidward.

Contenido de fichero admin/admin.html

En el fichero admin.html, el usuario Alex informa que sus datos confidenciales están almacenados en un fichero llamado “music_archive”, casualmente, como el usuario encontrado en el fichero anterior.

Contenido de fichero admin/archive.tar

Tener un fichero .tar expuesto publicamente no suele ser una buena práctica, y por ello, se descarga y se verifica el contenido.

Se puede comprobar que el contenido está cifrado y a través del fichero README.md podemos ver que el se trata de un backup realizado con la solución llamada Borg Backup.

Acceso inicial

Restauración de backup

Con el fichero de backup descargado, se decide revisar como se puede restaurar los ficheros para obtener esa información confidencial que comentaba el usuario Alex.

Para ello, se hace siguiendo las instrucciones publicadas en la documentación de la herramienta.

  1. Primero se debe listar los ficheros almacenados en el repositorio, usando la contraseña descifrada en pasos anteriores (squidward).

    En este caso el fichero se llama “music_archive” que será utilizado en el paso siguiente.

borg list home/field/dev/final_archive/

Enter passphrase for key /home/kali/Downloads/backup_borg/home/field/dev/final_archive:
music_archive Tue, 2020-12-29 15:00:38 f789ddb6b0ec108d130d16adebf5713c29faf19c44cad5e1eeb8ba37277b1c82
  1. Para poder montar el backup en alguna ruta del sistema, se crea un directorio bajo la ruta /mnt.
mkdir /mnt/music_archive
  1. Con la información obtenida en pasos anteriores, se restaura el backup del fichero music_archive en la ruta /mnt/music_archive.
borg mount home/field/dev/final_archive::music_archive /mnt/music_archive

Enter passphrase for key /home/kali/Downloads/backup_borg/home/field/dev/final_archive:

Una vez que el fichero se ha restaurado correctamente, se procede a revisar los ficheros que contiene, obteniendo el siguiente árbol de directorios dentro del home del usuario Alex.

A continuación se muestra el contenido de los ficheros.

Contenido del fichero /home/alex/Desktop/secret.txt

shoutout to all the people who have gotten to this stage whoop whoop!"

Como se puede observar, es una nota sin importancia.

Contenido del fichero /home/alex/Documents/note.txt

Wow I'm awful at remembering Passwords so I've taken my Friends advice and noting them down!

alex:S3cretP@s3

Como se puede observar, el fichero contiene la contraseña del usuario Alex, dueño del backup.

Se intenta acceder con las credenciales mediante SSH, obteniendo una shell en la máquina víctima.

alex@ubuntu:~$ cat user.txtflag{1_hop3_y0u_ke3p_th3_arch1v3s_saf3}

Escalada de privilegios

Se comienza a revisar las diferentes configuraciones que se pueden usar para escalar privilegios, obteniendo una posible vía de escalada de privilegios mediante sudo, ya que permite ejecutar un script con privilegios de administrador, sin contraseña.

Contenido del script /etc/mp3backups/backup.sh

Se verifica el contenido del script para ver como funciona.

#!/bin/bash

sudo find / -name "*.mp3" | sudo tee /etc/mp3backups/backed_up_files.txt


input="/etc/mp3backups/backed_up_files.txt"
#while IFS= read -r line
#do
  #a="/etc/mp3backups/backed_up_files.txt"
#  b=$(basename $input)
  #echo
#  echo "$line"
#done < "$input"

while getopts c: flag
do
        case "${flag}" in 
                c) command=${OPTARG};;
        esac
done



backup_files="/home/alex/Music/song1.mp3 /home/alex/Music/song2.mp3 /home/alex/Music/song3.mp3 /home/alex/Music/song4.mp3 /home/alex/Music/song5.mp3 /home/alex/Music/song6.mp3 /home/alex/Music/song7.mp3 /home/alex/Music/song8.mp3 /home/alex/Music/song9.mp3 /home/alex/Music/song10.mp3 /home/alex/Music/song11.mp3 /home/alex/Music/song12.mp3"

# Where to backup to.
dest="/etc/mp3backups/"

# Create archive filename.
hostname=$(hostname -s)
archive_file="$hostname-scheduled.tgz"

# Print start status message.
echo "Backing up $backup_files to $dest/$archive_file"

echo

# Backup the files using tar.
tar czf $dest/$archive_file $backup_files

# Print end status message.
echo
echo "Backup finished"

cmd=$($command)
echo $cmd

Se verifica que el script acepta un parámetro que permite ejecutar un comando, por lo que se ejecuta el script añadiendo el parámetro -c, y así mostrar el contenido de la flag de root.

sudo /etc/mp3backups/backup.sh -c "cat /root/flag.txt"

flag: flag{Than5s_f0r_play1ng_H0p£_y0u_enJ053d}

💡
Si se desea, como se dispone de permisos de escritura en el fichero, se podría sobreescribir el contenido de este

Conclusiones

Y hasta aquí mi resolución de la máquina Cyborg de Tryhackme, CTF que contiene un paso adicional para ganar acceso a la máquina víctima, como es, la restauración de un backup para obtener la información confidencial que se almacenaba en él.

Así que, recordad que no se debe almacenar usuarios y contraseñas dentro de archivos de backup.

Salu2!

0
Subscribe to my newsletter

Read articles from s3cureroy directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

s3cureroy
s3cureroy