Инъекция в php-файлах. Помогите разобраться, как пролезла.

Тема в разделе "Сайт умер, лежит и не дышит", создана пользователем John Smith, 13.02.2008.

  1. Offline

    John Smith Недавно здесь

    Регистрация:
    13.02.2008
    Сообщения:
    13
    Симпатии:
    0
    Приветствую, други! Принимайте новичка. ;)

    Итак, что имеем.
    1. Виртуальный хостинг.
    2. Apache 1.3.37, MySQL 5.0.27, PHP 5.2.4.
    3. Joomla! 1.0.12 Stable [ Lavra Edition 2007]
    4. Установлены расширения (кроме тех, что в LE):
    - AlphaContent 3.0;
    - Easy FAQ 1.0 rc 2;
    - Joom!Fish 1.7;
    - мамбот dynamicImage.
    5. Права на папки и файлы 755 и 644 соответственно.
    6. Все установки PHP соответствуют рекомендуемым (все зеленое).
    7. Session save path: none. Соответственно, не доступен на запись. (только что обнаружил - чем это чревато?).
    8. Регистрации пользователей на сайте нет и не будет - все материалы добавляются админом.
    Возможно, что-то забыл указать...

    Теперь ситуация.
    Вечером все работало, утром сайт сыплет ошибками типа (%папка% - замена имени реальной папки :)):
    Код (CODE):
    1. PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/%папка%/public_html/globals.php:136) in /home/%папка%/public_html/includes/joomla.php on line 697
    2. PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/%папка%/public_html/globals.php:136) in /home/%папка%/public_html/mambots/system/jfdatabase.systembot.php on line 195
    3. PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/%папка%/public_html/globals.php:136) in /home/%папка%/public_html/mambots/system/jfdatabase.systembot.php on line 196
    4. PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/%папка%/public_html/globals.php:136) in /home/%папка%/public_html/mambots/system/jfdatabase.systembot.php on line 197
    5. PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/%папка%/public_html/globals.php:136) in /home/%папка%/public_html/includes/joomla.php on line 1414
    6. PHP Warning:  Cannot modify header information - headers already sent by (output started at /home/%папка%/public_html/globals.php:136) in /home/%папка%/public_html/index.php on line 250

    При попытке зайти в админку, пишет "Требуется войти заново".
    Залез на сайт по ФТП, скачал его себе локально, начал рассматривать файлы, на которые ругается.
    По детальном рассмотрении, обнаружил в каждом из файлов .php в корне сайта дописанный к файлу скрипт. Скрипт зашифрован. Начинается с:
    Код (CODE):
    1. <!-- [ 64f3c3729b58cf49431c41e3028afb06 ] --><script>eval(unescape

    Дальше зашифровано (не знаю, можно ли его тут разместить - если да, то подскажите, как).
    Вычистил все файлы, поклал их на место, и все вернулось как и было. Всей процедуры на полчаса - благо дело, только корень заражен.
    После этого сменил все пароли.
    Хостер логов модификации файлов не ведет. И вести их отказывается. Грит, такая функция не предусмотрена.

    Теперь, собственно, вопросы:
    1. Как расшифровать скрипт? Чем их обычно шифруют? Хочу понять, что он делает... или уже сделал.
    2. В логах подозрительных запросов, типа mosConfig, _REQUEST и т.п., не нашел. Куда еще копать?
    3. Что еще можно сделать для отслеживания того, кто это сделал. Жажду расправы. B)

    P.S. Вот что забыл добавить. Рядом с Джумлой, в папке /home/%папка%/public_html/forum стоит phpBB3. С ним абсолютно такая же картинка. Все .php в корне были заражены. Аналогично вычистил, и все заработало.
     
    Последнее редактирование: 13.02.2008
  2.  
  3. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    Во-первых уломать хостера сделать register_globals = off любой ценой и еще можно allow_url_fopen = false тоже.

    1)Руками, долго и не интересно. Считай что он какую-то дырку в IE использует, не прогадаешь.
    2)Логи надо смотреть тогда руками. И правильно хостер делает, что не ведет логов модификации, это же повеситься можно ему. Ты примерно знаешь когда тебя сломали - вот сиди и смотри. Без этого трудно что-либо сказать.
    3)Да ничего ты не сделаешь, по сути. Тебя сканят с таких же сломанных сайтов.

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

    John Smith Недавно здесь

    Регистрация:
    13.02.2008
    Сообщения:
    13
    Симпатии:
    0
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    RG и так выключены, изначально.
    А allow_url_fopen - это что? Ушел копать...
    Считать не хочу - хочу знать. А IE я не пользую. Правда, я - не все.
    Я логи и смотрел руками. Сидел и смотрел. Только подозрительного ниче не выявил. Я логи в эксель загнал, автофильтр включил, сверял действия тех, кто в тот момент (-2 часа) на сайте был, и т.д. Толку мало - в логах только GET и POST. Посты просмотрел каждый, геты - на подозрительные запросы проверил - ноль.
    Вот был бы лог изменений файлов - было бы проще. У меня то движок собран, я его не меняю... Не было бы проблем вычислить с какого IP правили файлы. А так... Хостер не прав.
    Интересно, как сканят. Т.е. по какому протоколу? Если ХТТП, то в логе это однозначно будет. Если в логе нет - знач, дыра в хостинге. ИМХО. Поправьте, если не прав.
    Та оно то понятно - обновиться, это общий рецепт. Типа, заболел - кушай витамины. ;)
    Тем сейчас и занимаюсь, но этого, ИМХО мало...

    Начал постепенно расшифровывать тот скрипт, что к попе пхп прицепился. В скрипте прописана функция декрипта длинной строки, которая там же и вложена. Ну, типа:
    Код (CODE):
    1. function func1(param1)
    2.   {
    3.     function func2(param2)
    4.       {
    5.         тут какие-то действия
    6.       }
    7.     тут еще какие-то действия
    8.   }
    9. func1('%32%32%38%30%37%30_и_так_далее_еще_пару_килобайт');

    Это я общую архитектуру описал. Теперь ищу ПО, которое позволит мне это дело выполнить. Запускать в браузере стремно как-то.
     
  5. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    > Не было бы проблем вычислить с какого IP правили файлы.
    Это физически не возможно.

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

    Может и через хостера, но тогда бы еще кучу клиентов поломали бы. Есть такая информация?
     
  6. tin
    Offline

    tin Недавно здесь

    Регистрация:
    22.11.2007
    Сообщения:
    126
    Симпатии:
    2
    Пол:
    Мужской
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    Dead Krolik,
    John Smith,
    Люди пожалуйста отпишитесь на этом топе до конца что и как закончилось
    У меня на хосте 197 сайтов политело по пошожим признакам Я правдо просто все переустановил но причины и следствия очень знать хочу
     
  7. Offline

    John Smith Недавно здесь

    Регистрация:
    13.02.2008
    Сообщения:
    13
    Симпатии:
    0
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    Это Вы, извините, о чем? Физически невозможно отследить, с какого IP редактировали configuration.php? Не сочтите за труд, объясните, почему?
    Я ожидал этого ответа. :)
    По сути, дело в том, что Джумлу это тоже зацепило. Заметьте, корень Джумлы и корень форума. А это ведь не единственные папки с пхп-шными файлами. Это и смущает.
    Более того, в пользу автолома говорит, так-же, и то, что сайт не дефейснут, БД живая, в конце файлов скрип дописан на расстоянии 6 или 7 табуляций от конца файла, но везде одинаково... что-то еще было, сейчас не вспомню.
    Но ведь если сканили, в логе должны были остаться следы?! Может быть, конечно, что я недостаточно внимателен, только ничего не нашел.
    Ошибки в лог ошибок посыпались в определенное время, скажем, 1:30. Знач, какой-то пользователь зашел на сайт, и у него началась бяка. Значит, скрипт уже был в файлах. От этого момента (1:30) и назад пересмотрел каждую строку, минут на 15, наверное, и дальше поверхностно.
    Может, но такой информации, к сожалению нет.
    Я, как скрипт наконец разберу, отпишу, чего нашел. Самому интересно.
    Оффтопик (не в тему) - жми сюда!


    P.S. Посоветуйте что-нибудь, чтоб запустить JavaScript без браузера, и с возможностью трассировки. Или, хотя-бы, просто трассировку.
     
  8. tin
    Offline

    tin Недавно здесь

    Регистрация:
    22.11.2007
    Сообщения:
    126
    Симпатии:
    2
    Пол:
    Мужской
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    >>Я, как скрипт наконец разберу, отпишу, чего нашел. Самому интересно.
    Врядли мой сервер в крыму
     
  9. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    >Это Вы, извините, о чем? Физически невозможно отследить, с какого IP редактировали configuration.php? Не сочтите за труд, объясните, почему?
    Предложите механизм. Вообщем и целом такая постановка вопроса звучит ... ммм ... бредово, уж простите. Если упираться в конкретные сервисы, например ФТП, то мы приезжаем к конкретным вещам о том, что программа фтп-сервер ведет логи, что вот мол кто-то заходил. Может быть конкретная программа демон ведет логи модификаций (что вряд ли). Но это отдельно взятый сервис ФТП. А вообщем сказать "этот файл меняли с этого IP" - бред.

    Объяснил? :)
     
  10. Offline

    John Smith Недавно здесь

    Регистрация:
    13.02.2008
    Сообщения:
    13
    Симпатии:
    0
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    Отвечаете вопросом на вопрос? Оригинально...;)
    Да ничего.
    Я прошу пардону, но "физически невозможно" и нецелесообразно - заметно различающиеся понятия, не правда ли? Здесь Вы приводите аргументы в пользу того, что это нецелесообразно. Вопрос же был касательно "физической невозможности".
    Что до нецелесообразности - я, возможно, неясно выразился. Хостер не прав не в том, что не парсит все логи на предмет модификаций файлов, а в том, что никакие логи доступа по ftp не дает.
    Почему речь зашла о логе модификации файлов. Мне представляется, что демону, который пишет логи, можно указать степень детализации этих логов. И, так-же, допускаю, что ему можно указать - писать в лог только операции, связанные с модификацией (создание, удаление, переименование, и т.п.) - операции чтения в лог не писать. Это в случае, если хостер желает сэкономить ресурс.
    Идеально, конечно, полный лог со всей ерундой. Только я никакого не видел. И, судя по всему, не увижу уже...
    А вобщем никто и не просит. Я ведь не прошу хостера делать мою работу - прошу только, чтоб свою сделал.
    Не-а. :no: :)
     
  11. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    Оффтопик (не в тему) - жми сюда!
     
  12. Offline

    John Smith Недавно здесь

    Регистрация:
    13.02.2008
    Сообщения:
    13
    Симпатии:
    0
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    Оффтопик (не в тему) - жми сюда!

    А вообще, мы что-то сильно отклонились от темы. Я позволю себе напомнить свои вопросы (несколько измененные):
    1. Как расшифровать скрипт? Этот вопрос уже немного преобразовался - как выполнить скрипт в изолированной области памяти? Это будет проще, чем его расшифровывать.
    2. Можно ли как-либо силами движка протоколировать потенциально небезопасные действия? Вроде где-то натыкался на какой-то модуль...

    P.S. Dead Krolik, заходите почаще. Вы - интересный собеседник. :)
     
  13. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    1)Для фаерфокса есть какой-то отладчик яваскрипт. Можно при помощи него попробовать.
    2)Ну что понимается под такими действиями. Иногда такие действия происходят вообще ДО запуска скрипта.

    Оффтопик (не в тему) - жми сюда!
     
  14. Offline

    John Smith Недавно здесь

    Регистрация:
    13.02.2008
    Сообщения:
    13
    Симпатии:
    0
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    Пробовал. Еще до того, как спрашивать. Чего-то трэйсить не получается. Может, не разобрался...
    Вы только не подумайте, что я издеваюсь - это я для общего понимания расписываю.
    Любые действия можно разделить на два типа: операции чтения, и операции записи. Так вот, все операции записи являются потенциально небезопасными.

    Оффтопик (не в тему) - жми сюда!
     
  15. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    Оффтопик (не в тему) - жми сюда!
     
  16. Offline

    John Smith Недавно здесь

    Регистрация:
    13.02.2008
    Сообщения:
    13
    Симпатии:
    0
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    Оффтопик (не в тему) - жми сюда!

    Как это говорил боевой генерал Лебедь - каждый мнит себя стратегом, видя бой со стороны.
    Вместо того, чтоб рассказывать, как тяжела жизнь хостера, лучше посоветуйте, как избежать лома в дальнейшем, и как вычислить того, кто ломал? Или Вы предлагаете, проводя аналогию, каждый раз вставлять разбитое стекло, вместо того, чтоб поймать хулигана, и начистить ему репу? B)
     
  17. tin
    Offline

    tin Недавно здесь

    Регистрация:
    22.11.2007
    Сообщения:
    126
    Симпатии:
    2
    Пол:
    Мужской
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    Никак не найти того кто ломал если не ЛОХ какой нибуть случайно
    Банки даже закладывают определенный бюджет в месяц чтоб отдавать тем кто их ломает
    Так как нийти их стоит дороже
     
  18. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    Я уже говорил - единственный механизм который есть - это логи. Как апача, так и фтп сервера. Зная дату модификации файлов которые заражены можно примерно вычислить период в который творились темные дела. Если в логах ничего подозрительного нет - значит это был барабашка внутри хостера. Или давно уже залитый скрипт во время предыдущего взлома, который тогда не был замечен.
     
  19. Offline

    John Smith Недавно здесь

    Регистрация:
    13.02.2008
    Сообщения:
    13
    Симпатии:
    0
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    О! Так а я о чем твержу!? Я об этом и говорил все время.
    Ж в том, что логов ФТП нету! Вообще!.. Хостер сказал, нет, и не будет.

    P.S. Появился конструктив в нашей беседе. Это радует. Спасибо. ;)
     
  20. Dead Krolik
    Offline

    Dead Krolik Недавно здесь => Cпециалист <=

    Регистрация:
    13.04.2007
    Сообщения:
    3 685
    Симпатии:
    101
    Пол:
    Мужской
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    Логи апача должны вестись, иначе тьфу это а не хостер. Но они не всегда смогут помочь, потому что там можно только GET запросы в чистую увидеть. Что летит в POST при всем желании не поймаешь.
     
  21. Offline

    John Smith Недавно здесь

    Регистрация:
    13.02.2008
    Сообщения:
    13
    Симпатии:
    0
    Ответ: Инъекция в php-файлах. Помогите разобраться, как пролезла.

    Вы читаете то, что я пишу? :O
    Логи апача есть, логов фтп нету. Логи апача я перечитал построчно.
    Теоретически и ГЭТ может иметь деструктивный запрос к какому-либо компоненту, но этого не было.
    А ПОСТов в там было всего 3-4 штуки, и подозрения они не вызывали.
     

Поделиться этой страницей

Загрузка...