Tấn công thực thi mã PHP thông qua giải tuần tự hóa gây hại cho trang WordPress
Nhà nghiên cứu của Secarma đã phát hiện ra thủ thuật mới lợi dụng lỗ hổng giải tuần tự hóa trong ngôn ngữ lập trình PHP. Sam Thomas, nhà nghiên cứu tại Secarma đã phát hiện ra một thủ thuật khai thác giúp tin tặc lợi dụng lỗ hổng quá trình giải tuần tự hóa trong ngôn ngữ lập trình PHP, sử ...
Nhà nghiên cứu của Secarma đã phát hiện ra thủ thuật mới lợi dụng lỗ hổng giải tuần tự hóa trong ngôn ngữ lập trình PHP.
Sam Thomas, nhà nghiên cứu tại Secarma đã phát hiện ra một thủ thuật khai thác giúp tin tặc lợi dụng lỗ hổng quá trình giải tuần tự hóa trong ngôn ngữ lập trình PHP, sử dụng các hàm được xem là ít rủi ro.
Thủ thuật này có thể khiến hàng trăm nghìn ứng dụng web bị tấn công thực thi mã từ xa, bao gồm cả những trang web chạy nhờ các hệ thống quản lí nội dung phổ biến như WordPress hay Typo3.
Lỗ hổng PHP không tuần tự hóa và PHP object injection được ghi nhận lần đầu vào năm 2009, cho phép kẻ tấn công thực hiện nhiều loại tấn công bằng cách thêm dữ liệu đầu vào độc hại vào các hàm PHP unserialize().
Tuần tự hóa là quá trình chuyển hóa dữ liệu trở thành dạng plain string, và chức năng không tuần tự hóa giúp chương trình tái tạo một dữ liệu từ string đó.
Nhà nghiên cứu Thomas đã phát hiện ra rằng trong nhiều trường hợp, một kẻ tấn công có thể lợi dụng những hàm rủi ro thấp tấn công các tệp lưu trữ Phar để tạo tấn công giải tuần tự hóa mà không cần dùng hàm unserialize().
Các tệp định dạng lưu trữ Phar trong PHP lưu trữ siêu dữ liệu theo định dạng được tuần tự hóa, những dữ liệu này sẽ không được tuần tự hóa nếu một phép toán của tệp (fopen, file_exists, file_get_contents, etc.) muốn truy cập tệp.
“Điều này đúng cho cả phép toán trực tiếp (như” file_exists “) và phép toán gián tiếp như các hoạt động xảy ra trong quá trình xử lý thực thể bên ngoài trong XML (nghĩa là khi lỗ hổng XXE đang được khai thác)”, Thomas nói.
Cách tấn công giải tuần tự hóa PHP đối với trang WordPress
Trong báo cáo công bố tại hội nghị Black Hat hồi tuần trước, Thomas đã minh họa cách hoạt động của loại tấn công này với các trang WordPress, sử dụng tài khoản người viết để chiếm quyền kiểm soát hoàn toàn máy chủ trang web.
Để khai thác lỗ hổng này thành công, tin tặc chỉ cần tải một tệp lưu trữ Phar có chứa dữ liệu độc hại lên hệ thống tệp trong máy của đối tượng và khiến cho phép toán của tệp truy cập vào đó, sử dụng stream wrapper “phar://”.
Kẻ tấn công còn có thể dùng file ảnh JPEG được chuyển hóa từ một file lưu trữ Phar bằng cách thay đổi 100 byte đầu tiên của file.
“Cách đặt chức năng hình hiển thị (thumbnail) trong WordPress cũng là một lỗ hổng để tin tặc chiếm kiểm soát thông số trong “file_exists” nếu có quyền tải lên và sửa các tập đa phương tiện, gây ra lỗi không tuần tự hóa.”
Một khi hình hiển thị tự tạo được tải lên máy chủ WordPress, kẻ tấn công có thể sử dụng hàm khác để biến file ảnh mới tải lên đó thành file lưu trữ Phar bằng cách sử dụng stream wrapper “phar://”, sau đó dẫn tới thực thi mã tùy ý khi chương trình giải tuần tự hóa siêu dữ liệu.
Theo tài liệu tư vấn, “lỗ hổng này tồn tại cho quá trình giải tuần tự hóa dữ liệu là file ảnh không an toàn, sau được xử lí thông qua stream wrapper “phar://” trong hàm “wp_get_attachment_thumb_file” của đoạn mã “/wpincludes/post.php”.”
“Kẻ tấn công được xác thực từ xa với quyền tạo/sửa bài viết WordPress có thể tải lên một tệp ảnh độc hại và thực thi mã PHP tùy ý trên hệ thống bị tấn công.”
Thomas đã báo cáo lỗ hổng này cho đội bảo mật của WordPress đầu năm ngoái, và công ty cũng đã ghi nhận vấn đề này. Tuy nhiên bản vá cũng chưa xử lí vấn đề triệt để.
Thomas cũng đã báo cáo lỗ hổng của Typo3 vào ngày 9 tháng 6, và công ty này đã xử lí vấn đề trong các phiên bản 7.6.30, 8.7.17 và 9.3.
Để xem thêm thông tin về lỗ hổng này, bạn có thể xem tài liệu được Secarma công bố.
THN