Soul HackMyVM (Hard - 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-05-10 04:55 EDT
Nmap scan report for 192.168.5.12
Host is up (0.00061s latency).

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey: 
|   2048 8a:e9:c1:c2:a3:44:40:26:6f:22:37:c3:fe:a1:19:f2 (RSA)
|   256 4f:4a:d6:47:1a:87:7e:69:86:7f:5e:11:5c:4f:f1:48 (ECDSA)
|_  256 46:f4:2c:28:53:ef:4c:2b:70:f8:99:7e:39:64:ec:07 (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:E0:E2:4F (PCS Systemtechnik/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.24 seconds

Veremos que hay un puerto 80 en el que aloja una pagina web, si entramos dentro de la misma veremos una imagen en grande, pero si seguimos mirando no veremos nada interesante en general en la pagina, por lo que vamos a realizar un poco de fuzzing.

Pero no veremos nada interesante, ya que solo hay una imagen, vamos a probar a extraer cualquier archivo que pueda esconder dentro de la misma.

steghide

Primero nos descargaremos la imagen:

Ahora vamos a probar a extraer cualquier archivo que pueda contener.

Dejamos la contraseña vacia.

Info:

Y veremos que ha funcionado, nos ha extraido un archivo llamado pass.txt lo que podemos creer que pueda ser la contraseña de algun usuario del sistema, pero como todavia no lo sabemos, vamos a realizar ppfuerza bruta para intentar sacar algunas credenciales.

Escalate user

Hydra

Info:

Veremos que ha funcionado y hemos obtenido las credenciales de daniel, por lo que nos conectaremos por SSH.

SSH

Metemos como contraseña lionsarebigcats y veremos que estamos dentro.

Escalate user

Si intentamos hacer algun comando como movernos, leer algo o lo que sea veremos que tenemos una rbash, por lo que vamos a intentar escapar de ella.

Si probamos a utilizar el nano veremos que nos funciona, por lo que vamos a obtener una shell con nano.

Y con esto ya obtendremos una shell mucho mejor y sin restricciones.

Si listamos los permisos SUID que tenemos en el sistema veremos lo siguiente:

Info:

Vemos una cosa interesante y es la siguiente linea:

Vemos que ese no es muy comun y si buscamos informacion de si tuviera alguna vulnerabilidad la encontraremos.

Con esto deberiamos de ser root, pero si lo ejecutamos aparecera lo siguiente:

Por lo que vemos no nos deja, ya que vemos que con este usuario poco podemos hacer, tendremos que ver el intentar escalar a otro usuario, pero al no ver opciones posibles vamos a meternos con el usuario www-data a ver si tiene algunos permisos mal configurados o algo por el estilo con el que podamos escalar.

Escalate user www-data

Vamos a crear un webshell.php para podernos generar una reverse shell.

NOTA

Utilizamos PHP ya que vemos que en el servidor esta instalado y se esta interpretando de forma correcta.

Info:

webshell.php

Ahora nos vamos a dirigir a la siguiente ruta /var/www/html a parte si vamos ahi veremos una cosa interesante de permisos:

Vemos que tiene todos los permisos activados, por lo que efectivamente si podremos depositar un archivo en la pagina web.

Lo guardamos y vamos a irnos a dicho archivo desde la web pero antes nos pondremos a la escucha.

Una vez estando a la escucha nos meteremos en la web de la siguiente forma:

Pero veremos que nos lo descarga, por lo que no esta interpretando correctamente el PHP con la IP, vamos a ver la configuracion del servidor web a ver si interpreta PHP o no.

Info:

Vemos esa parte de ahi, si interpreta PHP pero solamente entrando por el dominio, no por la IP por lo que haremos lo siguiente:

Ahora vamos a entrar por el dominio y directamente al archivo PHP que hemos creado, todo esto estando a la escucha.

Ahora si volvemos a donde tenemos la escucha, veremos lo siguiente:

Veremos que ha funcionado, por lo que vamos a sanitizar la shell.

Sanitización de shell (TTY)

Escalate user gabriel

Si hacemos sudo -l veremos lo siguiente:

Veremos que podemos ejecutar el binario whoami como el usuario gabriel pero el binario esta en /tmp por lo que vamos a dicha carpeta.

Si vamos a /tmp veremos que no esta el binario, por lo que podremos crearlo y meter lo que queramos.

Lo guardamos y ahora lo ejecutaremo de la siguiente forma:

Info:

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

user.txt

Escalate user peter

Si hacemos sudo -l veremos lo siguiente:

Veremos que podemos ejecutar el binario /usr/sbin/hping3 como el usuario peter, por lo que haremos lo siguiente:

Info:

Veremos que con eso seremos dicho usuario.

Escalate Privileges

Recordemos que antes vimos los permisos SUID que no podiamos ejecutar, pero ahora somos el usuario peter y si podemos ejecutarlo con el, por lo que ejecutaremos lo siguiente para ser root.

Info:

Y con esto veremos que ya seremos root por lo que leeremos la flag de root.

rootflag.txt

Last updated