hommie 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.95 ( https://nmap.org ) at 2025-04-22 12:58 EDT
Nmap scan report for 192.168.28.20
Host is up (0.00066s latency).

PORT   STATE SERVICE VERSION
21/tcp open  ftp     vsftpd 3.0.3
| ftp-syst: 
|   STAT: 
| FTP server status:
|      Connected to ::ffff:192.168.28.19
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 2
|      vsFTPd 3.0.3 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r--    1 0        0               0 Sep 30  2020 index.html
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey: 
|   2048 c6:27:ab:53:ab:b9:c0:20:37:36:52:a9:60:d3:53:fc (RSA)
|   256 48:3b:28:1f:9a:23:da:71:f6:05:0b:a5:a6:c8:b7:b0 (ECDSA)
|_  256 b3:2e:7c:ff:62:2d:53:dd:63:97:d4:47:72:c8:4e:30 (ED25519)
80/tcp open  http    nginx 1.14.2
|_http-server-header: nginx/1.14.2
|_http-title: Site doesn't have a title (text/html).
MAC Address: 08:00:27:F3:9F:7C (PCS Systemtechnik/Oracle VirtualBox virtual NIC)
Service Info: OSs: Unix, 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.43 seconds

Vemos varios puertos interesantes, entre ellos el FTP y el puerto 80, vamos a probar a intentar meternos por el FTP de forma anonima.

FTP

Si dejamos la contraseña en blanco veremos que si nos deja y entraremos en el servidor de FTP, si listamos el contenido veremos lo siguiente:

Vemos ya una idea de lo que puede ser, si nos pasamos el primer index.html veremos que esta vacio, pero si entramos a .web/ veremos otro index.html que si nos lo pasamos a nuestro host:

Info:

Y vemos que contiene, veremos el mismo texto que en la pagina web del puerto 80, por lo que se nos ocurre subir un archivo .php para generarnos una reverse shell:

webshell.php

Ahora vamos a subir este archivo a la carpeta .web/ del servidor FTP de la siguiente forma:

Si nos vamos a la pagina web del puerto 80 y ponemos lo siguiente para probar:

Pero veremos que no funciona, posiblemente por que no tenga PHP instalado, por lo que vamos a realizar un poco mas de fuzzing.

Nmap (UDP)

Tras investigar mucho si probamos a enumerar los puertos por UDP en vez de por TCP veremos lo siguiente:

Info:

Veremos que por UDP tenemos los puertos tftp y dhcpc, pero el que mas nos interesa es el de tftp, por lo que haremos lo siguiente:

Y veremos que funciona, estaremos dentro, pero no podremos listar ni nada de eso, por lo que vamos a realizar un poco de escaneo probando suerte con nombre de archivos que pueden ser importantes si estuvieran en el directorio.

scannTFTP.py

Pero recordemos que cuando entramos en la pagina nos pone esto:

Por lo que podremos deducir que puede haber algun id_rsa, pero probaremos a utilizar el script por si descubrieramos algo mas.

Info:

Vemos que el unico que funciono es el de id_rsa, por lo que vamos a probar dicha clave con el usuario alexia ya que comenta en la pagina que es su id_rsa.

Escalate user alexia

SSH

Establecemos los permisos necesarios para la clave PEM:

Ahora si vamos a probar a conectarnos por SSH:

Info:

Veremos que ha funcionado, por lo que leeremos la flag del usuario.

user.txt

Escalate Privileges

Si probamos a listar los permisos SUID del usuario, veremos lo siguiente:

Info:

Veremos esta linea bastante interesante:

Vamos a ver que hace este binario:

Info:

Vemos que nos esta mostrando un id_rsa pero sera el mismo que utilizamos para meternos en la maquina, por lo que vamos a pasarnos el binario a nuestra maquina host y decompilarlo con la herramienta ghidra:

En la maquina host haremos lo siguiente:

Una vez que lo tengamos dentro, abriremos la herramienta ghudra crearemos un proyecto nuevo e importaremos el binario showMetheKey para verlo en C#, si nos vamos a la funcion main veremos lo siguiente:

Vemos que se esta ejecutando como root de forma interna y que esta leyendo simplemente la id_rsa del usuario con el que nos hemos metido, pero vemos un fallo y es que utiliza cat con una ruta relativa y no absoluta encima podemos ejecutarlo como el usuario root por lo que podremos realizar una tecnica llamada PATH hijacking/binary hijacking, por lo que haremos lo siguiente:

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 cat 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:

Por lo que vemos parece que ha funcionado, vamos a comprobarlo de la siguiente forma:

Info:

Veremos que ha funcionado, por lo que vamos a ejecutar el siguiente comando para ser root:

Info:

Veremos que seremos root, por lo que leeremos la flag de root:

Info:

root.txt

Last updated