Borderlands

Es una maquina de por si es catalogada como hard, por lo que tendremos que enumerar los servicios en la cual nos encontraremos con un sitio web que es vulnerable a inyección sql del cual tendremos que hacer uso para crear un archivo el cual nos servirá para obtener una shell, luego tendremos que enumerara el servidor en el cual estamos que es un contenedor y asi encontrar otros hosts o los otros routers que en la imagen nos indican. Para obtener el root del contenedor o al menos de otra red usaremos chisel y proxychains

20240130182343.png

Antes de iniciar la maquina nos dan una infraestructura a la que nos enfrentaremos

20240130182541.png

Enumeración

Iniciamos enumerando los puertos abiertos haciendo uso de la herramienta de nmap

Una vez teniendo los puertos abiertos, ahora enumeremos los servicios y versiones

Podemos observar que tenemos un directorio .git del cual podría interesarnos

20240130190226.png

Vamos a seguir enumerando los directorios del sitio web, con la herramienta gobuster

En el sitio web nos encontraremos con el siguiente contenido, el que nos interesa es un enlace de descarga de una aplicación móvil.

20240130184949.png

Reversing APK

Descargando el apk tenemos la siguiente aplicación. para poder realizar reviersing de la aplicación usaremos jadx y así podremos ver el código fuente de la aplicación.

Haciendo uso de jadx-gui podemos ver el código fuente de la aplicación.

20240206112247.png

Leyendo el código podemos encontrar con algo que podría interesarnos que es ecrypted_api_key que hace llamado a un recurso que contiene el api key para luego desencriptarlo.

20240206112229.png

Para encontrar el recurso descomprimiremos con la misma herramienta, esta vez no de la manera grafica

Ahora realizaremos una búsqueda recursiva de la palabra encrypted_api_key

Encontramos la api key, el cual la tendremos en cuenta.

Dumping .git

Para obtener todo el contenido de .git usaremos la herramienta de git dumperarrow-up-right, esta herramienta es muy util frente a repositorios y su uso es git-dumper http://domain

20240130193640.png

Obtenemos los archivos que se encuentran en el directorio .git

20240130194245.png

Revisamos el código de los archivos del directorio del .git que descargamos :

- api.php

Cifrado Vigenere

Teniendo el api key encriptada y el cipher podemos tener la key, esto haciendo uso del cifrado vigenere

20240206155627.png

Teniendo la C y A nos dará un C, luego si tenemos un B y N nos daría un resultado O, siguiendo así deberíamos encontrar la key

Como resultado tendríamos la key que es: CONTEXT

GIT

Ahora enumeraremos el github que nos descargamos, en primera tenemos el home.php

- home.php

Podemos ver que contiene una apikey que tendremos en cuenta.

20240205174951.png

Revisando un log de git, encontraremos que una parte del código fue eliminado

20240205174338.png

Para poder ver el contenido que se borro, iremos a esa versión en concreto y ver que es lo que se borro.

haciendo uso de git show mas el hash del commit podemos ver lo que se había borrado

20240205174416.png

Recordando de antes teníamos una ruta que es /api.php?documentid={}&apikey= el cual visitaremos en el sitio web

20240206160203.png

SQL Injection

Teniendo la api key y el id del documentid encontraremos algunos archivos

20240206160408.png

Intentando algunas cosas encontraremos que el sitio es vulnerable a sql injection

20240206160326.png

Ahora enumeraremos el sitio web para encontrar la base de datos, las tablas, las columnas para luego enumerar el contenido de estas con diversas payloadsarrow-up-right

Debemos tener en cuenta el siguiente código 20240207021316.png

Después de entender en código anterior, podemos concluir que podemos intentar un sqli to RCEarrow-up-right. Para ello usaremos la siguiente inyección para crear un archivo y usarlo para ejecutar comandos

Escalada de privilegios

app.ctx.ctf

Para automatizar el proceso de crear un archivo y obtener una shell, realice un script básico en Python el cual usare para obtener la Shell en la maquina victima.

