CTF Gitea Intermediate

URL Download CTF = https://drive.google.com/file/d/1srO6rDx0jJJOQ0Bd5Vzub2WQsvyNOVTf/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 gitea.zip

Nos lo descomprimira y despues montamos la maquina de la siguiente forma.

bash auto_run.sh gitea.tar

Info:

██████╗ ██╗    ██╗███╗   ██╗██████╗ ██████╗ ██╗
██╔══██╗██║    ██║████╗  ██║╚════██╗██╔══██╗██║
██████╔╝██║ █╗ ██║██╔██╗ ██║ █████╔╝██║  ██║██║
██╔═══╝ ██║███╗██║██║╚██╗██║ ╚═══██╗██║  ██║╚═╝
██║     ╚███╔███╔╝██║ ╚████║██████╔╝██████╔╝██╗
╚═╝      ╚══╝╚══╝ ╚═╝  ╚═══╝╚═════╝ ╚═════╝ ╚═╝

          ==                           
         @+:@ @##@                     
          @++:-----+@ @@#+:----:+#     
           #-+-----:+:---------:       
            *::-----++-----::::#       
             ::------+:--------:       
             #-+------+:-::-----#@     
              *::+=@@#++-------::@     
              @+=     @++::+#@@@#*#    
               #-@                     
                *+#++@                 
               +-:::+-@                
               :-:+:::+                
              @+::*::::                
             *::++-::*                 
          =:--:-:++ @-#                
      #*:---:--++@   @@                
      @::-:--++*                       
       @::-:++#                        
         *++*                          

 :: 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 salir

Por 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 hay 3 puertos abiertos, si entramos en el puerto 80 de normal veremos una pagina normal y corriente, como vemos que la maquina se llama gitea y esta alojado en Dockerlabs podemos deducir un dominio llamado gitea.dl, vamos a probar si existe.

Lo guardamos y probaremos a entrar desde el dominio, veremos como un login y en los campos vemos como unas credenciales por defecto, pero si las probamos no va a funcionar:

Esas credenciales igualmente nos la apuntaremos:

Si realizamos un escaneo de subdominios para ver si encontramos algun subdominio veremos lo siguiente:

FFUF

Info:

Vemos que nos descubrio el subdominio dev, por lo que lo añadiremos al hosts.

Lo guardamos y nos metemos dentro con dicho subdominio para ver que vemos.

No veremos gran cosa, vamos a realizar un poco de fuzzing.

Gobuster

Info:

Veremos varias cosas, pero entre ellas una interesante llamada /search que si entramos en el directorio, veremos lo siguiente:

Vemos una especie de barra de busqueda con un ejemplo puesto en el mismo que pone s3cr3tdir, si lo probamos en la URL no veremos nada, pero si lo utilizamos como subdominio veremos que si funciona:

Lo guardamos y ahora nos metemos con dicho subdominio para ver que encontramos, pero no veremos nada interesante, aun haciendo fuzzing tampoco veremos nada, pero si realizar una busqueda de subdominios veremos lo siguiente:

Info:

Veremos que nos saca varios subdominios pero todos iguales, si probamos el de admin veremos que funciona:

Lo guardamos y si entramos en dicho subdominio veremos lo siguiente:

Vemos que hay un software llamado gitea que es parecido a github, vamos a logearnos en gitea y explorar los repositorios que puedan estar subidos.

Una vez que nos hayamos registrado, nos vamos a la opcion Explore -> Repositories y veremos esto:

Vemos varios, si entramos al llamado myapp y entramos en el codigo de app.py veremos esto:

Vemos que hay una vulnerabilidad en la siguiente linea:

Vemos que podremos realizar un Path Traversal en la aplicacion principal, que esta en el dominio gitea.dl por lo que vemos en el codigo, por lo que si hacemos lo siguiente:

Info:

Veremos que nos muestra de forma correcta el passwd por lo que estamos aprovechando bien la vulnerabilidad.

Si seguimos investigando en los repositorios veremos el siguiente repositorio, llamado giteaInfo en el archivo gitea_composed.xml.

Vemos que hay dos rutas que son las siguientes:

Por lo que vamos a probar a ver ese archivo:

Pero no nos dejara, despues nos indica que hay un archivo de informacion en el /opt si probamos a ver el archivo de antes, pero en la ruta de /opt veremos esto:

Info:

Vemos bastantes usuarios con contraseñas, pero los usuarios no parecen reales, pero las contraseñas si, por lo que vamos a proba a realizar fuerza bruta con el usuario designer y el listado de contraseñas que hemos obtenido:

pass.txt

Escalate user designer

Hydra

Info:

Vemos que sacamos las credenciales del usuario designer, por lo que nos conectaremos mediante SSH.

SSH

Metemos como contraseña SuperSecurePassword123 y veremos que estamos dentro, por lo que leeremos la flag de usuario.

user.txt

Escalate Privileges

Si vemos los puertos que estan abiertos en la maquina, veremos lo siguiente:

Info:

Vemos que esta el puerto 3306 abierto de forma local que se corresponde con el de MySQL, si recordamos encontramos unas credenciales en el dominio gitea.dl que eran lo siguiente:

Vamos a probar si podemos entrar con dichas credenciales:

Escalada con UDF (User-Defined Functions)

Vemos que si nos deja, vamos a probar a realizar una tecnica para aprovechar una vulnerabilidad llamada Escalada con UDF (User-Defined Functions), por lo que vamos a probar a realizar una tecnica para aprovechar eso en tal caso de que lo tuviera.

Metemos ese codigo para que cuando llamemos a la funcion podamos ejecutar comandos.

Vamos a compilarlo de la siguiente forma:

Podemos mover el binario a la carpeta plugins de MySQL ya que tiene los siguientes permisos:

Info:

Ahora vamos a cargar la funcion de lo que hemos creado de la siguiente forma:

Vamos a realizar lo siguiente:

Info:

Ahora vamos a cargar la funcion:

Info:

Ahora podremos llamar a esta funcion que hemos creado como sys_exec y ejecutar cualquier comando como root, por lo que haremos lo siguiente:

Info:

Vemos que ha funcionado por que nos salio un 0 y un 1 seria un error, por lo que si ahora salimos y listamos los permisos de la bash veremos lo siguiente:

Info:

Vemos que ha funcionado, por lo que haremos lo siguiente:

Info:

Con esto veremos que ya seremos root, por lo que leeremos la flag de root:

root.txt

Last updated