Cubrimos el desafío boot2root Atenea de TryHackMe. Escaneamos la máquina con Nmap y descubrimos el servidor SMB del cual extrajimos una nota que nos dirigía a un directorio en el servidor web donde descubrimos una herramienta de ping ejecutándose. Usamos la sustitución de comandos para inyectar un caparazón de enlace y conseguir el primer punto de apoyo. Descubrimos un script de respaldo que se ejecuta periódicamente como otro usuario. Modificamos el script para ejecutar shell inverso y abrimos otra sesión como usuario Athena. Tras la enumeración, descubrimos que el usuario Athena puede cargar módulos del kernel como sudo usando insmod sin necesidad de una contraseña de root. Descargamos el módulo kernal “venom.ko” y usamos Ghidra para realizar ingeniería inversa en el binario. Descubrimos que es un rootkit y después del análisis del código pudimos interactuar con el módulo para llamar a una función que aumentaba los privilegios de Athena a Root.

Obtener notas OSCP

Transcripción del vídeo
Lo primero que hacemos todo el tiempo es el escaneo de Nmap, como puedes ver aquí. Deshabilité el ping a la máquina porque a veces la máquina no responde a las solicitudes de ping o a veces hay filtros que bloquean el ping. Podemos ver que tenemos dos puertos abiertos, 22 y 80. Entonces esta es la página principal. Son solo lecturas y vas a acerca de, no hay nada aquí. La página de contacto es la misma. Si intentas utilizar la investigación de directorio usando gobuster o dirbuster y no encontrarás nada de importancia. Entonces nos dirigimos a. El servidor SMB Un servidor para compartir archivos que usa SMB, por lo que interactuamos con el recurso compartido usando este comando.
Obviamente podemos iniciar sesión sin contraseña. Ingrese sin contraseña o en blanco y podrá iniciar sesión como usuario anónimo.
Vemos dos acciones públicas y el IPC. Evidentemente el que está muy interesado es la acción pública. Y proporcionamos el nombre de la acción. Proporcionamos una contraseña en blanco e iniciamos sesión correctamente en el recurso compartido.
Así que aquí, una vez que iniciamos sesión, el mensaje cambia desde el mensaje de la máquina o el mensaje de mi máquina al servidor SMB, porque ahora inicié sesión en el servidor. Ahora puedo interactuar con el servidor SMB. Entonces uso LS para enumerar los archivos. Y podemos ver. Un archivo de texto lo recuperamos usando el comando get seguido de la definición. Entonces mostramos el contenido del archivo.
Y esta es la nota aquí administrador.
Me gustaría informarles que se está desarrollando un nuevo sistema de ping. Y dejé la solicitud correspondiente.
En una ruta específica, a la que se puede acceder a través de la siguiente dirección.
Eso es lo que ves cuando tomas esta dirección y accedes a ella a través del navegador. Esta es una herramienta de ping sencilla. No se ha implementado el comando ping usando la línea de comando usando las Aplicaciones, así que básicamente, vayamos aquí e interactuemos con él. Entonces uno a siete cero cero uno. Y ahora toca El Ping.
Si vuelves. y pruebe algunos métodos de inyección de comandos, como el encadenamiento de comandos, para que los analistas de punto y coma envíen y el intento sea bloqueado, intento de piratería, así que aquí el
Parece que el carácter está filtrado si intentamos con el signo comercial y enviamos nuevamente el intento de pirateo para que haya un filtro.
Eso descarta todos los caracteres prohibidos utilizados en la inyección de comandos o incluso en shells inversos. Entonces, si estos caracteres se filtran, significa que ni siquiera se pueden usar shells inversos.
¿Cuál es la solución aquí? La solución es utilizar la sustitución de comandos. Les expliqué la sustitución común en videos anteriores. Puedes volver a ellos específicamente en este vídeo.
Omitir filtros SQL mediante sustitución de comandos
Fue una manifestación en juegos overthewire CTF Natas nivel 16. Muy bien, entonces usaremos la sustitución de comandos aquí.
Como puedes ver lo que hice. Usé la dirección IP. Esta es la entrada que la aplicación espera que la IP haga ping. Ese es el motivo porque -C1 es una opción. Podemos usarlo en el comando ping. Entonces aquí enviamos un paquete y comienza la sustitución de comentarios. Entonces, la sustitución de coma comienza con el signo $ y entre dos paréntesis, proporcionamos en el comando que nos gustaría ejecutar, ya que los caracteres como el ampersand, la tubería y el punto y coma están bloqueados o filtrados, debemos usar algo diferente.
Usamos un shell de enlace, el shell de enlace es al revés, es lo opuesto al shell inverso. Hacemos que el cliente o hacemos que la máquina se conecte nuevamente con nosotros.
En bind shell nos conectamos a la máquina, lo que significa que la máquina ahora actuará como oyente. Entonces NC – LP cuatro cinco cuatro cinco el puerto y quiero que la máquina escuche una vez que se reciba la conexión. Ejecutaré /bin/bash. entonces hacemos esto como puede ver ahora que está girando indicando que el oyente se está ejecutando ahora, así que vaya a mi máquina, este es el shell de la máquina.
Y como pueden ver, me conecto con la máquina usando este comando. Así es como funciona bind shell.
Y como pueden ver, muchachos, puedo conectarme y obtener la primera retención, por lo que soy wwdata, que es el usuario del servidor web Apache. Subí pspy64 para enumerar los procesos y cronjobs actuales.
Notamos un patrón con un script de respaldo. Entonces, este script de respaldo se ejecuta a intervalos regulares mediante el usuario UID 1001.
Entonces, Athena es el usuario cuyo uid es 1001. Esto significa que el usuario Athena ejecuta el script periódicamente. Navegamos hasta el directorio que almacena la copia de seguridad del recurso compartido del usuario del script.
plus -la usuario comparte copia de seguridad y aquí vemos el script de copia de seguridad. Sorprendentemente, el usuario actual www-data es el propietario del script, lo que significa que podemos modificarlo. ¿Cuál es el propósito de modificar el script, ya que Athena ejecuta este script de forma regular y, dado que todavía tenemos un usuario www-data con pocos privilegios, nos gustaría aumentar los privilegios, lo que significa que queremos pasar de www? -datos a Atenea.