Link de script sqlinjectionRCEarrow-up-right

20240207155403.png

Enumerando las interfaces de red obtendremos que tenemos os interfaces, las cuales tendremos que enumerar.

20240207185903.png
20240207163741.png

Teniendo las siguiente interfaces de red enumeraremos.

Para descarganos el binario de nmap a la maquina victima de nuestra maquina atacante podemos hacer uso de una función que es una alternativa a curl

Haciendo uso de del anterior podemos descargarnos, antes claro iniciando un servidor en nuestra maquina atacante con el que deseamos, yo en particular lo hice con python

Enumeración de host

Una vez descargado el binario de nmap, realizaremos la enumeracio de host los cuales estan conectados a las interfaces.

20240207190113.png

Encontramos una que es la 172.16.1.128 del cual tendremos que enumerar cada uno de los puertos abiertos que tenga.

Enumeraremos la los puertos, de los cuales tendremos abiertos son el 21,179,2681,2685

20240207190326.png

Pivoting

Ahora para realizar la explotación de los puertos tendremos que realizar un túnel desde nuestra maquina atacante y la maquina comprometida con el fin de tener alcance desde nuestra maquina atacante hasta el router1, esto lo haremos con la herramienta de chisel y proxychains

Iniciaremos en modo servidor chisel en nuestra maquina atacante.

Luego también iniciaremos chisel en la maquina victima con el siguiente comando.

Teniendo la dirección de túnel donde se redirige el túnel, agregaremos en un archivo de configuración que es /etc/proxychains.conf en la ultima linea un sock5 127.0.0.1:1080. Ahora que lo tenemos configurado podremos escanear y tener conectividad con el router1

Ahora usaremos proxychains para enumerar con nmap.

20240208121627.png

Podemos observar que podemos llegar al router1 escaneando el puerto 21. Ahora enumeraremos las versiones y servicios del puerto 21

20240208121725.png

Enumerando nos encontramos frente a una versión desactualizada la cual podría tener alguna vulnerabilidad.

router1.ctx.ctf

Buscando encontramos que es vulnerable el vsftpd 2.3.4 Exploitarrow-up-right por lo que haciendo uso de proxychains podemos obtener una shell

20240208121826.png

Obtenemos una shell dentro de la red. Ahora enumeraremos la maquina victima

Enumerando las interfaces de red de la maquina podemos observar los siguiente:

20240208122318.png

También tenemos las siguientes redes

Haciendo un escaneo en las redes que se muestran anteriormente tenemos dos router mas con los distintos puertos abiertos.

Router2

20240208160200.png

Router3

20240208160243.png

Teniendo la anterior información de los routers tendremos la siguiente infraestructura

20240208195147.png

Investigando un poco sobre los puertos abiertos que tiene cada uno de los routers encontramos algo interesante que es hijacking attackarrow-up-right

Vamos a leer la informacion del archivo /etc/quagga/bgpd.conf

Segun el blog que revisamos anteriormente vemos que el router esta utilizando BGP con el numero de sistema autonomo 60001. El cual participara en el intercambio de información de enrutamiento de BGP con los otros routers.

20240208192925.png

También podemos observar que los otros routers están configurados en el 60002 y 60003 por los cuales se están comunicando.

Para poder interceptar los paquetes que viajen de los routers tendremos que realizar algunas configuraciones en el router 1. Ingresaremos al router 1 con el comando vtysh

20240208203218.png

Ejecutaremos show bgp neighbors para ver la configuración de BGP, en donde podemos observar lo antes mencionado del numero de sistema autónomo en donde están configurados los routers

20240208194742.png
20240208194828.png

Teniendo en cuenta la información anterior, ahora configuraremos el router para que haga de intermediario y así interceptar la información de los routers.

20240208204812.png

Ahora usaremos tcpdump y debemos interceptar la información que viaja de los routers y nuestra flag. :P

Last updated