# 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`.
    
    ![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761370161142/b5be1cb9-fa37-4c60-b9d3-bbe4e9c48faa.png align="left")
    

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761370170720/44abada5-378b-4b7b-ab75-19df5099bf4c.png align="left")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761370178362/16fdb9fa-80ce-4e47-8361-f1bd75b6b17c.png align="left")

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.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761370186547/207fad65-b94e-4998-8f88-d8dd047aa38e.png align="left")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761370242588/7f7c98d7-9336-40eb-8956-cac8c9e844fb.png align="left")

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](https://splint.gitbook.io/cyberblog/security-research/tensorflow-remote-code-execution-with-malicious-model)

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761370250786/fa89cb55-5e18-4d6e-9144-7ca6cab1a0df.png align="left")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761370261007/87f7c707-6e2b-445a-8a9c-30511a4f8f0a.png align="left")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761964799478/ff2a0b3a-dd1c-4a40-9c89-073aa8f99095.png align="center")

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

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761370282249/644688a9-b17c-4928-a24c-f481177ff508.png align="left")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761965130475/11a70050-e05b-4c5a-beb0-b82bff8ae814.png align="center")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761965254618/a3deb387-f475-442f-84a9-822f0aaa9c69.png align="center")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761965316902/875a167e-7f2c-41e5-93d8-cf5cb4eb2387.png align="center")

Lo descargamos en nuestra maquina utilizando scp

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761965417573/876e4380-ff8d-439f-ac3e-966875a3d232.png align="center")

Descomprimimos el archivo para ver su contenido

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761965438475/3709165f-b3ea-4ff8-a999-a556f913e31e.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761965457177/4f507987-e026-48e3-96ca-8f72d8ea9372.png align="center")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761965498709/a1c60f9e-0ba1-4941-bfd2-c620a9613fc1.png align="center")

Decodeamos la clave

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761965567654/265b8f31-dd22-4c03-8498-f6cd6fed36f5.png align="center")

Password: `!@#$%^`

Si revisamos [install.sh](http://install.sh) veremos que la interfaz web de backrest esta activa en el puerto 9898

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761965608897/562573c9-f7f7-4b27-8bf9-78638a183629.png align="center")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761965764658/7836b4f8-afc0-4f8d-b907-fa0c95a41875.png align="center")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761965787337/d9c6e8a5-38e2-426f-b64f-875a4fb68a41.png align="center")

Iniciamos sesion con las credenciales previamente obtenidas:

user: `backrest_root`  
pass: `!@#$%^`

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761965938021/8ff87a14-020a-4193-82c6-3d8e421e3416.png align="center")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761966040060/c588d92b-92ee-452c-9df4-b89973ce8c2b.png align="center")

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761966194233/4608b0fe-ff61-4733-9529-8a60a670cb46.png align="center")

Realizamos la copia de seguridad presionando backup now

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761966210876/0ae1a77b-b369-4461-8984-d79aad19ee81.png align="center")

Revisamos el contenido de la snapshot

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761966256534/c8a70ce5-65e8-4356-8985-91ba1bf953e4.png align="center")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761966283306/6301b997-4e64-4b26-b2bc-68521c64eb4c.png align="center")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761966445239/6a151ce8-c8d9-4d8a-9a5d-4be3a8d4dcf7.png align="center")

Descargamos el archivo de restauracion

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761966458025/94c68246-7ea2-4b20-a1a4-b285009e1eca.png align="center")

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

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1761966502491/908aaf99-f831-40d3-972d-59a1c6bbfc9a.png align="center")

---

📌 **Sígueme / Portfolio**

🌐 **Web:** [https://0xnano.com](https://0xnano.com/)

🐦 **X:** [https://x.com/0xN4no](https://x.com/0xN4no)

🐙 **GitHub:** [https://github.com/0xN4no](https://github.com/0xN4no)

![Nano](https://www.hackthebox.eu/badge/image/54373 align="left")

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

---
