Driftingblues3 HackMyVM (Easy- Linux)

Escaneo de puertos

nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn <IP>
nmap -sCV -p<PORTS> <IP>

Info:

Starting Nmap 7.94SVN ( https://nmap.org ) at 2025-04-10 11:50 EDT
Nmap scan report for 192.168.28.18
Host is up (0.0011s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey: 
|   2048 6a:fe:d6:17:23:cb:90:79:2b:b1:2d:37:53:97:46:58 (RSA)
|   256 5b:c4:68:d1:89:59:d7:48:b0:96:f3:11:87:1c:08:ac (ECDSA)
|_  256 61:39:66:88:1d:8f:f1:d0:40:61:1e:99:c5:1a:1f:f4 (ED25519)
80/tcp open  http    Apache httpd 2.4.38 ((Debian))
|_http-title: Site doesn't have a title (text/html).
| http-robots.txt: 1 disallowed entry 
|_/eventadmins
|_http-server-header: Apache/2.4.38 (Debian)
MAC Address: 08:00:27:0E:A1:B3 (Oracle VirtualBox virtual NIC)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 7.42 seconds

Veremos que hay una pagina web alojada en el puerto 80 que si entramos veremos una pagina normal, por lo que vamos a intentar entrar al robots.txt a ver que nos encontramos.

Info:

Veremos que hay un directorio llamado /eventadmins que si entramos dentro de el veremos esto otro:

Vemos lo que parece ser un archivo HTML en el que si probamos a entrar a el veremos esto otro:

Info:

Si inspeccionamos la pagina veremos esta linea bastante interesante:

Veremos que esta codificado en Base64 que si lo decodificamos veremos esto:

Info:

Veremos que hay otro mensaje codificado de nuevo, por lo que lo decodificaremos de la siguiente forma:

Info:

Vemos lo que parece ser otro archivo en la pagina web, vamos a probar a meternos de esta forma:

Info:

Vemos que nos esta mostrando de forma repetitiva que se esta abriendo una sesion de root, por lo que vamos a probar a intentar injectar algun comando para ver si se muestra de forma ejecutada.

Vamos a realizar un LOG POISONING mediante SSH ya que vemos que se esta realizando una conexion por SSH y cuando intentamos inciciar sesion por SSH se muestra el nombre de usuario, por lo que vamos a intentar injectar comandos mediante el nombre de usuario:

Info:

Ahora echo esto tendremos que enviar la siguiente peticion para que se cargue dicho comando pero con el parametro enviado:

Info:

Veremos que ha funcionado, por lo que vamos a probar a enviarnos una reverse shell de la siguiente forma:

Volvamos a enviar este comando:

Y enviamos este payload de esta forma codificada en URL:

Pero antes de enviar eso por la URL nos pondremos a la escucha para obtener la shell:

Y si enviamos el payload, volveremos a donde tenemos la escucha veremos lo siguiente:

Veremos que ha funcionado, por lo que tendremos que sanitizar la shell:

Sanitización de shell (TTY)

Escalate user robertj

Si vamos a la /home y listamos en cuales podremos entrar veremos lo siguiente:

Vemos que podemos entrar en la carpeta de la /home del usuario robertj y si listamos dentro veremos lo siguiente:

Vemos que tambien podemos entrar en el .ssh de dicho usuario, por lo que podremos aprovechar esto para meter nuestra clave PEM de nuestro host y poder conectarnos por SSH sin necesidad de ingresar la contraseña de dicho usuario, pudiendo autenticarnos como el, por lo que haremos lo siguiente:

MAQUINA HOST

Info:

Ahora que hemos generado esto en la carpeta .ssh/ vamos a copiarnos el contenido de la clave publica y pasarnosla un archivo que tendremos que llamar como authorized_keys, para que asi nos podamos conectar desde nuestro host:

Info:

Ahora en la maquina victima le pegaremos dicho contenido dentro de la carpeta .ssh/ de la carpeta robertj:

Echo esto desde nuestro host vamos a conectarnos con dicho usuario con nuestra clave PEM desde el host.

Info:

Con esto veremos que ha funcionado, por lo que leeremos la flag del usuario.

user.txt

Escalate Privileges

Si hacemos el id veremos esto:

Veremos que pertenecemos al grupo operators, pero si listamos los permisos SUID que tenemos veremos esto:

Info:

Veremos esta linea interesante, que casualmente pertenecemos a dicho grupo:

Vamos a ver que pasa si lo ejecutamos:

Info:

Vemos que se estan ejecutando varios comandos y nos muestra la salida, pero vamos a ver si utiliza rutas absolutas dentro del binario.

Info:

Vemos que mas o menos estamos viendo los comandos que esta utilizando, y no esta utilizando rutas absolutas por lo que podremos realizar la tecnica llamada PATH hijacking/binary hijacking con el binario ip en este caso.

Vamos a crear un script que ponga permisos SUID a la bash de la siguiente forma:

Lo guardamos y ahora vamos a modificar el PATH para que cuando lo ejecutemos es ejecute como root el script llamado ip por lo que tendremos que poner que primero vaya a la ruta /tmp para que funcione:

Ahora si vemos el PATH:

Info:

Veremos que ha funcionado, por lo que vamos a ejecutar de nuevo el binario:

Info:

Ahora vamos a comprobar que esta bien ejecutado:

Info:

Vemos que funciono, por lo que vamos a ejecutar esto otro para obtener el usuario root:

Info:

Con esto veremos que somos root por lo que leeremos la flag del usuario root.

root.txt

Last updated