OffSec Pwned1

Primero que nada empezamos con lo tipico escaneo de puertos abiertos en el Host.
# Nmap 7.94SVN scan initiated Wed Feb 21 11:56:43 2024 as: nmap -sCV -p21,22,80 -oN target.txt 192.168.217.95
Nmap scan report for 192.168.217.95
Host is up (0.047s latency).
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
22/tcp open ssh OpenSSH 7.9p1 Debian 10+deb10u2 (protocol 2.0)
| ssh-hostkey:
| 2048 fe:cd:90:19:74:91:ae:f5:64:a8:a5:e8:6f:6e:ef:7e (RSA)
| 256 81:32:93:bd:ed:9b:e7:98:af:25:06:79:5f:de:91:5d (ECDSA)
|_ 256 dd:72:74:5d:4d:2d:a3:62:3e:81:af:09:51:e0:14:4a (ED25519)
80/tcp open http Apache httpd 2.4.38 ((Debian))
|_http-server-header: Apache/2.4.38 (Debian)
|_http-title: Pwned....!!
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 at Wed Feb 21 11:56:52 2024 -- 1 IP address (1 host up) scanned in 9.06 seconds
Versiones y servicios que corren para cada uno de los puertos que estan abiertos.

Si fuzzeamos la pagina web encontramos el directorio robots.txt el mas tipico.
Ahora si con curl le lanzamos una peticion a donde esta ese robots.txt tenemos dos directorios mas que nos dan.

Ahora si lanzamos una peticion igual usando curl, observamos que tenemos un archivo llamado secret.dic.
Ahora si lanzamos igualmente con curl, a todo el recurso, el secret.dic tenemos mas especie de directorios en la web.

El directorio pwned.vuln tiene un panel de login, pero si lanzamos una peticion observamos el codigo fuente de la pagina tenemos unas credenciales del ftp.

Nos conectamos al ftp con las credenciales encontradas.
Ahora estando dentro tenemos una nota y un id_rsa, pues nos los descargamos a local.

Bueno si le hacemos un cat a la nota, tenemos un posible usuario ariana, le cambiamos los permisos a la id_rsa.

Nos conectamos usando la id_rsa y con el nombre de usuario encontrado, y tenemos la primera bandera.

Si hacemos un sudo -l como ariana, observamos que selena puede ejecutar un script escrito en bash sin proporcionar contraseña.
Entonces lo vamos a ejecutar como el usuario selena.

Si lo ejecutamos nos da un welcome, y tenemos una especie de formulario, le ponemos el nombre selena y hacemos un user-pivoting del usuario ariana a selena.
Ahora si hacemos un id, observamos que selena esta en el grupo de docker, podemos usar esto para escala privilegios.
Escalda de privilegios docker

Si hacemos un docker images observamos que tenemos tres imagenes.
Luego si introducimos la sintaxis que se observa se ejecuta el contenedos Privesc.
Observamos que todo lo que estaba en la maquina real ahora esta dentro del contenedor, si nos vamos a root, podemos ver la ultima bandera la de root.txt.
El comando docker run
inicia un contenedor Docker basado en Privesc . Con -v /:/host/
, se monta el sistema de archivos del host dentro del contenedor en /host/
. Luego, chroot /host/
cambia el root directory del sistema al del host. Finalmente, bash
inicia un shell Bash dentro del directorio del host montado, permitiendo interactuar con el sistema de archivos del host desde el contenedor.
Maquina resuelta aca estas como root y todo lo del host montado en el contenedor.

Ahora si quieres tambien lo podemos hacer de la siguiente manera.
Estando en el contenedor si nos vamos a bin y le asignamos permisos SUID a la bash.
Ahora en la maquina host la orginal nos conectamos con id_rsa y primero observamos que la bash no tiene permisos SUID pero luego se los asignamos, hacemos un bash -p y somos root, vamos a root y observamos la misma flag
Dos formas en una misma de hacer lo mismo llegar hasta root.
Última actualización