Friendly 2
El escaneo de puertos con NMAP muestra abiertos solo el 22 y 80
La web no presenta ninguna de utilidad, pero haciendo Fuzzing se encuentran 2 directorios.
Al comprobar el directorio ‘/tools’, lleva a otra página web estática. En este caso, un comentario en el código fuente menciona un parámetro y un valor para acceder a una imagen
Modificando el valor del parámetro para apuntar contra un archivo interno del equipo se termina ante un Local File Inclusion (LFI).
Habiendo visto los usuarios del sistema y teniendo el SSH abierto, se accede al id_rsa con éxito
Para acceder por SSH usándolo es necesario extraer la clave. Para ello primeramente se hace uso de la utilidad ssh2john para extraer el hash que luego se podrá crackear con John the Ripper.
Con todos los datos necesarios se puede acceder por SSH.
Una vez dentro se encuentra la flag de user.
Se listan las capacidades que se poseen con Sudo -L y se observa que se tienen privilegios elevados sobre cierto script.
El script básicamente toma un string y lo codifica. Se observa que se usan expresiones regulares sin indicar su ruta absoluta, por lo que se puede hacer un Path y Library Hijacking.
A continuación se cambia de ubicación al directorio tmp y se crea un fichero llamado grep cuyo contenido asigne permisos SUID a la bash. Además se le debe asignar permisos de ejecución al propio script.
Para que funcione, hay que tener en cuenta que si se modifica el valor de la variable Path como el usuario gh0st, el usuario root que es quien ejecuta el script no tendrá su Path modificado. Por lo que tanto la modificación del contenido de la variable para incluir la ruta actual como la ejecución del script security.sh deben realizarse en el mismo comando.
Una vez realizado ya se podrá lanzar una bash como el usuario root.
Inicialmente parece que la flag de superusuario aparece en el directorio /root, pero un mensaje en este archivo indica que no.
La pista indica acerca de 3 puntos, algo como un directorio oculto. Este aparece en la raíz del sistema.
Dentro existe un fichero txt con un string, lo que hace recordar el script anterior de codificación.
Existen 2 formas de obtener esta flag.
La primera consiste en pasar la cadena por Cyberchef con un cifrado ROT13
La segunda es pasando el string al script. Aunque para el paso 2 hay que modificar el script eliminando las 2 funciones, sobre todo la que restringe el tamaño, porque no acepta strings de más de 20 caracteres.
