WRITE UP CTF JURASSIC PARK – THM

DESCRIPCIÓN

Jurassic Park está clasificado como una sala de dificultad difícil en TryHackMe, aunque la descripción dice que es de dificultad media. Si tiene experiencia en técnicas de inyección de SQL, esta sala debería resultarle bastante sencilla. Comenzamos enumerando la aplicación web y, finalmente, usamos las credenciales descubiertas para obtener acceso a través de SSH. Luego miramos alrededor del sistema de archivos para encontrar las banderas ocultas.

Las habilidades requeridas son conocimientos básicos de SQLi, sistemas de archivos Linux, enumeración de puertos y servicios. Las habilidades aprendidas son la manipulación de parámetros de aplicaciones web y la explotación de instalaciones de Linux mal configuradas.

COMENZAMOS

Comenzaremos con un escaneo de versiones con un script de los puertos principales en el sitio:

Tenemos un puerto SSH abierto en el puerto 22 y un servicio web Apache abierto en el puerto 80.

Naveguemos hacía la tienda online:

Aquí podemos comprar un paquete, seleccionaré el paquete bronce:

Lo primero que hay que notar aquí es el bloque de direcciones que le da a esta página un “? Id = 2”.

Voy a recorrer y cambiar el ?Id = de 0 a 5 y ver qué otras páginas aparecen.

  • ?id = 0: No se encontraron resultados
  • ?id = 1: Paquete Gold
  • ?id = 2: Paquete bronce
  • ?id = 3: Paquete básico
  • ?id = 4: No se encontraron resultados
  • ?id = 5: Paquete de desarrollo (interesante)

Tenemos un usuario llamado Dennis. También hay una nota que dice que no podemos usar ciertos caracteres, obviamente el carácter ‘se usa en SQLi.

Intentemos romper el SQL usando ?Id = 5 ‘o 1 = 1

Por lo tanto, no podemos usar el carácter ‘. Es por eso que mis pruebas iniciales con SQLMap no funcionaron. Así que intentemos con otro carácter especial que no esté bloqueado ‘*’.

Como puede ver, agregar ?Id =1* causa un error de SQL.

Primero intentemos averiguar cuántas columnas hay en la base de datos y ver si podemos realizar un exploit de unión.

Para hacer esto usamos la instrucción ‘ordenar por’ y aumentamos el número de columnas hasta que obtengamos un error. Entonces ?Id = 5 ordenar por 1, 2, 3… ..

Entonces nuestra base de datos tiene 5 columnas, conociendo esta información podemos usar el comando union para explotar la base de datos y recuperar información, pero primero necesitamos ver si alguna de las columnas es vulnerable, ahí es donde entra el comando union, ?Id =5 unión todos seleccionar 1,2,3…

Las columnas 2, 3, 4 y 5 parecen ser utilizables, ya que se muestran en la página sin agregar caracteres adicionales. Veamos cómo se llama la base de datos:

Con el nombre de la base de datos ahora podemos encontrar las tablas:

Tenemos dos tablas, users e items. Mirando la tabla de users, vemos dos columnas en ella:

Intenté obtener el nombre de usuario, pero me bloquearon como antes cuando intentaba usar el carácter ‘. Sin embargo, puedo obtener las contraseñas:

Ya tenemos una contraseña, pero ¿dónde la usamos? ¿Y cuál podría ser el nombre de usuario asociado?

OBTENER ACCESO

Por el escaneo de Nmap sabemos que hay ssh en el puerto 22. Desde el desarrollador en ?Id = 5 encontramos un posible usuario Dennis. Y de la tabla de usuarios encontramos una contraseña.

Usemos las credenciales que hemos descubierto e intentemos ingresar como dennis:

Excelente, podemos iniciar sesión como dennis.

Primero miremos en nuestro directorio actual. El uso de ls con el parámetro -la muestra todos los archivos, incluidos los ocultos:

FLAG 1

Hemos encontrado la bandera 1, vamos a capturarla y enviarla al sitio de THM:

También hay un archivo llamado test.sh, veamos eso:

Tenemos la ubicación de la bandera 5, pero no podemos llegar a ella hasta que seamos root.

FLAG 3

Sigamos buscando, otro archivo que vale la pena verificar es bash_history en caso de que no se haya borrado:

Excelente, allí encontramos la bandera 3.

FLAG 5

El uso de scp parece sospechoso, echemos un vistazo a los permisos de sudo que tiene dennis:

Un SCP. Comprobemos la variable SCP en GTFObin.

Copie la línea y escale el privilegio.

La bandera se encuentra dentro del directorio / root.

FLAG 2

Después de enviar esa bandera en el sitio web, debemos buscar la última, la bandera 2.

Hasta ahora solo hemos buscado en nuestro directorio actual, que es /home/dennis. Veamos si hay otros usuarios:

Es interesante ver el archivo .viminfo propiedad de root en el directorio de inicio de este usuario. Copiemos en nuestra máquina Kali usando scp como antes:

Ahora podemos echar un vistazo a su contenido. Al final del archivo largo vemos esto:

Tags:

No responses yet

Deja una respuesta

Tu dirección de correo electrónico no será publicada.