CTF CineHack Intermediate
URL Download CTF = https://drive.google.com/file/d/1G05W6zX8FRWNp7RSxnatz1goZTaZ-pi7/view?usp=sharing
Instalación
Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.
unzip cinehack.zipNos lo descomprimira y despues montamos la maquina de la siguiente forma.
bash auto_run.sh cinehack.tarInfo:
██████╗ ██╗ ██╗███╗ ██╗██████╗ ██████╗ ██╗
██╔══██╗██║ ██║████╗ ██║╚════██╗██╔══██╗██║
██████╔╝██║ █╗ ██║██╔██╗ ██║ █████╔╝██║ ██║██║
██╔═══╝ ██║███╗██║██║╚██╗██║ ╚═══██╗██║ ██║╚═╝
██║ ╚███╔███╔╝██║ ╚████║██████╔╝██████╔╝██╗
╚═╝ ╚══╝╚══╝ ╚═╝ ╚═══╝╚═════╝ ╚═════╝ ╚═╝
==
@+:@ @##@
@++:-----+@ @@#+:----:+#
#-+-----:+:---------:
*::-----++-----::::#
::------+:--------:
#-+------+:-::-----#@
*::+=@@#++-------::@
@+= @++::+#@@@#*#
#-@
*+#++@
+-:::+-@
:-:+:::+
@+::*::::
*::++-::*
=:--:-:++ @-#
#*:---:--++@ @@
@::-:--++*
@::-:++#
*++*
:: Plataforma de máquinas vulnerables ::
:: Desarrollado por Pwn3d! y Dockerlabs - creado por @d1se0 ::
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
█ FLAG{Pwn3d!_is_awesome!} █
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
[✔] bc ya está instalado.
[✔] Docker ya está instalado
[!] Limpiando previos contenedores e imágenes
[✔] Cargando la máquina virtual
[✔] Activando máquina virtual
[✔] Máquina activa. Dirección IP: 172.17.0.2
[!] Presiona Ctrl+C para limpiar y salirPor lo que cuando terminemos de hackearla, le damos a Ctrl+C y nos eliminara la maquina para que no se queden archivos basura.
Escaneo de puertos
Info:
Vemos que solo hay un puerto 80 y si bajamos un poco vemos lo que parece ser un dominio dentro de la pagina que podria corresponderse con un dominio que este sujeto a la pagina, por lo que harems lo siguiente:
Lo guardamos y ahora entramos con dicho dominio:
Vemos que nos carga una pagina como si fuera una cartelera de cine y la unica pelicula a la que podemos entrar es a la llamada El tiempo que tenemos, dentro del mismo podremos ver que podemos como reservar entradas, las cuales si le damos a reservar nos lleva a un reservation.php, vamos a ver que hace de forma intenta con la peticion de reserva capturandolo con BurpSuite.

Vemos que hay un parametro oculto llamado problem_url= el cual indica como una URL por defecto como si pudieramos hacer algo desde un servidor externo, por lo que vamos a probar a abrir un servidor de python3 con una shell.php que vamos a crear y añadirlo en ese parametro a ver que pasa.
shell.php
Abriremos un servidor de python3:
Y ahora en la pagina iremos a la siguiente URL ya que sabemos que parametro usar.
Si nos vamos a donde tenemos el servidor de python3 veremos que nos ha cogido el archivo:
Pero no tenemos ninguna carpeta de uploads/ ni nada parecido, por lo que vamos a probar hacer un fuzzing con un diccionario personalizado sobre el nombre y apellidos de los actores de la pelicula El tiempo que tenemos quedando de la siguiente forma:
Gobuster
dic.txt
Y haremos lo siguiente:
Info:
Vemos que nos encuentra uno llamado /andrewgarfield y si entramos en el:

Veremos que es donde esta subido el archivo que se descargo el problem_url= por lo que nos pondremos a la escucha:
Y pulsamos en el shell.php, si volvemos a la escucha veremos lo siguiente:
Sanitización de shell (TTY)
Escalate user boss
Antes de nada si vamos al /opt vemos el siguiente script:
Info:
Por lo que vemos cuando nos conectemos con el usuario boss puede ser que haya algo que ejecute este script y nos eche de la sesion, por lo que podemos intuir que puede haber algun crontab.
Si nos vamos a /var/spool/cron y listamos veremos lo siguiente:
Vemos que el usuario boss puede acceder a este directorio y dentro puede haber algo que nos interese.
Si hacemos sudo -l veremos lo siguiente:
Vemos que podemos ejecutar el binario php como el usuario boss por lo que haremos lo siguiente:
Y con esto seremos el usuario boss, por lo que leeremos la flag del usuario.
user.txt
Escalate Privileges
Si nos vamos donde dijimos antes, veremos que nos deja meternos en el directorio, cosa que es poco usual:
Si listamos veremos lo siguiente:
Vemos que podemos leer el archivo root:
Vemos que root.sh es un script y no un crontab por lo que vamos a ver que se esta ejecutando a nivel de sistema:
Info:
Por lo que vemos esta ejecutando el root.sh cada minuto, pero como bien hemos visto tambien esta ejecutando a la vez el /tmp/script.sh por lo que podremos salir con exit del usuario y crearlo con www-data para que no nos expulse.
Guardamos esto y le ponemos permisos de ejecuccion:
Y ahora tendremos que esperar 1 minuto a que se ejecute, una vez que se haya ejecutado el crontab, si listamos la bash:
Info:
Veremos que ha funcionado y ahora la bash tiene permisos de SUID, por lo que haremos lo siguiente:
Y con esto seremos root por lo que leeremos la flag de root:
root.txt
Last updated