R00tless
Máquina "r00tless" de DockerLabs
Autor: d1se0
Dificultad: Difícil

RECONOCIMIENTO
Comenzamos haciendo un escaneo de nmap:
Vemos el puerto 22, 80, 139 y 445 abiertos corriendo lo siguiente:
22: OpenSSH
80: Apache httpd
139 y 445: Samba
Sabiendo esto iremos a la web.
Puerto 80:

Por lo que parece podemos subir archivos, pero antes de ponernos a probar eso mejor hacemos un poco de fuzzing para ver si hay otro archivo.
Como vemos, hay un "readme.txt" que si entramos desde el navegador tiene esto:
Esto significa que si realmente se sube en ".ssh", podemos subir nuestro "id_rsa.pub" con el nombre "authorized_keys" y conectarnos sin necesidad de clave, el problema es que necesitamos un usuario, por lo que podriamos probar en ver si encontramos algun usuario en el samba y ver si nos sirve.
Luego de ejecutarlo veremos muchas cosas, pero lo mas importante es esta línea:
Estos son los usuarios que hemos encontrado, por lo que ahora si subiremos el "id_rsa" como "authorized_keys" y luego nos conectaremos.
INTRUSION
Para generar una clave "id_rsa" (en caso de que no la tengamos), debemos ejecutar en nuestra máquina atacante el comando ssh-keygen. Una vez ejecutado nos generará un archivo llamado "id_rsa" y "id_rsa.pub" en nuestro directorio home y metido en una carpeta llamada .ssh. Ahora que ya tenemos la clave simplemente la copiamos a algún lugar "comodo" para poder subirlo, lo haremos de la siguiente manera:
Una vez hecho eso, subimos el archivo "authorized_keys" en la página. Ahora vamos al directorio .ssh donde se encuentra el archivo "id_rsa" y le damos permisos de ejecución ejecutando chmod 600 id_rsa y vamos probando cada uno de los usuarios encontrados de la siguiente manera:
Luego de probar, el usuario que nos sirve es "passsamba"
ESCALADA DE PRIVILEGIOS
Passsamba
Si ejecutamos ls podremos ver una nota que contiene lo siguiente:
Al parecer es una contraseña, por lo que podemos ejecutar su con los demás usuarios y ver si alguno tiene esa contraseña.
Luego de probar, el usuario que la tiene es "sambauser"
Sambauser
Por lo que vemos el usuario "sambauser" no tiene nada interesante, por lo que podria significar que es la clave para el smb, sabiendo eso simplemente vamos a nuestra máquina atacante y ejecutamos lo siguiente:
Como vemos está el directorio "read_only_share" al cual tenemos acceso de lectura, por lo que ahora usaremos smbclient para conectarnos y ver que lo que hay dentro:
cuando se nos pida la contraseña la ponemos y ya podemos ejecutar ls. Al hacerlo vemos lo siguiente:
por lo que nos lo guardamos ejecutando get secret.zip. Una vez hecho eso nos salimos e intentamos descomprimir el archivo, pero al hacerlo nos pide una password, por lo que podemos acudir a zip2john para extraer el hash del zip y luego intentar crackear la contraseña con john. Para hacerlo simplemente ejecutamos en nuestra máquina local zip2john secret.zip > hash, esto nos guardará el hash en un archivo llamado "hash", luego simplemente ejecutamos john --wordlist=<wordlist> hash y listo.
Como vemos el zip tiene de contraseña "qwert" por lo que lo descomprimimos con unzip secret.zip y metemos la contraseña. Una vez descomprimido nos dejará un "secret.txt" que si lo leemos tiene la contraseña del usuario "root-false" pero en base64, que si lo pasamos a texto vemos que la contraseña es "passwordbadsecureultra"
Root-false
Una vez escalamos a este usuario, veremos que hay un mensaje que dice lo siguiente:
al parecer pueden ser credenciales, pero no tenemos en donde ponerlas. Luego de buscar con netstat e ifconfig pero no encontrar nada, se me ocurre ejecutar ip a y veo esto:
Como vemos hay una ip "10.10.11.5", que si le hacemos un curl -v 10.10.11.5 desde la misma máquina se ve que es un panel de inicio de sesión y además está en el puerto 80, ahora vamos a nuestra máquina atacante y ejecutamos lo siguiente:
una vez hecho eso, al ir a el navegador en nuestra máquina atacante y entrar a "http://127.0.0.1" veremos un panel de inicio de sesión, ponemos las credenciales "mario:pinguinodemarioelmejor" y logramos logearnos. Como la página luego de logearnos no tiene nada que nos sirva, podemos mirar el codigo fuente, y ahi si vemos algo a la derecha:
Al parecer es un archivo, por lo que podemos pegarlo en la url: 
Como vemos es un "cuento" creado por "less", que si recordamos es un usuario de la máquina, por lo que en alguna parte puede estar la contraseña.
Para conseguir la contraseña podemos guardarnos el texto usando curl, para eso vamos a la máquina victima y ejecutamos lo siguiente:
Esto nos dejará un archivo llamado "text" con el texto, por lo que ahora podemos separar palabra por palabra el texto para luego usar el script Sudo_BruteForce con el diccionario que consigamos, para hacerlo simplemente ejecutamos lo siguiente:
si revisamos el nuevo archivo llamado "pass", veremos que todo el texto está separado por palabras, ahora simplemente copiamos el script ".sh" del repositorio y nos creamos uno en la máquina victima, le damos permisos con chmod +x <nombre>.sh y luego ponemos ./<nombre>.sh less pass; luego de esperar un rato veremos este mensaje:

Ahora ejecutamos su less y ponemos la contraseña.
less
Si ejecutamos un sudo -l veremos que podemos ejecutar chown como root, por lo que ejecutaremos esto:
esto hará que el archivo sea de nuestra propiedad, por lo que lo modificamos con nano y borramos la x de root, seria esta:
deberia quedar así:
guardamos y ahora ejecutamos su y listo, ya seremos root.

Gracias por leer.
Última actualización