Home WordpressWordPress cơ bản Cảnh báo lỗ hổng bảo mật trên plugins Duplicator

Cảnh báo lỗ hổng bảo mật trên plugins Duplicator

by admincp


Một lỗ hổng bảo mật nghiêm trọng đã được phát hiện trên plugins Duplicator – Plugins backup cho WordPress trong thời gian gần đây.

Một lỗ hổng bảo mật nghiêm trọng đã được phát hiện trên plugins Duplicator – Plugins backup cho WordPress trong thời gian gần đây. Lỗ hổng này có thể gây ảnh hưởng tới hơn 1 triệu website đang cài đặt và sử dụng plugins này.

Lỗ hổng File Download

Plugin Duplicator giúp quản trị viên website 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 vào kho lưu trữ cloud. Khi quản trị viên tạo một bản sao mới, Trình sao chép cho phép họ tải xuống các file backup đượ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ị của plugins Duplicator. Mỗi nút tải xuống kích hoạt một cuộc gọi đến trình xử lý AJAX của WordPress với hành động sao chép và tải xuống tập tin, cho biết vị trí của tệp sẽ được tải xuống. Khi được nhấp, tập tin được yêu cầu được tải xuống và người dùng không cần phải 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 nhận giới hạn các filepath được tải xuống. Tham số tệp được truyền qua 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 tin trong mã nguồn bằng cách gửi các giá trị như ../../../file.php để điều hướng trong toàn bộ cấu trúc file của máy chủ.

Ngoài hành động AJAX, lỗ hổng tương tự cũng tồn tại trong hàm duplicator_init() được gọi bởi WordPress hook.

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 nối vào init, nên 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ỳ file nào trong mã nguồn bằng cách thêm chuỗi truy vấn vào bất kỳ đường dẫn 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 tin và yêu cầu ID cũng như hàm băm phù hợp để cho phép tải xuống tệp. Hàm duplicator_init() đã bị xóa hoàn toàn.

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 file backup cũng như file wp-config.php chứa thông tin kết nối database của website. Từ đó chúng có thể tấn công vào database 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 rằng đâ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à update lên phiên bản mới nhất.

Kết luận

Plugins Duplicator là một plugins tạo backup cho website WordPress rất phổ biến, theo thống kê nó có hơn một triệu lượt cài đặt và sử dụng. Đây cũng không phải là lần đầu tiên plugins này dính lỗi bảo mật nghiêm trọng dẫn đến tin tặc tấn công và chèn mã độc vào website. Để bảo vệ website của bạn hãy lập tức update plugins lên phiên bản mới nhất hoặc bạn có thể tham khảo cách dùng một plugins backup khác qua Hướng dẫn sao lưu trang web WordPress lên Google Drive của VINASTAR.

Link gốc: https://www.wordfence.com/blog/2020/02/active-attack-on-recently-patched-duplicator-plugin-vulnerability-affects-over-1-million-sites/

Nguồn bài viết được sưu tầm trên internet

You may also like

Leave a Comment