CTF r00tless Hard
URL Download CTF = https://drive.google.com/file/d/19JeGAZUDswHKwCMeI_2qpqn6aZKDZa7V/view?usp=sharing
Instalación
Cuando obtenemos el .zip nos lo pasamos al entorno en el que vamos a empezar a hackear la maquina y haremos lo siguiente.
unzip r00tless.zipNos lo descomprimira y despues montamos la maquina de la siguiente forma.
bash auto_run.sh r00tless.tarInfo:
██████╗ ██╗ ██╗███╗ ██╗██████╗ ██████╗ ██╗
██╔══██╗██║ ██║████╗ ██║╚════██╗██╔══██╗██║
██████╔╝██║ █╗ ██║██╔██╗ ██║ █████╔╝██║ ██║██║
██╔═══╝ ██║███╗██║██║╚██╗██║ ╚═══██╗██║ ██║╚═╝
██║ ╚███╔███╔╝██║ ╚████║██████╔╝██████╔╝██╗
╚═╝ ╚══╝╚══╝ ╚═╝ ╚═══╝╚═════╝ ╚═════╝ ╚═╝
==
@+:@ @##@
@++:-----+@ @@#+:----:+#
#-+-----:+:---------:
*::-----++-----::::#
::------+:--------:
#-+------+:-::-----#@
*::+=@@#++-------::@
@+= @++::+#@@@#*#
#-@
*+#++@
+-:::+-@
:-:+:::+
@+::*::::
*::++-::*
=:--:-:++ @-#
#*:---:--++@ @@
@::-:--++*
@::-:++#
*++*
:: Plataforma de máquinas vulnerables ::
:: Desarrollado por Pwn3d! y Dockerlabs - creado por @d1se0 ::
█▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀▀█
█ FLAG{Pwn3d!_is_awesome!} █
█▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄▄█
[✔] bc ya está instalado.
[✔] Docker ya está instalado
[!] Limpiando previos contenedores e imágenes
[✔] Cargando la máquina virtual
[✔] Activando máquina virtual
[✔] Máquina activa. Dirección IP: 172.17.0.2
[!] Presiona Ctrl+C para limpiar y salirPor lo que cuando terminemos de hackearla, le damos a Ctrl+C y nos eliminara la maquina para que no se queden archivos basura.
Escaneo de puertos
Info:
Vemos que hay varios puertos, por lo que probaremos a enumerar el smb para ver que usuarios hay en el sistema y si podemos aprovechar algo.
Info:
No vemos que podamos hacer nada, ya que el usuario sambauser necesita contarseña, pero vemos otro llamado passsamba que de momento poco podemos hacer.
Por lo que iremos a la pagina que esta en el apache2.
Vemos que podemos subir archivos, pero no podemos hacer reverse shell ni nada parecido, por lo que haremos fuzzing a ver que encontramos.
Gobuster
Info:
Vemos que hay un /readme.txt, si leemos el .txt veremos lo siguiente.
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.
Una vez creadas las claves, haremos lo siguiente.
Ahora creamos el archivo authorized_keys con el contenido del id_rsa.pub.
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...)
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).
Una vez hecho esto ya estariamos dentro veremos un archivo llamado note.txt que dice lo siguiente.
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.
Metemos la contraseña sambaarribasiempre y veremos que estamos dentro, si listamos veremos lo siguiente.
Hay un archivo .zip que nos descargaremos.
Una vez descargado, nos saldremos del smb y lo intentaremos descomprimir, pero veremos que necesita contraseña, por lo que haremos lo siguiente.
zip2john
Info:
Una vez teniendo la contraseña, ahora si lo descomprimiremos.
unzip
Metemos la contraseña qwert.
Vemos que se nos descomprimio un archivo llamado secret.txt que su contenido es el siguiente.
Si decodificamos ese Base64 veremos que la contraseña del usuario root-false es.
Por lo que nos conectaremos mediante ssh.
SSH root-false
Metemos la contraseña obtenida y ya estaremos dentro, veremos un archico llamado message.txt que pondra lo siguiente.
Pero de momento no podremos hacer mucho con ello.
Escalate user less
Si vemos las IP's que tenemos con el siguiente comando.
Info:
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.
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.
Y veremos un login, si recordamos antes vimos un archivo .txt que mencionaba a un usuario llamado mario y una posible contraseña.
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.
Por lo que vemos puede ser una parte de la ruta de la URL, pondremos lo siguiente.
Y veremos 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.
script python3
generate_dic.py
Y lo ejecutamos.
Y ahora con ese diccionario, tiramos un hydra.
hydra
Info:
Vemos que sacamos las credenciales de less, por lo que haremos lo siguiente.
SSH user less
Metemos la contraseña obtenida y ya estariamos dentro, por lo que leeremos la flag.
user.txt
Escalate Privileges
Si hacemos sudo -l veremos lo siguiente.
Vemos que podemos ejecutar como root el binario chown por lo que haremos lo siguiente.
Ahora en nuestro host generamos una contraseña para implementarle a root en el archivo passwd de la siguiente forma.
Info:
Ese texto generado, lo tendremos que sustituir por la x donde esta el usuario root de la siguiente forma.
De estar asi:
Ha estar asi:
Guardamos el archivo y ahora haremos lo siguiente.
Ponemos la contraseña que generamos en mi caso 1234 y ya seremos root por lo que leeremos la flag.
root.txt
Last updated