Bitlab corre GitLab, encontramos credenciales en codigo ofuscado de JavaScript para obtener acceso modificamos un repositorio. Ralizar un query a la base de datos Postgres nos permitio obtener credenciales para el movimiento lateral. Ollydbg nos permitio encontrar credenciales dentro de un ejecutable para escalar privilegios.
Informacion de la Maquina
Nombre | Bitlab |
---|---|
OS | Linux |
Puntos | 30 |
Dificultad | Media |
IP | 10.10.10.114 |
Maker | |
|
MASSCAN & NMAP
Escaneo de puerto tcp/udp, en el cual nos muestra el puerto http (80) y el puerto de ssh (22) abierto.
|
|
HTTP
Dentro del servicio de http nos muestra un panel de inicio de sesion de lo que parece gitlab.
Robots.txt
Dentro del archivo robots.txt encontramos diferentes rutas en las cuales la mayoria nos redirige a /users/sign_in
, en la unica en la que podemos navegar es en /explore
pero en esta ruta no encontramos nada interesante.
Al visitar distintas rutas dentro de esta pagina encontramos que en /help
hay un archivo de html que al visitarlo contiene direcciones hacia otra pagina, menos la ultima que contiene codigo javascript codificado.
Bookmarks.html
Codigo javascript:
|
|
Codigo decodificado:
|
|
GitLab Login
Utilizamos las credenciales clave:11des0081x para iniciar sesion y vemos que hay diferentes proyectos dentro de gitlab.
SHELL - Gitlab / Profile
Dentro de los repositorios encontramos uno que tiene como nombre Profile, dentro de este repositorio se encuentra un archivo php (index.php) en el cual podemos ver codigo que pertenece a la pagina /profile/
.
index.php
/profile
Realizamos un cambio dentro del codigo de index.php y realizamos un merge para intentar modificar la pagina /profile.
index.php
merge
Podemos observar que en la pagina de profile se encuentra nuestro codigo con el texto que insertamos.
Ahora que sabemos que podemos modificar codigo dentro de la pagina index, vamos a intentar crear un archivo en el repositorio con una shell inversa.
hello.php
netcat
Obtenemos una shell como usuario www-data.
Snippet - Postgres
Dentro de gitlab tambien encontramos un snippet que contiene nombre, usuario y contraseña para una base de datos en postgres.
Codigo:
|
|
Utilizamos la porcion de codigo para ejecutarlo dentro de la maquina con php, agregando una porcion de codigo para obtener el resultado del query de la tabla profiles.
|
|
Codigo ejecutado:
Al ejecutar el codigo nos devuelve un usuario y contraseña, la contraseña codificada en base64.
Credenciales:
clave:c3NoLXN0cjBuZy1wQHNz==
clave:ssh-str0ng-p@ss
SHELL - Usuario clave
Actualizamos nuestra shell al intentar ingresar con la contraseña decodificada no la aceptó, utilizamos la codificada y obtuvimos shell como usuario clave.
Y Nuestra flag user.txt.
RE - RemoteConnection.exe
Dentro de la carpeta principal del usuario clave encontramos un archivo exe, trasladamos el archivo a nuestra maquina local para poder analizar el archivo.
Utilizamos ollydbg en su version 2.01 agregamos nuestro ejecutable en la interfaz de olly.
Al correr nuestro ejecutable nos muestra un mensaje en la ventana de ejecucion del archivo (Acceso Denegado).
Buscamos el mensaje que nos muestra en la ventana haciendo click dentro de la ventana Search for > All References Strings
.
Encontramos varios mensajes (strings) vemos una string que es distinta a las demas colocamos un breakpoint en el string y volvemos a ejecutar y presionar F8.
Vemos nuestro breakpoint.
Vemos la conexion con el usuario root hacia la maquina de bitlab con la contraseña.
Credenciales:
-ssh root@gitlab.htb -pw Qf7]8YSV.wDNF*[7d?j&eD4^"
root:Qf7]8YSV.wDNF*[7d?j&eD4^"
Utilizamos las credenciales y obtenemos una shell con el usuario root y nuestra flag root.txt.