Road to HackMex: Dia 5 - exhibit

· 4min · IsaacNietoG

Writeup: exhibit - echoCTF

Información General

Descripción de la máquina

We present to you exhibit VI, what you'll do with it is up to you.

Enumeración

Escaneo Inicial

El nmap nos marca servicio SSH y HTTP. En HTTP nos da el indicio de que tenemos un TinyWebGallery.

Análisis de Servicios

Dentro de TinyWebGallery la vemos recien configurada, no hay descripciones cambiadas. Su versión es 2.6

Encontramos también un panel de login al cual le tiro las defaults más poderosas que me sé pero no cede, tons le dejo de insistir x ahí.

Explotación

Busqueda de vulnerabilidades

Si buscamos un exploit nos da uno para 2.5, podríamos probarlo a ver si jala

TinyWebGallery v2.5 - Remote Code Execution (RCE) - PHP webapps Exploit

Pero necesitamos credenciales de admin. Ya de paso veo en la explicación del exploit que el panel que encontramos en el paso anterior no era el necesario, el que necesitamos está en /admin jjj

Explotación

Default Admin Password : TWG Admin

Según este sitio, las credenciales vienen en un readme.txt o en la guía de instalación de la herramienta. Como somos huevones, vamos a ver si de pura casualidad tenemos el readme.txt expuesto, que debería de estar en /admin/readme.txt

Y efectivamente, encontramos el archivo disponible para lectura y ahí podemos encontrar las credenciales por default, las cuales son:

admin:twg_admin

Una vez dentro, intentamos seguir el exploit y subimos nuestra payload .phar, la cual en este caso la hice que directamente abriera el netcat hacia mi IP; porque eventualmente uno se cansa de las web shells y quiere empezar directamente en los putazos jajaj.

El payload se encontrará en la raíz; ponemos nuestro netcat a la escucha y lo ejecutamos. We are in. Y como tenemos prisa, directamente upgradeamos shell y canjeamos la bandera de /etc/passwd.

También de una vez podemos sacar la bandera de env

Escalación de Privilegios

Análisis

Una vez dentro, corremos sudo -l por fuerza de hábito para ver qué podemos hacer y vemos que podemos correr /usr/bin/vi vimit con permisos de sudo sin contraseña, pero también con la bandera NOEXEC. Mucho ojo a este ultimo dato cuate.

Si buscamos en GTFOBins qué podemos hacer con esto, nos daremos cuenta de que esta flag NOEXEC nos pone el pie para poder usar cualquier cosa de ahí, porque nos impide spawnear un shell desde adentro, que es la sugerencia que nos da GTFOBins

vi | GTFOBins

Pero, en mi experiencia, tener vi o emacs con derechos de sudo es como tener un sudo libre por el mundo, porque ambos editores son bastante poderosos y tienen tantas funciones ocultas que tal vez ni sus creadores conocen, así que tal vez si buscamos en su documentación podemos encontrar algo útil.

Y pues después de googlear un rato me encontré con esto, que no está en la documentación de vi, está en la de vim, pero equis.

Vim: editing.txt

La cual nos dice que con el comando :e {file} podemos cambiar de archivo una vez dentro de vi. Con esto ya tenemos carta libre, pues ahora tenemos forma de ver y modificar cualquier archivo de texto en la máquina. Esto nos abre muchas puertas tal como:

  • Meter nuestra llave publica en /root/.ssh/authorized_keys
  • Quitarle la contraseña a root con /etc/passwd
  • Volcar de una vez las banderas que queramos, sin escalar privilegios (?

Explotación

Y yo intenté la tercera porque pues las prisas. Con la flag en /etc/shadow no hubo problema, pues es accesible directamente. Pero para la bandera de /root/ETSTCTF_REDACTED me encontré con el problema obvio de que la bandera no se encuentra dentro de un archivo conocido, el nombre del archivo es la bandera en sí.

Entonces, para las prisas, lo que se me ocurrió fue agregar la siguiente entrada a /etc/sudoers

www-data ALL=(ALL:ALL) NOPASSWD:ALL

Con esta, podré temporalmente correr cualquier comando como sudo. En este caso y para terminar, un rico y poderoso:

sudo ls -la /root

headshot