【TryHackMe】Surfer Writeup

# はじめに
OSCP合格に向けて着手しているTryHackMeのwriteup兼備忘録になります。
今回は難易度がEasyである「[Surfer](https://tryhackme.com/r/room/surfer)」というRoomを攻略しました。
**※扱い次第では法に触れるため、悪用厳禁です。**

# Task1 Surfer
ポートスキャンを行います。

```
└─$ nmap -Pn -T4 10.10.193.119        
Starting Nmap 7.93 ( https://nmap.org ) at 2024-03-30 08:41 EDT
Nmap scan report for 10.10.18.190
Host is up (0.26s latency).
Not shown: 994 closed tcp ports (conn-refused)
PORT     STATE    SERVICE
22/tcp   open     ssh
80/tcp   open     http
1112/tcp filtered msql
3325/tcp filtered active-net
4004/tcp filtered pxc-roid
9500/tcp filtered ismserver

Nmap done: 1 IP address (1 host up) scanned in 33.48 seconds
```

httpが空いていたのでひとまずアクセスすると、ログインページが表示されました。
ソースコード等みても特にヒントはなさそう、、

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/a2034c8e-c6b5-df38-c2dd-49e459d53b34.png)

次にgobusterコマンドで隠しディレクトリを解析します。
最近、「-x」オプションの存在を知り重宝してます。

```
└─$ gobuster dir -u http://10.10.193.119 -x html,php,txt,jpg,png -w ../../usr/share/dirb/wordlists/common.txt
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.10.193.119
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                ../../usr/share/dirb/wordlists/common.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Extensions:              jpg,png,html,php,txt
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.html                (Status: 403) [Size: 278]
/.hta                 (Status: 403) [Size: 278]
...
/assets               (Status: 301) [Size: 315] [--> http://10.10.193.119/assets/]                                                                        
/backup               (Status: 301) [Size: 315] [--> http://10.10.193.119/backup/]                                                                        
/changelog.txt        (Status: 200) [Size: 816]
/index.php            (Status: 302) [Size: 0] [--> /login.php]
/index.php            (Status: 302) [Size: 0] [--> /login.php]
/internal             (Status: 301) [Size: 317] [--> http://10.10.193.119/internal/]                                                                      
/login.php            (Status: 200) [Size: 4774]
/logout.php           (Status: 302) [Size: 0] [--> /login.php]
```

「/change.txt」、「/assets」、「/backup」辺りに何かありそうなのでアクセスしてみますが、特に何も無さそう、、


![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/967b3d7b-d57e-8b88-0444-0092af34c7ef.png)

続いて「/assets」、「/backup」に対してgobusterコマンドを再度実施してみると、、
```
└─$ gobuster dir -u http://10.10.193.119/backup -x html,php,txt,jpg,png -w ../../usr/share/dirb/wordlists/common.txt
===============================================================
Gobuster v3.6
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@firefart)
===============================================================
[+] Url:                     http://10.10.193.119/backup
[+] Method:                  GET
[+] Threads:                 10
[+] Wordlist:                ../../usr/share/dirb/wordlists/common.txt
[+] Negative Status codes:   404
[+] User Agent:              gobuster/3.6
[+] Extensions:              html,php,txt,jpg,png
[+] Timeout:                 10s
===============================================================
Starting gobuster in directory enumeration mode
===============================================================
/.html                (Status: 403) [Size: 278]
/.hta                 (Status: 403) [Size: 278]
/.hta.php             (Status: 403) [Size: 278]
...
/.htpasswd.php        (Status: 403) [Size: 278]
/chat.txt             (Status: 200) [Size: 365]
```

「/chat.txt 」を見つけたので確認してみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/fb7ef7f2-69a1-bbf0-f3cd-85d03d788f1e.png)

要約するとAdminに対して、ユーザ名と同じパスワードを使うのをやめるようチャットされています。
つまり...?

ログイン名とパスワードともに「admin」にすることでログインすることが出来ました。
右側の対応履歴にフラグについての文面とリンクがあるので、実際にアクセスしてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/1c2536ce-2eaf-56d6-719f-ae3c0316c251.png)

このアクセス方法では駄目のようですが、このリンクにはフラグが隠されていそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/5c8301f1-00cb-ece8-0fbc-198173969f51.png)

このページ上で他にできそうな要素としてはPDFの出力機能のようなので、この辺りを調べてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/80d4ebc7-0808-8c53-09b0-1be8cb778a64.png)

おそらくですが、指定されたサイトをpdfとして出力されていると思われます。
つまり、さきほどのフラグが表示されるサイトのURLをどうにか指定すれば、フラグを獲得できるのではないかと予測できます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/efd9c9d7-fc5c-3f58-d74f-8e92dcf40abf.png)

なのでここでBurp Suiteで「Export to PDF」のリクエストをキャッチします。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/bb70e532-d1c5-1803-bd34-243040e58303.png)

一番下に記載のあるURLが先ほど試しに出力したPDFのサイトだと思われます。

このURLをフラグが書かれたリンクへ書き換えてみます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/cb73a5e3-a64a-faad-c58b-56f47b628542.png)

上手くいきました！
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/55f5da05-d837-c5b0-3651-80d0c5796010.png)

## Uncover the flag on the hidden application page.
よってさきほど出力したPDF内に記載のある下記フラグが回答になります。
flag{6255c55660e292cf0116c053c9937810}


# さいごに
以上となります。

export2pdf関連は過去にも触れたことがあったので、その経験を活かせた感じがします。。