Dado que el script se ejecuta como Athena. Significa que si podemos modificar el contenido del script y poner un shell inverso cuando el script se ejecute nuevamente. Va a ejecutar el shell inverso. El usuario Athena puede ejecutar el comando insmod como sudo sin la necesidad de proporcionar una contraseña de root, por lo que descargamos el módulo venom.ko a mi máquina para realizar ingeniería inversa usando Ghidra.

Podemos ver primero las funciones y tenemos inicializada la diamorfina. La diamorfina es un rootkit. ¿Cómo sabemos que esto es un rootkit? Usamos Google.
Entonces esta es la página principal de diamorfina. Según la descripción, es un rootkit LKM para kernels de Linux. Y aquí están las instrucciones de cómo instalarlo y desbloquearlo, como puedes ver aquí, el modelo comienza invisible. Para eliminarlo es necesario hacerlo visible.
Esa es la idea de un rootkit que es malicioso o malware que se oculta de los procesos o módulos. Entonces, incluso si enumera los procesos o intentamos encontrar los módulos en ejecución actuales, el rootkit no aparecerá. Vale, porque es un rootkit. Y los rootkits utilizan el vaciado y la inyección de procesos para ocultarse de los ojos de los investigadores. Entonces este comando es muy importante porque revelará el módulo.
matar -63 0
De manera similar, de acuerdo con el código y la función hacked_kill y Give_root, debemos ejecutar el siguiente comando para escalar privilegios.
matar -75 0
Respuestas de la habitación
¿Qué es la bandera de usuario?
¿Qué es la bandera raíz?

Tutorial en vídeo

Acerca del Autor

Creo notas de ciberseguridad, notas de marketing digital y cursos online. También brindo consultoría de marketing digital que incluye, entre otros, SEO, Google y meta anuncios y administración de CRM.

Ver Artículos