HackMyVM Icarus — Linux


Para poder hacer uso de esta máquina primero debemos descargar el archivo y así poder desplegar el laboratorio.
Descargamos el archivo de la página https://hackmyvm.eu/machines/
Al momento de descargar esta máquina y descomprimir el archivo, en este caso observamos un archivo.
Para desplegar el laboratorio usaremos nuestro hipervisor favorito e iniciamos la máquina. En caso de no observar la IP de la máquina podemos emplear arp-scan
para ver la dirección IP en nuestra red que sería la 192.168.0.7
.
Realizamos un ping a la dirección IP y podemos validar que tenemos alcance.
Empezamos con un escaneo de puertos y podemos ver que solo tenemos el puerto 22 y 80.
Realizamos un escaneo más profundo y tenemos que la página web en el puerto 80 puede tratarse de un login.
Vamos al navegador e ingresamos la dirección IP y podemos ver que si es un login, pero es muy simple el diseño.
Probamos unas inyecciones SQL y credenciales comunes, pero no vemos nada. Intentamos realizando una búsqueda de subdominios y en las respuestas notamos algo raro.
Descargamos el archivo más amplio a
y podemos ver lo siguiente.
Descargamos otros archivos y notamos que son diferentes los caracteres que tienen.
Con esto en mente, tratamos de ver el contenido del directorio al que corresponde el contenido de cada renglón del archivo, creamos un script para automatizarlo y al ejecutarlo vemos que se trataba de un id_rsa
.
Ya que no tenemos ninguna pista de algún usuario, probamos con el nombre de la máquina y vemos que nos establece conexión.
Realizamos un sudo -l
donde vemos que tenemos todos los permisos de id
así también los grupos que pertenecemos. Así también tenemos el env_keep+=LD_PRELOAD
.
Revisando permisos SUID y Capabilities vemos que no tenemos nada interesante.
Antes de continuar debemos tener en cuanta que LD_PRELOAD
es una función que permite que cualquier programa use bibliotecas compartidas. Esta publicación de blog le dará una idea de las capacidades de LD_PRELOAD
. Si la opción env_keep
está habilitada, podemos generar una biblioteca compartida que se cargará y ejecutará antes de ejecutar el programa. Tenga en cuenta que la opción LD_PRELOAD
se ignorará si la ID
de usuario real es diferente de la ID
de usuario efectiva.
Realizamos una prueba de ejecución y podemos ver que tenemos la ejecución como root
.
Probamos revisando si tenemos gcc
, pero no es el caso.
Ya que no contamos con gcc
, compilaremos el archivo en nuestra máquina.
Compilamos el archivo y luego de ello iniciamos un servidor.
Descargamos el archivo en una carpeta temporal.
Ejecutamos con el LD_PRELOAD
y tenemos acceso a root
. De esta manera culminando esta máquina.
Subscribe to my newsletter
Read articles from Gm4tsy directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
