Найти и удалить через SSH? - PullRequest
       13

Найти и удалить через SSH?

2 голосов
/ 16 февраля 2012

Мой веб-сервер был взломан (несмотря на то, что сотрудники службы безопасности сказали, что ничего не было взломано), а бесчисленное количество файлов содержит дополнительную строку кода PHP, генерирующую ссылку на какой-то вьетнамский сайт.

Учитывая, что на моем сервере десятки тысяч файлов, есть ли способ, с помощью которого я могу использовать SSH и удалять эту строку кода из каждого найденного файла?

Пожалуйста, будьте конкретны в своем ответе, я только несколько раз использовал SSH для некоторых базовых задач и не хочу в конечном итоге удалять кучу своих файлов!

Ответы [ 4 ]

2 голосов
/ 16 февраля 2012

Да, несколько строк скрипта сделают это.Однако я не решаюсь дать его вам, как будто что-то пойдет не так, и меня обвинят в том, что я испортил ваш веб-сервер.Тем не менее, решение может быть таким простым:

for i in `find /where/ever -name '*.php'`; do
    mv $i $i.bak
    grep -v "http://vietnamese.web.site" $i.bak >> $i
done

Это находит все файлы *php в /where/ever и удаляет все строки, в которых есть http://vietnamese.web.site.Это делает *.bak копию каждого файла.После того, как вы запустите это, и все будет хорошо, вы можете удалить резервные копии с помощью

find . -name '*.php.bak' -exec rm \{\} \;

Ваша следующая задача - найти нового провайдера, поскольку он не только взломан, но и, очевидно, нерезервное копирование.Удачи.

0 голосов
/ 17 апреля 2015
rm -f cron.php.*

Удалить все файлы в этой папке с именем cron.php. [Whereveryouwant]

0 голосов
/ 29 апреля 2014

Я делаю это следующим образом.Например, чтобы удалить файлы, соответствующие определенному имени или расширению.

rm -rf * cron.php.*

rm -rf * match_string *

, где match_string будет любой строкой.Убедитесь, что между * и именем строки не будет пробела.

0 голосов
/ 16 февраля 2012

Сначала создайте регулярное выражение, соответствующее плохому коду (и только плохому коду), затем выполните

find /path/to/webroot -name \*.php -exec echo sed -i -e 's/your-regex-here//' {} \;

Если все выглядит правильно, удалите echo

...