Prime_2 VulnHub

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 2024-06-13 05:12 EDT
Nmap scan report for 192.168.5.185
Host is up (0.011s latency).

PORT      STATE SERVICE     VERSION
22/tcp    open  ssh         OpenSSH 8.4p1 Ubuntu 5ubuntu1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   3072 0a:16:3f:c8:1a:7d:ff:f5:7a:66:05:63:76:7c:5a:95 (RSA)
|   256 7f:47:44:cc:d1:c4:b7:54:de:4f:27:f2:39:38:ff:6e (ECDSA)
|_  256 f5:d3:36:44:43:40:3d:11:9b:d1:a6:24:9f:99:93:f7 (ED25519)
80/tcp    open  http        Apache httpd 2.4.46 ((Ubuntu))
|_http-title: HackerCTF
|_http-server-header: Apache/2.4.46 (Ubuntu)
139/tcp   open  netbios-ssn Samba smbd 4.6.2
445/tcp   open  netbios-ssn Samba smbd 4.6.2
10123/tcp open  http        SimpleHTTPServer 0.6 (Python 3.9.4)
|_http-server-header: SimpleHTTP/0.6 Python/3.9.4
|_http-title: Directory listing for /
MAC Address: 00:0C:29:84:89:4A (VMware)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Host script results:
|_clock-skew: -2s
| smb2-time: 
|   date: 2024-06-13T09:12:40
|_  start_date: N/A
| smb2-security-mode: 
|   3:1:1: 
|_    Message signing enabled but not required
|_nbstat: NetBIOS name: HACKERCTFLAB, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)

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

Puerto 10123

Por lo que vemos aparentemente en el nmap de primeras es que es un servidor de python abierto el cual esta compartiendo la home de algun usuario, si nos metemos dentro efectivamente esta la estructura de una home compartiendose con varios archivos interesantes, si nos descargamos el archivo something dira lo siguiente...

Nos da una pista de un usuario llamado jarves...

enum4linux

Info:

Si nos conectamos al smb vemos que lo que se esta compartiendo en el puerto 10123 es lo mismo que en el recurso de welcome...

Gobuster

Info:

Vemos varias cosas interesantes, pero si nos vamos a /wp vemos un wordpress por lo que lo explotaremos de la siguiente forma...

Info:

Nos saca el usuario admin....

Si intentamos hacer eso, no nos sacara la contraseña, pero si miramos los plugins que estan activos...

Veremos que hay un plugin llamado gracemedia-media-player y si buscamos algun exploit del mismo...

URL = https://www.exploit-db.com/exploits/46537

Veremos que es vulnerable a LFI (Local File Inclusion) por lo que si probamos a leer el /etc/passwd...

Info:

Vemos que funciona, por lo que haremos lo siguiente...

Por lo que copiaremos el siguiente script para automatizar todo esto mas, utilizaremos la tecnica de LFI utilizando Wrappers...

URL = https://github.com/synacktiv/php_filter_chains_oracle_exploit/blob/main/filters_chain_oracle_exploit.py

Una vez copiado ese script a nuestro host lo utilizaremos de la siguiente manera...

Info:

Esto lo que hara sera crear el payload que nosotros queramos usar de manera "codificada" para que nosotros lo pongamos en el parametro vulnerable, en este caso seria en el ajaxAction=getIds&cfg=, lo que estoy haciendo es crear un parametro llamado cmd en el que pueda ejecutar comandos de forma libre...

Por lo que una vez generado eso anterior, todo ese contenido lo pondremos despues del = de ajaxAction=getIds&cfg y como habremos creado el parametro cmd que es donde ejecutaremos todos los comandos haremos un ls para probar quedando de esta manera...

Info:

Veremos que funciona el ls...

Ahora intentaremos hacer una Reverse Shell...

Comprobaremos que curl esta instalado y funcional...

Y ahora estando a la escucha de alguna peticion, nos haremos una peticion con curl para comprobarlo...

Si enviamos eso y volvemos a nuestra terminal viendo que sucedio en python veremos la siguiente peticion, por lo que sabemos que curl esta instalado...

Una vez sabiendo eso, haremos lo siguiente...

Entraremos a la escucha para estar preparados para la Reverse Shell....

Tendremos todavia nuestro python abierto a la escucha para ver que las peticiones viajan bien...

Crearemos un archivo con una Reverse Shell llamado index.html...

index.html

Guardamos el archivo y ahora lo ejecutaremos desde curl de la siguiente manera...

Una vez hecho esto habremos conseguido una conexion con el usuario www-data...

Sanitizamos la shell...

Vemos que en la /home del usuario jarves esta compartida por smb y el puerto web, si creamos un archivo desde smb se estara creando como el usuario jarves por lo que haremos lo siguiente...

Desde nuestro host creamos el id_rsa publico y privado para crear un authorized_keys en una carpeta que creemos desde smb llamada .ssh, por lo que haremos lo siguiente...

host

Con esto lo que hacemos es generar una clave de ssh, lo dejamos todo vacio dandole ENTER a todo...

Ahora leemos la id_rsa.pub que sera la que copiemos para meterlo en el archivo authorized_keys...

Tendra que verse algo tal que asi...

Y ahora lo metemos en el archivo que creemos llamado authorized_keys...

smb (maquina victima)

Dentro del entorno de smb si creamos lo siguiente...

Y nos vamos a www-data vemos que se creo una carpeta .ssh/ por el usuario jarves...

Lo que haremos dentro de la carpeta .ssh/ sera subir el archivo que creamos llamado authorized_keys a la carpeta de .ssh/ de smb...

Una vez subido el archivo desde smb al .ssh/ de la home del usuario jarves podremos conectarnos desde fuera con el id_rsa privado que creamos desde nuestro host de la siguiente manera...

Si hacemos eso estariamos dentro con el usuario jarves sin utilizar contraseña...

Si hacemos...

Info:

Vemos que estamos en el grupo lxd que es bastante interesante para explotarlo...

Maquina Host

Esto nos generara un archivo .tar.gz el cual sera el contenedor que tendremos que cargar en la maquina victima...

Pero si queremos automatizar todo esto hay un exploit que se puede hacer...

Info:

Nos lo descargamos y nos pasamos el .tar.gz y el exploit .sh a nuestra maquina victima mediante un servidro de python3 una vez pasado todo a la carpeta /tmp hacemos lo siguiente...

Maquina victima

Una vez hecho esto ya seremos root dentro del contenedor de lxd...

Si nos vamos a...

Estariamos en la carpeta de root...

Si queremos ser root por ssh vemos que hay un .ssh/ con un authorized_keys en la carpeta de root por lo que haremos lo mismo de antes...

Metemos nuestra id_rsa.pub a este archivo authorized_keys...

Y una vez hecho esto, nos conectamos con nuestro id_rsa privado por ssh...

Info:

Y ya seriamos root sin estar dentro de un contendor...

Last updated