0
0
Lập trình
Thaycacac
Thaycacac thaycacac

Khám Phá Lỗ Hổng RCE Trên Version Cổ Điển Của ManageEngine ServiceDesk

Đăng vào 2 tuần trước

• 3 phút đọc

Tìm Hiểu Về Lỗ Hổng RCE Trong ManageEngine ServiceDesk

Bài viết này chia sẻ hành trình tìm kiếm lỗ hổng Remote Code Execution (RCE) trên phiên bản cũ của hệ thống ManageEngine ServiceDesk mà công ty mình đang sử dụng. Với mục tiêu đánh giá an ninh cho server cổ này, mình đã khám phá và phát hiện nhiều điểm yếu, dẫn đến việc khai thác thành công.

Tình Huống Hiện Tại

Hệ thống ManageEngine ServiceDesk mà công ty mình đang sử dụng đã có tuổi đời gần 10 năm. Khi mình đảm nhiệm nhiệm vụ kiểm tra bảo mật, mình nhận thấy rằng phiên bản này không bị ảnh hưởng bởi bất kỳ CVE nghiêm trọng nào. Điều này dẫn đến khó khăn trong việc chứng minh tác động để yêu cầu cập nhật phần mềm.

Gần đây, công ty đã triển khai các giải pháp SOC mới và mình được giao nhiệm vụ tham gia vào hoạt động red team để thử nghiệm. Mục tiêu của mình là kiểm tra hệ thống ManageEngine ServiceDesk và xem xét những tiến bộ của bản thân sau 8 tháng.

1. Phát Hiện Lỗ Hổng Trong ManageEngine ServiceDesk

Mình bắt đầu bằng cách tải phiên bản hiện có và tìm kiếm các endpoint không yêu cầu xác thực. Một endpoint đáng chú ý mà mình phát hiện là /fosagent/repl/download-file?basedir=4&filepath=<file>. Endpoint này do servlet DownloadFileServlet xử lý và cho phép đọc file mà không kiểm tra quyền truy cập.

Mặc dù đã kiểm tra folder cài đặt ServiceDesk, mình chỉ phát hiện một số file log nhạy cảm nhưng không có thông tin hữu ích. Sau đó, việc quét bằng nmap đã chỉ ra rằng cổng 1433 của MS SQL còn mở, điều này đã mở ra cơ hội khai thác mới.

2. Khai Thác MS SQL Server

Mình nhận thấy rằng MS SQL Server có thể được cài đặt trong thư mục C:\Program Files\Microsoft SQL Server\MSSQL11.SQLEXPRESS\MSSQL\DATA, nhưng việc tải các file này về không thành công do bị từ chối quyền truy cập.

Mình tìm thấy tính năng sao lưu trong ServiceDesk, sử dụng backUpData.bat tạo ra một file backup nằm trong thư mục backup, tên file có thể biết được qua bản ghi trong C:\ManageEngine\ServiceDesk\bin\SDPbackup.log. Tuy nhiên, một lần nữa, việc truy xuất đến ổ D gặp phải hạn chế.

3. Lấy Password của MS SQL Server

Sau nhiều thất bại, mình tìm hiểu kỹ hơn về file cấu hình, trong quá trình đó, mình phát hiện hỗ trợ cho việc thay đổi thông tin đăng nhập vào database. Bằng cách debug, mình đã tìm ra file lưu trữ username và password. Qua một số đoạn mã mình phân tích, cuối cùng mình đã có thể giải mã mật khẩu của MS SQL Server.

4. Leo Quyền Admin và Thực Hiện RCE

Khi đã có quyền truy cập vào database, việc nâng cấp quyền lên admin rất dễ dàng. Mình tạo tài khoản mới và gán cho nó quyền admin. Khi đã trở thành admin, mình có thể thực hiện RCE thông qua chức năng Custom Trigger, cho phép chạy các lệnh tùy chỉnh khi có sự kiện xảy ra.

Kết Luận

Kinh nghiệm này không chỉ giúp mình học hỏi nhiều hơn về an ninh mạng mà còn tạo cơ hội giúp công ty nhận thức rõ hơn về tầm quan trọng của việc cập nhật hệ thống và tăng cường khả năng giám sát.

Cơ Hội Nghề Nghiệp

Chúng tôi đang tuyển dụng các chuyên gia An ninh Mạng. Nếu bạn quan tâm, hãy gửi CV về địa chỉ email hi@shfsec.com.
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