1 Encontrar puertos abiertos
Realizamos un Escaneo con NMAP
==nmap -sV -sC 10.10.250.93
==Reconnaissance
Scan the machine, how many ports are open?
2
What version of Apache is running?
2.4.29
What service is running on port 22?
SSH
What is the hidden directory?
/panel/
``
`
2 Ejecutamos gobuster
Ejecutamos gobuster para encontrar posibles directorios en el sitio:
gobuster dir -w /usr/share/wordlists/dirb/common.txt -x php,txt,html -t 20 -u http://10.10.250.93
2 Inyectar fichero php
Como parte del escaneo, descubrimos que existe una ruta llamada /panel/ y otra llamada /uploads/. Intentaremos subir un archivo .php en el directorio /panel/ para ver que es lo que sucede.
Como observamos, el sitio rechaza los archivos con extensión .php:
Para continuar con nuestro ataque, existe un repositorio en github en el cual puedes descargar un reverse shell con php, te dejo el enlace a continuación:
https://github.com/pentestmonkey/php-reverse-shell/blob/master/php-reverse-shell.php
Una vez descargado nuestro archivo, procederemos a modificar la siguiente línea que indica la ip = $ip=, en mi caso, ejecuto el comando ifconfig para saber cual es la que tiene asignada mi equipo:
Como vemos, la dirección de mi equipo es 10.8.243.223 , así que esa es la que asignare al parámetro del reverse shell. Para ello usaré nano:
Es importante mencionar, que el parámetro $port debemos dejarlo tal cual con el valor ‘1234’, ya que más adelante lo utilizaremos.
Guardamos el archivo y ahora procedemos a subirlo al path /panel/, pero como ya sabemos que no acepta archivos .php, simplemente cambiaremos la extensión a .phtml :
Vemos que pasamos la validación:
Si recordamos, existe una ruta llamada /uploads/ donde podremos ver los archivos cargados al sitio y es aquí donde encontraremos nuestro archivo que acabamos de subir:
3 Activar el reverse shell
Para activar nuestro reverse shell, lo único que tendremos que hacer es abrir una terminal nueva como usuario root y ejecutar el siguiente comando:
nc -nlvp 1234
Después de ello, nos dirigimos al directorio /uploads/ y damos un solo clic el nombre del archivo:
La página parecerá que se queda cargando, pero si observamos nuestra terminal, veremos que ya tenemos acceso:
4 Encontrar el flag user.txt
Para no complicarnos la vida buscando directorio por directorio, usaremos el siguiente comando en la terminal para buscar en la toda la máquina donde se encuentra el flag user.txt:
find / -type f -name user.txt 2>/dev/null
Y observamos que se encuentra en la ruta: /var/www/user.txt
Nos dirigimos a ella y vemos que el flag es el siguiente:
“THM{y0u_g0t_a_sh3ll}
Escalamiento de privilegios
Buscar archivos SUID
Para realizar el siguiente paso, necesitamos poner buscar en todo el sistema archivos con el SUID, para ellos ejecutamos el siguiente comando:
find / -user root -perm /4000
Obsevamos que podemos ejecutar python
Search for files with SUID permission, which file is weird?
/usr/bin/python
Esto es interesante, porque podemos ver si podemos ejecutar algún binario para poder escalar privilegios. Para ello, nos dirigimos al sitio web y buscamos python:
Como vemos, si podemos ejecutar SUID con python:
Ahora damos clic a la opción SUID y vemos que podemos ejecutar el siguiente comando desde la terminal:
python -c 'import os; os.execl("/bin/sh", "sh", "-p")'
Ahora procederemos a buscar el flag root.txt:
find / -type f -name root.txt 2>/dev/null
Observamos que se encuentra en /root, ahora solos nos dirigimos a esa ruta y realizamos un cat para saber cual es flag:
THM{pr1v1l3g3_3sc4l4t10n}
Listo! Con esto hemos completado este interesante CTF.