Lỗ hổng thực thi mã lệnh tùy ý trên OrangeHRM CMS_8

CVE-2019-12839: Lỗ hổng thực thi mã lệnh tùy ý trên OrangeHRM CMS

June 20, 2019 | vietsunshine

Tồn tại trên các phiên bản OrangeHRM 4.3.1 trở về trước, lỗ hổng là lỗi xác thực đầu vào trong admin/listMailConfiguration (tham số txtSendmailPath) cho phép người dùng độc hại xác thực để thực hiện lệnh tùy ý.

OrangeHRM là một hệ thống quản lý nguồn nhân lực có thể được dùng để theo dõi các thông tin khác nhau liên quan đến nguồn nhân lực trong một tổ chức.

Lỗ hổng được Pentest Team của VietSunshine phát hiện và đã báo cáo cho nhà phát triển. OrangeHRM đã vá lỗi vào ngày 14/06/2019, các quản trị viên nên cập phiên bản mới sớm nhất có thể.

Tổng quan về lỗ hổng trên OrangeHRM

  • Ứng dụng bị lỗ hổng: OrangeHRM | Open Source Human Resource Management System
  • Phiên bản ảnh hưởng: 4.3.1 và trước đó.
  • Mã CVE: CVE-2019-12839

Chi tiết về lỗ hổng

Khi thực hiện chức cài đặt các tham số gửi Mail của hệ thống thông qua menu Admin -> Configuration -> Email Configuration

Lỗ hổng thực thi mã lệnh tùy ý trên OrangeHRM CMS_1

Chọn “Sending method” là Sendmail, lúc này tham số “Path to Sendmail” sẽ là đường dẫn tuyệt đối đến tập tin thực thi sendmail có trên hệ thống (ví dụ /usr/sbin/sendmail). Sendmail là một tiện ích dùng để gửi mail rất phổ biến trên các hệ thống Unix/Linux.

Lỗ hổng thực thi mã lệnh tùy ý trên OrangeHRM CMS_2

OrangeHRM không kiểm tra tính hợp lệ của tập tin Sendmail người dùng gửi lên máy chủ, dẫn đến lỗ hổng thực thi mã lệnh tùy ý trên máy chủ. Trong trường hợp này tham số tạo ra lỗ hổng là txtSendmailPath.

Các tham số sẽ được gửi đến URL /symfony/web/index.php/admin/listMailConfiguration. Ta sẽ phân tích quá trình OrangeHRM xử lý tham số txtSendmailPath dẫn đến cho phép Attacker thực thi mã lệnh tùy ý.

  • Kiểm tra trên hệ thống có tồn tại tập tin txtSendmailPath hay không (xem thêm).

Lỗ hổng thực thi mã lệnh tùy ý trên OrangeHRM CMS_3

  • Tham số txtSendmailPath được lưu vào hệ thống (xem thêm).

Lỗ hổng thực thi mã lệnh tùy ý trên OrangeHRM CMS_4

  • txtSendmailPath sẽ được sử dụng làm tham số khởi tạo thư viện Swift Mailer (xem thêm).

Lỗ hổng thực thi mã lệnh tùy ý trên OrangeHRM CMS_5

  • Khi thực hiện gửi mail, nếu txtSendmailPath có chứa chuỗi -bs  thì Swifter Mailer sẽ thực thi thao tác gửi mail ngay lập tức (xem thêm).

Lỗ hổng thực thi mã lệnh tùy ý trên OrangeHRM CMS_6

  • Khi Swift Mailer thực hiện gửi mail. Hàm proc_open sẽ thực thi tập tin txtSendmailPath (xem thêm)

Lỗ hổng thực thi mã lệnh tùy ý trên OrangeHRM CMS_7

Tổng hợp lại ta có thể tạo được một Payload tấn công đơn giản như sau:

/bin/cat /etc/passwd ” -bs” > hacked.txt

 

Lỗ hổng thực thi mã lệnh tùy ý trên OrangeHRM CMS_8

Chọn “Send Test Email”, điền địa chỉ email tùy ý vào “Test Email Address”. Sau khi nhấn Save mã độc sẽ thực thi ngay lập tức.

Lỗ hổng thực thi mã lệnh tùy ý trên OrangeHRM CMS_9

Trên Server sẽ tạo ra một tập tin hacked.txt chứa nội dung của /etc/passwd, chừng tỏ mã độc đã thực thi.

Lỗ hổng thực thi mã lệnh tùy ý trên OrangeHRM CMS_10

Hiện OrangeHRM đã vá lỗ hổng này, chỉ nhận đầu vào là các tập tin Sendmail của hệ thống, người dùng nên cập nhật phiên bản mới nhất.

Report Timeline

  • 06/11/ 2019: VSS Team discovered the vulnerability
  • 06/12/2019: Reported to Vendor
  • 06/13/2019: Vendor confirmed
  • 06/14/2019: Vendor released a fix
  • 06/15/2019: CVE ID assigned

Tham khảo

Xem thêm:

Tags: , ,