Назад | Перейти на главную страницу

Как заменить / удалить HTML-код из сотни файлов?

Наш сервер был атакован, и мне нужно удалить вредоносный код, который был внедрен во множество файлов php и html.

Как хорошо заменить код из нескольких файлов? Я пробовал использовать этот скрипт: https://github.com/terry81/Malicious-Web-Scripts-Search/commit/2cdb95adfb667455080468ccaa3e58c822c2bd32 но я не могу заставить его работать. Пожалуйста помоги!

Sed, Perl и т. Д. Могут делать то, что вы хотите. Тем не мение...

я буду не Предположим, что кто-то смог внедрить вредоносный код во множество сценариев и не полностью владеет ящиком. Конечно, вы избавитесь от вредоносного кода в HTML, но как насчет ботнета, который запускается из вашего компьютера?

Стандартная процедура - вытащить ящик из сети и провести полное вскрытие перед его повторным подключением. По крайней мере, если вы сохраняли контрольные суммы в своих резервных копиях, проверьте контрольные суммы всей файловой системы.

Вероятно, безопаснее всего будет выполнить восстановление из последних удачных резервных копий - но это только в том случае, если вы сможете точно определить дату и время первоначального взлома из архивных журналов и т. Д.

Есть много способов найти и заменить текст в нескольких файлах. Сед - фаворит, но правильный ли это инструмент во многом зависит от того, как выглядят ваши файлы. Вы можете привести пример вредоносного кода в контексте?

Ultra Edit - один из лучших инструментов редактирования. Вы можете погуглить и загрузить пробную версию, чтобы опробовать ее. Если для вашего сервера существует резервная копия, я бы рекомендовал использовать Beyond Compare для анализа и восстановления файлов. обратите внимание, что упомянутые мной инструменты не являются бесплатными.

Связанный вами скрипт кажется довольно простым. Вы можете сделать что-то подобное с помощью следующего однострочника:

find $DIRS -print0 | xargs -0 perl -p -i.bak -e 's/\Qcode to be removed\E//'

Вот $DIRS обозначают каталоги, в которых хранятся ваши файлы, и code to be removed обозначает вредоносный код. В \Q будет цитировать любые специальные символы до \E. Исходные файлы копируются в .bak файлы. Если вы не хотите, удалите .bak, т.е. только -i, но не совмещайте его с -e, т.е. -i -e не -ie.

ВНИМАТЕЛЬНО, ВЫ МОЖЕТЕ УДАЛИТЬ ВАЖНЫЕ МАТЕРИАЛЫ, ЕСЛИ ВЫ ДЕЛАЕТЕ ЭТО НЕПРАВИЛЬНО! СДЕЛАЙТЕ РЕЗЕРВНЫЕ КОПИИ САМИ ПЕРВОЕ

Обновить:

Версия скрипта:

#!/usr/bin/env perl -i.bak
use strict;
use warnings;

my $code = <<'END-OF-MALICIOUS-CODE';
xo=new Date(2010,11,3,2,21,4);t=xo.getSeconds();var huur=[36/t,36/t, ....
END-OF-MALICIOUS-CODE
chomp $code; # remove trailing newline

while (<>) {
    s/\Q$code\E//;
    print;
}

Но это в файл, лучше всего с .pl расширение, например remcode.pl. При желании сделать его исполняемым (chmod +x file.pl), иначе вы должны называть его perl явно:

find $DIRS -print0 | xargs -0 perl remcode.pl

Вы можете выполнить часть поиска, а также код Perl, но это не нужно.

Никаких гарантий! Сначала проверьте это на паре файлов!

Вы можете легко исправить (или полностью испортить) множество файлов с помощью этого:

sudo perl -pi.prev -e 's/bad string/new string/g' /path/to/folder/of/bad/files

Конечно, теперь вам нужно регулярное выражение для сопоставления с плохим кодом, поэтому у вас есть две проблемы.

Он сделает копию каждого файла с расширением .prev в конце, а затем заменит, как показано в исходном файле.

**

  • ВНИМАТЕЛЬНО ПРОВЕРЬТЕ REGEX !!!

**