Skip to main content

Command Palette

Search for a command to run...

Artificial WriteUp

Updated
3 min read
Artificial WriteUp

Se hace un escaneo de nmap para reconocer el entorno con los parametros:

  • -sV Para identificar las versiones de los servicios expuestos.

  • -Pn Para omitir el ping a los hosts (asumiendo que están activos).

  • -sC Para utilizar los scripts por defecto de nmap.

Como podemos observar, en el puerto 80 hay un servidor http funcionando el cual nos redireccionara a http://artificial.htb/ donde veremos que hay un sitio web en el cual debemos registrarnos para acceder

Tras registrarnos, iniciamos sesion en http://artificial.htb/login

Y se nos redirigirá a /dashboard donde veremos un apartado el cual es para subir, gestionar y lanzar, nuestros propios modelos de inteligencia artificial, para esto, es necesario tener instalados los requirimientos para construir el modelo y usar el dockerfile para crear el entorno necesario.

Si revisamos, veremos que uno de los requerimientos, es tensorflow en la version 2.13.1

Tras buscar un poco, encontramos que hay un posible RCE mediante la creacion de un modelo malicioso:

TensorFlow Remote Code Execution with Malicious Model | CyberBlog

Creamos el entorno con los requerimientos necesarios, y creamos nuestro modelo malicioso, una vez subido, obtendremos una revshell

$ john --format=raw-md5 hashes.txt --wordlist=/usr/share/seclists/Passwords/Leaked-Databases/rockyou.txt

hacker (hacker)
mattp005numbertwo (gael)
marwinnarak043414036 (royer)

Entramos por ssh con las credenciales del usuario gael y obtenemos la flag de user

Subimos linpeas.sh para ver posibles vectores de escalada de privilegios

Si revisamos el escaneo de linpeas, veremos que hay archivos de copias de seguridad

Entre ellos hay uno que parece interesante llamado backrest_backup.tar.gz dentro de /var/backups

Lo descargamos en nuestra maquina utilizando scp

$ scp gael@artificial.htb:/var/backups/backrest_backup.tar.gz

Descomprimimos el archivo para ver su contenido

Si revisamos el archivo config.json veremos las credenciales del usuario backrest_root con la password cifrada

Decodeamos la clave

Password: !@#$%^

Si revisamos install.sh veremos que la interfaz web de backrest esta activa en el puerto 9898

Hacemos un portforwarding del puerto 9898 para acceder a la interfaz de backrest

Revisamos que tenemos acceso accediendo a localhost:9898 y como podemos observar, nos aparece la interfaz web de backrest en su version 1.7.2

Iniciamos sesion con las credenciales previamente obtenidas:

user: backrest_root
pass: !@#$%^

Creamos un repositorio que haga una copia de seguridad de /root para obtener la flag de root

Realizamos la copia de seguridad presionando backup now

Revisamos el contenido de la snapshot

Confirmamos que se copio la flag de root y descargamos la copia de seguridad

Restauramos el archivo /root/root.txt de la snapshot que realizamos

Descargamos el archivo de restauracion

Descomprimimos el archivo de la copia de seguridad y obtenemos la flag de root


📌 Sígueme / Portfolio

🌐 Web: https://0xnano.com

🐦 X: https://x.com/0xN4no

🐙 GitHub: https://github.com/0xN4no

Nano

🔎 ¿Te gustó el writeup? Comentá o compartilo — siempre respondo dudas y me encanta ver mejoras/PRs.