For the complete documentation index, see llms.txt. This page is also available as Markdown.

Bridgenton (Avanzado)

En primer lugar, vía netdiscover, sacamos la IP.

netdiscover

192.168.1.164   08:00:27:ad:47:73      1      60  PCS Systemtechnik GmbH

Ahora que ya conocemos la IP se puede pasar al reconocimiento inicial. Este no revela más que un servidor web y uno SSH.

nmap --top-ports 5000 -sT -A -T5 192.168.1.164 -oN top5000  

PORT   STATE SERVICE VERSION  
22/tcp open  ssh     OpenSSH 9.2p1 Debian 2+deb12u2 (protocol 2.0)  
| ssh-hostkey:    
|   256 ad:fa:fa:1a:e7:99:65:1b:f9:e9:c4:55:be:f5:3a:f3 (ECDSA)  
|_  256 d7:87:d7:2e:d9:a3:4e:87:87:3d:b9:b8:ba:89:b5:fd (ED25519)  
80/tcp open  http    Apache httpd 2.4.57 ((Debian))  
|_http-server-header: Apache/2.4.57 (Debian)  
|_http-title: Universidad Bridgenton

Al visitar la página se puede observar que se trata de la web de una universidad, tras examinar rápidamente el código fuente y los endpoints que la propia página expone en su barra de navegación y un poco de fuzzing, se deduce esta estructura.

Dos caminos

La sección de profesorado incluye los correos de los profesores, y como el inicio de sesión no tiene ningún tipo de baneo de rate limiting, esto habilita la posibilidad de hacer un ataque diccionario a los correos listados en dicha sección.

Después de un rato no da resultado, pero mientras he ido probando cosas con el otro vector potencial de escalada, file upload en el formulario de registro, que permite la subida de imágenes. Tras un rato probando, doy con una extensión que si permite evadir los controles de seguridad (.phtml) y procedo a comprobar si funciona como se esperaba.

Ahora, al visitar /uploads y clicar el archivo, este se ejecutará y veremos el menú de phpinfo(). Ahora, sustituimos el phpinfo() de la solicitud por una reverse shell y reenviamos la solicitud (yo lo hice desde el Repeater de Burpsuite, pero se puede hacer una cuenta nueva).

Nos ponemos en escucha y ejecutamos de nuevo el archivo

Escalada

Cambio la shell a bash e inicio el reconocimiento interno para lograr escalada.

Consigo la flag de user gracias sl bit SUID del binario base64

Gracias a este binario, se puede leer también el id_rsa del usuario James, una vez lo tenemos, tratamos de crackearlo con John y da resultado.

Ni siquiera hace falta usar SSH, con su vemos que James ha reciclado la passphrase de la llave y podemos pivotar sin mayor complicación

Root

La parte final de la escalada es más sencilla, vemos que el script example.py puede ejecutarse con privilegios root, y a pesar de que el archivo es propiedad de root, el directorio que lo contiene no lo es. Esto habilita la posibilidad de eliminar el archivo y crear uno nuevo con código que permita la escalada, en este caso, ejecutaremos como root un comando que da el bit SUID al binario /bin/bash, de manera que al lanzar una shell con bash -p (la flag -p hace heredar los privilegios del owner) somos root.

Last updated