Một lỗ hổng bảo mật nghiêm trọng đã được phát hiện trong plugin Duplicator – Plugin sao lưu cho WordPress gần đây.
Một lỗ hổng bảo mật nghiêm trọng đã được phát hiện trong plugin Duplicator – Plugin sao lưu cho WordPress gần đây. Lỗ hổng này có thể ảnh hưởng đến hơn 1 triệu trang web đang cài đặt và sử dụng plugin này.
Lỗ hổng tải xuống tệp
Trình sao chép plugin giúp quản trị viên trang web di chuyển và sao chép các trang web WordPress. Một phần của chức năng này liên quan đến việc xuất cơ sở dữ liệu và nội dung tệp sang lưu trữ đám mây. Khi quản trị viên tạo một bản sao mới, Duplicator cho phép họ tải xuống các tệp sao lưu được tạo trong bảng điều khiển WordPress.
Điều này được thực hiện thông qua một yêu cầu AJAX trong giao diện quản trị plugin Duplicator. Mỗi nút tải xuống sẽ kích hoạt một lệnh gọi tới trình xử lý AJAX của WordPress với hành động sao chép và tải xuống tệp, cho biết vị trí của tệp sẽ được tải xuống. Khi được nhấp vào, tệp được yêu cầu sẽ được tải xuống và người dùng không cần rời khỏi hoặc tải lại trang hiện tại của họ.
public static function duplicator_download() { $file = sanitize_text_field($_GET['file']); $filepath = DUPLICATOR_SSDIR_PATH.'/'.$file; // Process download if(file_exists($filepath)) { // Clean output buffer if (ob_get_level() !== 0 && @ob_end_clean() === FALSE) { @ob_clean(); } header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.basename($filepath).'"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($filepath)); flush(); // Flush system output buffer try { $fp = @fopen($filepath, 'r'); if (false === $fp) { throw new Exception('Fail to open the file '.$filepath); } while (!feof($fp) && ($data = fread($fp, DUPLICATOR_BUFFER_READ_WRITE_SIZE)) !== FALSE) { echo $data; } @fclose($fp); } catch (Exception $e) { readfile($filepath); } exit; } else { wp_die('Invalid installer file name!!'); } }
Thật không may, hành động tải xuống đã được đăng ký thông qua wp_ajax_nopriv_ và có thể truy cập mà không cần xác thực. Điều tồi tệ hơn là hoàn toàn không có xác thực giới hạn cho các đường dẫn tệp đã tải xuống. Tham số tệp được truyền sanitize_text_field và được thêm vào hằng số DUPLICATOR_SSDIR_PATH. Kẻ tấn công có thể truy cập và tải xuống các tệp trong mã nguồn bằng cách gửi các giá trị như ../../../file.php để điều hướng qua toàn bộ cấu trúc tệp của máy chủ.
Ngoài hành động AJAX, lỗ hổng tương tự tồn tại trong hàm replicator_init () được gọi bởi hook WordPress.
function duplicator_init() { if (isset($_GET['action']) && $_GET['action'] == 'duplicator_download') { $file = sanitize_text_field($_GET['file']); $filepath = DUPLICATOR_SSDIR_PATH.'/'.$file; // Process download if(file_exists($filepath)) { // Clean output buffer if (ob_get_level() !== 0 && @ob_end_clean() === FALSE) { @ob_clean(); } header('Content-Description: File Transfer'); header('Content-Type: application/octet-stream'); header('Content-Disposition: attachment; filename="'.basename($filepath).'"'); header('Expires: 0'); header('Cache-Control: must-revalidate'); header('Pragma: public'); header('Content-Length: ' . filesize($filepath)); flush(); // Flush system output buffer try { $fp = @fopen($filepath, 'r'); if (false === $fp) { throw new Exception('Fail to open the file '.$filepath); } while (!feof($fp) && ($data = fread($fp, DUPLICATOR_BUFFER_READ_WRITE_SIZE)) !== FALSE) { echo $data; } @fclose($fp); } catch (Exception $e) { readfile($filepath); } exit; } else { wp_die('Invalid installer file name!!'); } } } add_action('init', 'duplicator_init');
Vì nó được kết nối trong đó, chức năng này được thực thi trên mỗi lần tải trang WordPress mà không cần xác thực. Điều này có nghĩa là kẻ tấn công có thể tải xuống bất kỳ tệp nào trong mã nguồn bằng cách thêm chuỗi truy vấn vào bất kỳ liên kết nào trên trang web.
Cả hai trường hợp dễ bị tổn thương này được vá trong phiên bản 1.3.28. Hành động AJAX đã được cập nhật để xác thực tên tệp và yêu cầu ID và mã băm phù hợp để cho phép tải tệp xuống. Hàm replicator_init () đã bị xóa hoàn toàn.
Những kẻ tấn công đánh cắp thông tin cơ sở dữ liệu
Với lỗ hổng này, kẻ tấn công có thể dễ dàng tải xuống tệp sao lưu cũng như wp-config.php Chứa thông tin về kết nối cơ sở dữ liệu của trang web. Từ đó, chúng có thể tấn công cơ sở dữ liệu và chiếm quyền điều khiển website cũng như chèn mã độc vào website của bạn.
Có thể nói đây là một lỗ hổng bảo mật cực kỳ nguy hiểm. Vì vậy, nếu bạn đang sử dụng Duplicator hãy ngay lập tức kiểm tra và cập nhật phiên bản mới nhất.
Sự kết luận
Plugins Duplicator là một plugin sao lưu WordPress rất phổ biến, nó có hơn một triệu lượt cài đặt và sử dụng theo thống kê. Đây không phải là lần đầu tiên plugin này gặp lỗi bảo mật nghiêm trọng dẫn đến việc bị hacker tấn công và chèn mã độc vào website. Để bảo vệ trang web của bạn, hãy cập nhật ngay plugin lên phiên bản mới nhất hoặc bạn có thể tham khảo cách sử dụng plugin sao lưu khác thông qua hướng dẫn sao lưu trang web WordPress lên Google Drive của chúng tôi. HOSTVN.
Liên kết gốc: https://www.wordfence.com/blog/2020/02/active-attack-on-recently-pished-duplicator-plugin-vulnerability-affects-over-1-million-sites/