Para empezar hacemos un escaneo para ver los puertos abiertos de la máquina:
Como veo que están los puertos 22 (SSH) y 80 (HTTP) voy a hacer un escaneo sobre esos dos puertos con los scripts básicos de reconocimiento que aplica Nmap:
Vamos a revisar el contenido de la web de el puerto 80:
No vemos nada en el código fuente así que vamos a enumerar directorios con gobuster:
Vemos el directorio Uploads y el directorio Panel, vamos a revisar el Panel:
Se ve que podemos subir archivos, yo probaré con php ya que es lo que interpreta el servidor:
No nos permite subirlo, vamos a probar con la extensión phtml que también interpreta php:
Nos ha dejado subirlo, podemos aprovechar para subir una reverse shell e ir al directorio uploads para comprobar la subida:
Al ver que se ha subido lo único que tenemos que hacer es ponernos en escucha con netcat y dar click en el archivo desde el directorio uploads:
Nos ha llegado la reverse shell así que lo siguiente es tratarla:
1
2
3
4
5
6
script /dev/null -c bash
Ctrl + Z
stty raw -echo; fg
reset xterm
export TERM=xterm
export SHELL=bash
Lo siguiente es encontrar la flag de usuario, no está en “/home/rootme/user.txt” ni en “/home/test/user.txt” así que vamos a revisar en “/var/www”:
Vamos a ver si existen binarios SUID con propietario root:
Vemos que el binario de Python tiene permisos SUID así que lo buscamos en GTFObins:
1
python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
Encontramos un oneliner que nos da una shell de root así que lo probamos:
Y con eso terminamos la máquina RootMe.