dplastico

Juan el hacker es una maquina que cree como desafio para el CTF Q4 2019, la maquina esta inspirada en la serie de animé Serial Experimentals Lain, Como veterano de los 90, esta serie me inspiro mucho y se la recomiendo a todos los que ven en la tecnología algo más que una herramienta. También puse algunas cosas ocultas con una pequeña historia, quienes resolvieron la maquina o avanzaron saben de lo que hablo, por lo mismo estos mensajes los dejo afuera para que haya algo de sorpresa jeje :)

Volviendo a lo nuestro: Al enumerar usando nmap la maquina solo vemos algunos servicios abiertos:

Revisando la web no se vé mucho, pero si llama la atención el puerto 79, un viejo protocolo (de los 90 jejeje) que era usado para mostrar información de tu user, esta información es normalmente proporcianada en archivos .plan y .project los cuales se guardan en el home del user, para más información.

https://touhidshaikh.com/blog/?p=914

Usando este servicio descubrimos que el usuario juan (como el nombre de la maquina) muestra lo siguiente:

Copiamos el output del project que es claramente un Hex el cual al pasarlo a ASCII nos muestra un texto cifrado, el cual parece ser un rot o caesar cipher, por lo cual al decodearlo encontramos lo siguiente:

Esto parece la primera parte de un password ya que no funciona por si solo, pero nos habla de un sitio oculto, esto nos ayuda a descifrar que hacer con el output que entrega plan, el cual parece un MD5, lo pasamos por un decrypter y encontramos "hola_lain"

Con esto revisamos el sitio web y encontramos una pagina (hola lain, que también es una referencia a este animé

EL formulario es un html plano, pero al enumerar directorios dentro de hola_lain, podemos descubrir un directorio "admin" que tiene solo una foto

la foto contiene un texto, sin contraseña usando steghide o similar, a gusto del participante se puede leer la segunda parte de la contraseña y formamos las credenciales para entrar como juan

juan:1missy0uch1saSt0pn0wchisa

Una vez dentro como Juan debemos escapar una shell restringida usando el comando find , comparto esta pagina también con un link util y la forma de hacerlo

https://www.hackplayers.com/2018/05/tecnicas-para-escapar-de-restricted--shells.html

Una vez ya dentro procedemos a enumerar, y en el mismo directorio encontramos un archivo, que no se puede ejecutar, pero si podemos leerlo, por lo que procedemos a analizarlo y vemos los strings

El código dice "if 5elemets: "BOFetada" Como un pequeño cameo al equipo con el que participé en la hackaton de telefónica y mi maquina favorita jejeje si probamos los strings como passwords vemos que el usuario lainiwakura puede entrar con la contraseña "BOFetada"

Ya dentro vemos claramente un archivo que llama la atención, es programa vulnerable a un buffer overflow de 32bit, que de hecho estudiando para el OSCE fue que me inspiré pensando en este exploit https://www.fuzzysecurity.com/exploits/7.html

Si quieren reproducirlo pueden usar este codigo en C:

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
int lain(char *str)
{
        char buffer[24];
        

        strcpy(buffer, str);
        return 1;
}

int main(int argc, char **argv)
{
        char str[517];
        FILE *badfile;
        badfile = fopen("PHANTOMa", "r");
        fread(str, sizeof(char), 517, badfile);
        lain(str);
        printf("salimos bien juan, pero no queremos eso ... :( \n");
        return 1;

}

Es algo mucho mas sencillo, es un simple exploit de 32 bit, al tener el stack ejecutable (perdonen por la mala compilación de los binarios en el CTF hjejeje, muchos perdieron tiempo en eso)

Volviendo al exploit de chisa, nos damos cuenta que lee el input de el archivo PHANTOMa, cada vez que de ejecuta, por lo que debemos enviar ahi nuestro input

Luego ejecutamos en gdb vemos que el EIP tiene un offset de 32, por lo que desde el byte dos en adelante podemos controlarlo, así que el plan es enviar un shellcode

El plan es enviar un shellcode, pero no cualquier shellcode, en sistemas nuevos, incluso usando 32, las shell como dash y bash tienen un mecanismo de seguridad que "dropea" cualquier privilegio de SUID antes de ejcutarse, por lo que un shellcode normal que llame a /bin/sh no nos servirá, es por eso que ocupamos python para poder ejecutar el shellcode como root y no "dropear" privilegios cuando se ejecute la shell.

http://shell-storm.org/shellcode/files/shellcode-886.php

Finalmente usamos este shellcode y copiamos el ouput del siguiente exploit a PHANTOMa (python exploit.py > PHANTOMa)

Y con esto tenemos una shell de root:

Espero que les haya gustado!!