LinuxForum.Fans
Тема

Найти в файлах строку и удалить ее

Автор: makden 8 сообщений 2005 просмотров
#284983

Доброе вреся суток.
У меня возникла такая проблема, гадкий вирус заразил все файлы index.php
в виде такого кода (кусоче от него )

text

<? eval(base64_decode('aW5pX3NldCgnZGlzcGxheV9lcn.....NDQ0KTsKCX0=')); ?>

И так на всех страницах. А их больше 200-от
(данный код переписывает .htaccess файл под свои нужды)
что еще примечательно, находится он на 1ой строке в файле.


Есть ли возможноть каким нибудь образом пробежаться по всем директориям и удалить первую строку в файе или заменить (удалить) по регулярному выражению

например с возмжностью grep и sed

#285009

Извините за оффтоп, но как это произошло???

#285094

Если вы про заражение сайта
Ну сайт не мой, просили решить проблему,
а когда дали доступ в виде паролей 12345
то как то и вопросы отпали "как это произошло"

#285096

Скиньте куда-либо пару-тройку подобных файлов целиком.

#285153

Вот файлик прямо с сайта

lenoblaststroy.ru/templates/in.txt

Это содержимое одного из индексовских файликов. А такой файл в каждом каталоге.

#285170

Здесь описано решение проблемы очень похожей на вашу. Пару «буковок» в описании сигнатуры надо будет всё же изменить.

#285191

Ахренеть, надо свои файлы на серваке посмотреть... Но вообще там такие права доступа...Я понял, надо права доступа от пользователя/группы apache выставить только на чтение...

#285260

Не силён в sed и awk, посему предлагаю вариант на Python:

text

#!/usr/bin/env python
#_*_ coding: utf-8 _*_

import os

TEMPLATE = 'aW5pX3NldCgnZGlzcGxheV9lcn'

def clean(fname): f = open(fname, 'r') lines = f.readlines() for line in lines: if TEMPLATE in line: lines.remove(line) break f = open(fname, 'w') f.writelines(lines) f.close()

dirTree = os.walk('.') for dirPath, dirNames, Files in dirTree: for File in Files: if File[-3:] == 'php': FullPath = os.path.join(os.path.abspath(dirPath), File) print 'Cleaning %-23s .... ' % File, clean(FullPath) print ' Done'

Скрипт обходит все подкаталоги и удаляет из файлов .php строки, содержащие подстроку TEMPLATE. Скрипт необходимо закинуть в корневой каталог сайта.
ЗЫ. По-идее должен работать шустрее Bash`a.
ЗЗЫ. Скрипт особо не тестировался! Перед запуском необходимо сделать резервную копию данных!!

Войдите или зарегистрируйтесь, чтобы ответить.