0
0
Lập trình
Sơn Tùng Lê
Sơn Tùng Lê103931498422911686980

Hướng Dẫn Khai Thác Dịch Vụ NFS Trên Hackthebox: Clicker

Đăng vào 3 ngày trước

• 2 phút đọc

Khai Thác Máy Ảo Clicker Trên Hackthebox

Hệ Điều Hành Độ Khó
Linux Medium

Giới Thiệu

Máy ảo Clicker là một thử thách có độ khó Medium trên Hackthebox, nơi chúng ta sẽ tìm hiểu cách thực hiện kiểm thử bảo mật (pentest) khi máy chủ mở cổng 2049 cho dịch vụ NFS (Network File System).

1. Recon

Bất đầu chúng ta sẽ sử dụng Nmap để quét các dịch vụ đang chạy trên máy chủ:

Copy
sudo nmap -sC -sV 10.10.11.232

Kết quả thu được cho thấy các cổng sau:

  • 22: SSH
  • 80: HTTP
  • 111: rpcbind
  • 2049: NFS

Chúng ta sẽ thêm máy chủ vào file /etc/hosts:

Copy
10.10.11.232 clicker.htb

2. Enum

Khi kiểm tra ứng dụng web trên cổng 80, đây là một trò chơi có điểm số bằng số lần click của người chơi. Tuy nhiên, không có dấu hiệu gì để khai thác ngay lập tức. Chúng ta chuyển sang cổng 2049 để tìm hiểu về dịch vụ NFS.

Chúng ta thực hiện kiểm tra thư mục trên máy chủ có thể mount được:

Copy
showmount -e 10.10.11.232

Chúng ta thấy thư mục /mnt/backups có thể mount. Tiến hành tạo một thư mục clicker trên máy local và thực hiện mount:

Copy
sudo mount -t nfs 10.10.11.232:/mnt/backups clicker/

Bên trong thư mục được mount, chúng ta phát hiện ra file zip tên là clicker.htb_backup.zip. Giải nén file này cho chúng ta mã nguồn của ứng dụng web.

3. Khai Thác

Sau khi xem xét mã nguồn, có một số điểm có thể khai thác trong các file:

  • save_game.php: Thực hiện lưu game và có khả năng tiêm mã (injection).
  • db_utils.php: Chứa logic để lưu profile người dùng trong database.

Phân Tích Mã Nguồn

Chúng ta thấy rằng trong save_game.php, có một biến role bị chặn. Tuy nhiên, chúng ta có thể bypass bằng cách truyền giá trị như sau role/**/. Biến này sẽ không bị chặn và chúng ta có thể thay đổi vai trò thành Admin.

Sau khi thực hiện, chúng ta đăng xuất và đăng nhập lại thì có thể truy cập trang quản trị admin.

Xuất File

Trong trang admin có chức năng xuất dữ liệu từ export.php. Chúng ta có thể xuất ra định dạng .php và tận dụng điều này để thực hiện mã độc.

Đầu tiên, chúng ta cần đạt trên 1000000 điểm để lọt vào danh sách top player. Thay đổi số điểm của mình thành 9999999 để có thể xuất thông tin. Sau đó, thay đổi giá trị của biến nickname để tiêm mã php khi xuất file. Việc này sẽ cho phép chúng ta thực hiện Remote Code Execution (RCE).

Cuối cùng, chúng ta có thể tải shell ngược (reverse shell) vào hệ thống.

4. Khuyến Nghị

  • Không nên cho phép người dùng gửi nhiều biến vào một mảng như trong chức năng save_game.
  • Nên đặt whitelist cho các đuôi file được phép xuất trong chức năng xuất dữ liệu.

source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào