Khai thác lỗ hổng PHPMailer thực thi mã từ xa ( CVE-2016-10033 )

krone

VIP Members
26/07/2016
141
259 bài viết
Khai thác lỗ hổng PHPMailer thực thi mã từ xa ( CVE-2016-10033 )
Vâng như đã hứa thì mình sẽ quay trở lại phân tích về lổ hổng PHPMailer mới được công bố gần đây. Oke mình sẽ bắt đầu luôn. Vậy thì đầu tiên là:

What is PHPMailer ?
PHP Mailer là bộ thư viện mã nguồn mở viết bằng PHP cho phép gửi mail từ các ứng dụng web. Điển hình là WordPress, Drupal, 1CRM, SugarCRM, Joomla đều sử dụng bộ thư viện này, ...hoặc các ứng dụng có chức năng gửi mail bằng PHP Mailer.

Một form gửi mail trên web có dạng như sau:
14899399531.PNG


Hàng triệu Website PHP và các ứng dụng web mã nguồn mở phổ biến bao gồm WordPress, Drupal, 1CRM, SugarCRM và Joomla đều sử dụng thư viện PHPMailer cho việc gửi email bằng nhiều phương thức khác nhau.

Lổ hổng PHPMailer ( CVE-2016-10033 )?

Lỗ hổng CVE-2016-10033 do Dawid Golunski - chuyên gia nghiên cứu bảo mật của Legal Hackers công bố vào ngày 25.12.2016 ảnh hưởng tới PHPMailer trước 5.2.18, sau 2 ngày Dawid Golunski tiếp tục cập nhật lỗ hổng CVE-2016-10045 (ảnh hưởng tới PHP Mailer < 5.2.20) vượt qua bản vá của lỗ hổng CVE-2016-10033 mới được cập nhật trong phiên bản 5.2.18 trước đó. Hiện tại mã khai thác cũng đã được công bố.
148993995309105894_hình 1_16-12-29.png


Lợi dụng lỗ hổng này tin tặc có thể thực thi mã khai thác và tấn công vào máy chủ/ứng dụng web. Tất cả ứng dụng web, sử dụng chức năng, các form “Liên hệ/Contact/feedback”, “Đăng ký/Regsitration” hay “Reset password” có chức năng gửi mail dựa trên PHP Mailer đều có thể bị tấn công.

Khai thác - Exploition?

Ở đây mình có clone được một lab của một team nước ngoài có nghiên cứu về các lổ hổng thực thi mã. Link dưới đây bao gồm mã nguồn một web form cơ bản mô phỏng gửi mail. Source của mã nguồn mở PHPMailer version 5.2.17.( Vuln < 5.2.18 ). NGoài ra còn có cả source exploit.

https://github.com/opsxcq/exploit-CVE-2016-10033

- Đầu tiên là cài đặt môi trường gây ra lỗi có thể khai thác. Sandbox cần được cài đặt Docker trước hết để có thể thực hiện tạo môi trường ảo.
Mã:
 docker run --rm -it -p 8080:80 vulnerables/cve-2016-10033

Nếu bạn nào chưa biết Docker là gì thì có thể tham khảo link ở phía dưới để hiểu được nó là gì, đại loại là nó gần như tương tự KVM-EQMU nhé :)! Nếu có thời gian mình cũng sẽ viết một bài tham khảo phân tích về Docker cho các bạn xem.

https://blog.duyetdev.com/2015/12/docker-la-gi-co-ban-ve-docker.html#.WHM5Nxt97Dc


14899399532.PNG


Sau khi thực hiện lệnh lên chúng ta sẽ có một web form như sau:
14899399533.PNG



Để thực hiện khai thác chỉ chạy lệnh:
Mã:
 ./exploit host:port

Tất nhiên là mình đang chạy trên môi trường ảo do Docker tạo ra nên ta chỉ cần chạy:
Mã:
 ./exploit localhost:8080

Sau khi khai thác, một tập tin gọi là backdoor.php sẽ được lưu vào thư mục gốc của thư mục web. Và khai thác sẽ đặt mộ shell nơi bạn có thể gửi lệnh đến backdoor:
14899399534.PNG

Thử với lệnh thực thi:
Mã:
echo 'Defaced' > /www/index.php

And...refresh.
1489939953Screenshot from 2017-01-09 14-33-39.png



Trên đây mình đã trình bày về cách khai thác lỗi PHPMailer, mặc dù chỉ dựa trên môi trường do Docker tạo ra nhưng code để exploit vẫn có thể dử dụng cho các web sifte ngoại tuyến. Các bạn có thể thử nếu có thể tìm thấy web lỗi đúng phiên bản PHPMailer < 5.2.18. Tuy nhiên sau hơn 2 tuần thì có lẽ các quản trị cũng đã cập nhật được tin tức, cùng với đó bộ mã của PHPMailer là một mã nguồn mở ứng xử độc lập nên khá dễ dàng để cập nhật :D. Vài hôm nữa mình sẽ tiếp một bài ngắn về nguồn gốc của lổ hổng và tại vì sao có thể thực thi được mã dựa trên lỗ hổng của PHPMailer này.

Cám ơn các bạn đã đọc bài :D.!

By Krone
 
Mời các bạn tham gia Group WhiteHat để thảo luận và cập nhật tin tức an ninh mạng hàng ngày.
Lưu ý từ WhiteHat: Kiến thức an ninh mạng để phòng chống, không làm điều xấu. Luật pháp liên quan
  • Thích
Reactions: blackarch
Bên trên