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

Как рекурсивно удалить внедренный код между двумя строками в файлах PHP с помощью SSH

У нас есть собственный сервер разработки под Linux (Ubuntu). Несколько дней назад был внедрен подозрительный код. Напомню, что у нас более 300 проектов. Код рекурсивно внедряется почти в каждый файл.

Мы попробовали Dreamweaver в Windows в локальной сети для поиска и замены, но нашли другую причину, которая не работает с DreamWeaver;

Внедренный код, запускающий тег PHP:

<?php $ldtxxk

и между ними много зашифрованного кода, но все файлы имеют разный код, НО заканчивающийся тегом PHP, заканчивающимся TAG. Таким образом, из-за полностью измененного кода во всех файлах мы не можем очистить его с помощью какого-либо программного обеспечения для поиска и замены.

Итак, нам нужна какая-то команда SED с регулярным выражением в SSH, которая может выполнять рекурсивную работу с конкретным директором для

найти из

<?php $ldtxxk

к

?>

и удалите все, включая начальные и конечные теги PHP.

Заранее спасибо.

Сначала попробуйте что-нибудь подобное. Он удаляет (d) текст между двумя шаблонами (разделенными косой чертой):

sed '/<?php $ldtxxk/,/?>/d' file_with_injected_code.php

Если результат выглядит хорошо, вы можете вставить «-i», чтобы заменить содержимое файла:

sed '/<?php $ldtxxk/,/?>/d' file_with_injected_code.php

Затем вы можете объединить команду sed с командой find для рекурсивного поиска файлов php, начинающихся в рабочем каталоге:

find -name '*.php' -exec sed -i '/<?php $ldtxxk/,/?>/d' '{}' \;

Если вы исправили файлы php, вам следует выяснить, как злоумышленник получил доступ. Проверьте файлы журнала!

Доступна ли ваша машина из Интернета?

  • У вас есть FTP-сервер? Возможно, со слабыми паролями? Рассмотрите возможность изменения этих паролей или использования SFTP с открытыми ключами.
  • У вас есть уязвимое приложение на php? Возможно, злоумышленник использовал его для загрузки php-скрипта. Переместите папку загрузки за пределы корневого веб-сайта, запретите загрузку файла php или удалите разрешение для файлов, чтобы они не интерпретировались / не доставлялись веб-сервером.