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

0
187

Plugin ThemeGrill Demo Importer có hơn +100.000 cài đặt và được sử dụng để nhập dữ liệu demo cho các giao diện của ThemeGrill chỉ bằng một cú nhấp chuột.

Trong các phiên bản từ 1.3.4 đến 1.6.1, có một lỗ hổng bảo mật cho phép tin tặc có thể xóa toàn bộ cơ sở dữ liệu của website WordPress mà không cần bất kỳ sự xác thực nào. Tuy nhiên điều kiện tiên quyết là bạn đang sử dụng một giao diện được phát triển bởi ThemeGrill.

Chi tiết kỹ thuật

Khi sử dụng một giao diện được phát triển bởi ThemeGrill đi cùng với plugins ThemeGrill Demo Importer thì plugins này sẽ load file /includes/class-demo-importer.php để hook hàm reset_wizard_actions vào admin_init trên dòng 44.

Tuy nhiên một điều hết sức nguy hiểm là hàm này có thể được chạy thông qua /wp-admin/admin-ajax.php mà không yêu cầu người dùng phải xác thực quyền, điều đó có nghĩa bất kỳ ai cũng có thể chạy hàm này mà không cần phải biết thông tin đăng nhập vào wp-admin.

Hàm reset_wizard_actions trông hơi giống như sau:

public function reset_wizard_actions() {
		global $wpdb, $current_user;

		if ( ! empty( $_GET['do_reset_wordpress'] ) ) {

			///

			if ( 'admin' != $current_user->user_login ) {
				$user = get_user_by( 'login', 'admin' );
			}

			if ( empty( $user->user_level ) || $user->user_level < 10 ) {
				$user = $current_user;
			}

			// Drop tables.
			$drop_tables = $wpdb->get_col( sprintf( "SHOW TABLES LIKE '%s%%'", str_replace( '_', '\_', $wpdb->prefix ) ) );
			foreach ( $drop_tables as $table ) {
				$wpdb->query( "DROP TABLE IF EXISTS $table" );
			}

			// Installs the site.
			$result = wp_install( $blogname, $user->user_login, $user->user_email, $blog_public );

			// Updates the user password with a old one.
			$wpdb->update(
				$wpdb->users,
				array(
					'user_pass'           => $user->user_pass,
					'user_activation_key' => '',
				),
				array( 'ID' => $result['user_id'] )
			);

			// Set up the Password change nag.
			$default_password_nag = get_user_option( 'default_password_nag', $result['user_id'] );
			if ( $default_password_nag ) {
				update_user_option( $result['user_id'], 'default_password_nag', false, true );
			}

			///

			// Update the cookies.
			wp_clear_auth_cookie();
			wp_set_auth_cookie( $result['user_id'] );

			// Redirect to demo importer page to display reset success notice.
			wp_safe_redirect( admin_url( 'themes.php?page=demo-importer&browse=all&reset=true' ) );
			exit();
		}
	}

Ở đây hàm reset_wizard_actions đã không có kiểm tra xác thực và chỉ cần có tham số do_reset_wordpress trong URL là có thể chạy hàm và có thể xoá sạch toàn bộ cơ sở dữ liệu của website.

Bản vá lỗi

Bản vá có thể được tìm thấy ở đây nhà phát triể đã thêm kiểm tra current_user_can (‘Manage_options’) vào phương thức reset_wizard_actions để tiến hành kiểm tra quyền trước khi thực hiện hành động.

plugins ThemeGrill Demo Importer

Kết luận

Đây là một lỗ hổng nghiêm trọng và có thể gây ra một thiệt hại đáng kể. Chính vì vậy nếu bạn đang sử dụng giao diện của theme ThemeGrill hãy ngay lập tức update plugins này lên bản mới nhất hoặc xoá bỏ nó nếu không dùng tới. Ngoài ra các bạn có thể xem thêm 11 cách bảo vệ WordPress Admin khỏi các cuộc tấn công của HOSTVN.

Nguồn webarxsecurity

email-business-leaderboard-blog-v3.png
Subscribe
Notify of
guest
0 Comments
Inline Feedbacks
View all comments