🟠NoName
Write-up de la máquina NoName de Proving Grounds #writeup #walkthrough
Last updated
Write-up de la máquina NoName de Proving Grounds #writeup #walkthrough
Last updated
Comenzamos la resolución de la máquina Noname enumerando que servicios tiene el sistema objetivo abiertos.
Únicamente está abierto el puerto 80. Vamos a ver que se está ejecutando en ese puerto.
Servicios abiertos
Puerto 80 -> HTTP -> Apache httpd 2.4.29
La máquina NoName está ejecutando un servicio Web en el puerto 80. Veamos su contenido.
Vemos una posible función donde nos insta a ejecutar comandos pero falso, como podemos ver en el código fuente.
Vamos a enumerar archivos y directorios con la herramienta dirsearch.
Encontramos un directorio /admin. Vamos a ver su contenido.
Encontramos 4 imagenes, que vamos a descargar en nuestro equipo. También vamos a revisar el código fuente por si hubiese info interesante.
Encontramos una pass, que vamos a guardar por si fuese interesante.
Tenemos cuatro imágenes dentro de un directorio /admin. ¿Sospechoso? Vamos a tratar de extrear información oculta en estas imágenes mediante la técnica de steganografía.
Después de extraer la información, encontramos un posible nuevo archivo interesante. Vamos a ver su contenido en el navegador.
Volvemos a ver la misma función para ejecutar comandos que vimos al principio de la enumeración, pero en este caso, podemos ejecutar comandos.
Sabiendo que se pueden ejecutar comandos, vamos a tratar de levantar una reverse shell hacia nuestra máquina de ataque. Viendo el código fuente de esta aplicación, vemos que tenemos limitaciones en cuanto a los comandos que podemos ejecutar.
Ahora tiene sentido: la aplicación ha limitado la ejecución de ciertos comandos... puede ser necesario adoptar enfoques innovadores para lograr que esto funcione.
Es evidente que existen ciertos comandos completamente prohibidos. Por lo tanto, una opción podría ser emplear nc.traditional para lograr una shell inversa, sin embargo, se presentaría el inconveniente de que nc seguiría siendo una cadena detectable. Como solución a esto, opté por codificar la siguiente carga útil en base64.
Debemos levantar en nuestra máquina un oyente nc en el puerto 1337.
Ya tendremos acceso a la máquina objetivo como "www-data". Antes de continuar con la resolución de la máquina, vamos a realizar el tratamiento de la tty para facilitar el trabajo.
El siguiente paso será buscar la flag local.txt
Una vez obtuvimos acceso a la máquina objetivo y encontramos la flag local.txt, continuaremos elevando nuestros privilegios dentro de la máquina objetivo. Si tuviesemos un usuario con credenciales podríamos enumerar que puede ejecutar ese usuario como root sin contraseña, pero no tenemos credenciales. Así que la siguiente enumeración interesante sería que binarios tienen activo el bit SUID.
El ejecutable find dispone del bit SUID, y este puede ser un vector de elevación de privilegios. Vamos a consultar GTFOBins.
Vamos a tratar de elevar privilegios utilizando este recurso.
Obtenemos acceso con privilegios máximos dentro del sistema objetivo, el paso final será buscar la flag proof.txt
Y ya estaría resuelta la máquina NoNamede la plataforma Proving Grounds.