Стоп зловред

dihlofos-hew

Реально за последние пару месяцев очень много нестандартных ситуаций.
То человек все файлы магазина удалит, то дебилы-паранойики попадаются, то вирусня атакует.

Что делать с дебилами — я не знаю. Чтобы не боятся случайного удаления магазина — надо делать бекапы и бекапы бекапов. А вот что делать с вирусней, я вам сейчас в очередной раз попробую рассказать и у нас выйдут почти звездные войны.

Новая надежда.

Вам заразили магазин, с ваших почтовых ящиков рассылается спам, хостер вас блокирует, шлет гневные письма, происходят переадресации на порно-ресурсы, повышенная нагрузка на ресурсы хостинга и так далее… Бизнес страдает, деньги уходят мимо, нервы ни к черту, вы гадаете на кофейной гуще, кто из ваших конкурентов вас заказал и пьете узбагоин. Не все так плохо! 99% ситуаций поправимы и достаточно быстро. Пытаться выявить первичный источник заражения, найти и залатать дыры — это хорошо, но не всегда представляется возможным, так как это ревизия большого объема кода, а еще и закодированного ионкубом, да и когда злодремучий код рассеялся по всему движку это уже бесполезно, так как дыра везде. Зачастую пересобирать магазин это очень дорого и надо выходить как то из ситуации.

Давайте разберемся с источниками появления заразы. Их несколько:

  • слабые пароли типа admin/admin;
  • дополнения, скачанные неизвестно с каких помоек, а не купленные легально на официальных площадках;
  • слабый дырявый код, написанный профанами, которые не понимают что такое банальное экранирование get-запросов;
  • известные незакрытые уязвимости в самом opencart древних версий,;
  • соседние дырявые проекты на каком нибудь wordpress от 2010 года;
  • ну и нечистые на руку фрилансеры, которые заливают шеллы для страховки, а потом забывают их удалить.

Кому это все надо?
В сети есть масса хакерских группировок и одиночек, ботнеты которых сутками захватывают ресурсы пачками. И мощности этих ресурсов используются как угодно, от скрытого майнинга до рассылки спама. Все это происходит в автоматическом режиме. Пауки злоумышленников нон-стоп сканируют сайты так же как это делает гугл, только гугл не пытается найти в ваших проектах уязвимости и захватить проект на темную сторону ).
Заражение магазина по сути — это болезнь. А лучшее лекарство от болезней — профилактика. Про профилактику поговорим позже, а теперь про лечение…

Империя наносит ответный удар.

Первое что необходимо сделать — изолировать проект в чистое окружение, сменив все-все пароли, фтп, базу, пользователей магазина.

Смотрим и убираем всякий хлам в корне магазина — там должны быть index.php и config.php и все! Никаких info.php! Никаких adminer.php — ничего.

Дальше надо понимать как работает вирусня и каким образом ей подрезать крылья.
Просто так, само по себе, ничего выполнится не может! Вирусня явно где то должна цеплять свой исполняемый код, как правило кроме рассеивания по папкам и файлам доступным на запись происходит внедрение в Index.php и файл .htaccess  — проверяем, чистим.

Запускаем ай-болит, находим все что он нашел в отчете, смотрим и тоже чистим.
Этих манипуляций достаточно для того чтобы восстановить работоспособность магазина и заняться превентивными мерами. Вы же помните, мы не искали особо источник уязвимости. Поздно его искать да и бесполезно. Наша задача ограничить возможность вирусни исполнять какой либо код, внедряемый извне.

Т.е. для того чтобы часть вашего движка начала делать, то что не должна, необходимо сначала залить сторонний зловредный код, а потом его еще и исполнить. А еще это все необходимо сделать в скрытом виде. А для того чтобы запустить какой-либо странный сторонний обфусцированный код в php есть функция eval(). Ваще в php есть масса не очень приятных функций и если вот это вот все:

disable_functions = exec,ini_get,ini_get_all,parse_ini_file,passthru,php_uname,popen,proc_open,shell_exec,show_source,system

Мы можем отключить в php.ini, eval в нем не отключается, для этого нам на помощь приходит suhosin. Это патч к php, который по хорошему вам должен поставить настроить хостер.  У него есть масса полезных фич и кроме отключения eval(), он отлично фильтрует и ограничивает количество post-get данных, шифрует сессии, экранирует все что можно заэкранировать. Вобщем дичайший полезняк. Правда для того чтобы он нормально завелся, надо либо отказаться от части его фукнций, либо долго покурить конфиг.
На самом деле нам достаточно одного disable.eval — все остальное можно выключить, но для паранойиков покопайте. Вобщем пишем хостеру — чтобы вам поставили php с suhosin и включенным disable.eval. Также просим хостера проверить параметры suhosin.post.max_vars и suhosin.get.max_vars, если там будет дефолт — ни одна форма в магазине не сохранится, там должно быть хотя бы 1000.

Проверяем это каким-нибудь тестовым скриптом типа

Если вы все правильно сделали — эта конструкция должна вывалиться в ошибку.
Считайте полдела сделано. Теперь ни одна обфусцированная зараза не сможет выполниться неявным образом.

На всякий случай, страхуемся и вводим логгирование спама, чтобы понять какой скрипт отправляет спам на сервере:

Для того, чтобы найти PHP скрипт, который шлет письма необходимо воспользоваться логированием использования функции mail(). По-умолчанию эта функция отключена, включить её можно добавив в php.ini две строки:

mail.add_x_header = On
mail.log = /var/log/phpmail.log

После внесения изменений в php.ini необходимо перезапустить веб-сервер.
Теперь использование функции mail() скриптами будет логироваться и в /var/log/phpmail.log можно будет узнать какие скрипты отправляют почту.
Также в заголовке письма будет указан отправляющий скрипт.
Пример заголовка:
X-PHP-Originating-Script: 33:ok.php

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

Немного магии:

Идем в конфиг nginx и запрещаем выполнятся всему кроме index.php на морде и в admin.php. Тем самым, опять же если мы чего то не заметили и не удалили, какой-нибудь типа config.inc.php где-нибудь в папках с картинками.
По рекомендациям господина savage4pro — делается это как то так:

Также немножко буфферов и сесурити не помешает:

Ну и почти спокойно спим. Смотрим в логи и радуемся, как пропадают левые post-запросы.

Если вы остались на старом хостинге и старом окружении проверьте свой домен/ip на наличие в спам базах здесь. Если вы там где-то засветились в ручном режиме по каждому ресурсу придется поработать индивидуально.

Ну а теперь еще раз о профилактике:

  • Не работаем из под рута — никогда, все файлы в виртуалхосте должны быть от локального пользователя.
  • Права на файлы/папки — старайтесь пихнуть в минимально возможные.
  • Пароли, пароли и еще раз пароли. Меняем все и постоянно.
  • Логи. Лог ошибок php, лог магазина — должны быть выключенны все.
  • В идеале магазин в принципе должен работать с чистым логом ошибок.
  • Старайтесь не использовать скрипты и дополнения, которые работают не через единую точку входа index.php.
  • Не качаем ничего с вареза.
  • Со всех разработчиков — требуем отчеты о покупках дополнений, а лучше все покупайте на свои аккаунты. Чтобы не рассказывать лупая глазами «а мне поставили, я не знаю откуда это».
  • На серванте убираем phpmyadmin, ftp, меняем порт ssh, ставим двухфакторную авторизацию в панель.
  • Время выполнения скрипта — 30 сек и баста. Все что хотите выполнить долго — запускайте из консоли.
  • Если открыли базу в мир — позаботьтесь о смене порта mysql, который смотрит в мир.
  • Проверяем открытые порты в мир, у вас их должно быть только почта, 80, и ssh.
  • Бекапы. Бекапы всегда и везде. Товар даже если собираетесь редактировать — бекапните базу. SXD вам в зубы.

Врядли в итоге это вас спасет от всех трипперов и геммороев, но спать спокойней станете!

Ну и по этой теме полезно почитать предыдущие посты: как мы защищались от вируса и безопасность opencart.

P.S. У большинства из вас возникнет куча вопросов: что и как и где это все сделать… К сожалению, в рамках одной статьи невозможно рассказать  и описать про все приемы настройки сервера, про настройки конфигов nginx, в которых скажем честно я и сам иногда плаваю. Некоторые рекомендации в состоянии реализовать не только лишь все и понадобится скилл или грамотный саппорт хостинга. Так что если у вас нет скилла, грамотный саппорт хостинга есть у AdminVPS!

 

Хуйнаныр(18)Очко(1)

У Лукоморья дуб зеленый…

addist

Другого названия происходящему, у меня придумать не получилось.

Я вас никогда не просил сделать репосты, и распространить информацию.
Это первый и надеюсь последний раз по такому поводу, но я вас убедительно прошу, мои дорогие читатели, друзья, враги, хейтеры.
Распространите эту статью максимально по своим знакомым у которых есть магазины на Opencart.
Только в моем контакт листе в  скайпе из 200 человек, 10 нашли у себя эту заразу.

Попробую достаточно подробно описать вам всю ситуацию с уязвимостью в дополнениях от Addist и выразить свои догадки, почему так произошло и что делать, чтобы подобная ситуация не повторилась.

Читать далее

Хуйнаныр(81)Очко(32)

Краткое полуношное информбюро

armyanskoe_radio_odessa_ukraina_online (1)

1. Чем больше сталкиваюсь с разными магазинами от суперахуенныхстудийхотьзвездуснебазавашидвестибаксов, тем больше прихожу к мысли, какие мы со Снастиком молодцы, что вовремя отказались от услуг фрилансеров. Спасибо тебе Вафловис, что ты так вовремся пошел на хуй. Из-за чего нам пришлось вспоминать как пропатчить KDE под FreeBSD.

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

2.  Cнастик судя по всему к утру вывалит на гитхабе пререлиз opencart.pro. На сегодня готов код в состоянии, до которого сборку доводят господа с того самого форума. SeoPro + H1 + локализация.

3. Проржал с ХалвНопе, который видимо шастает тут  у меня мелочь по карманам тырить, и увидев мюсли про антималварь. Быстренько подсуетился и вывалил свою поделку.
У нас есть БОЛЬШОЙ ЖИРНЫЙ ОТВЕТ на этот высер, так как подобные кукушата, только и могут что в окно на сиськи подглядывать. А думать им сложно.  К нашей малвари была додумана фича. Которая сделает ее просто мастхев на любом магазине. Самая большая диллема, как ее распространять — вроде борьба с упырями, надо бы бесплатно. С другой стороны евгейские когни стгого возмущаются и скгебут не подецки в глубине души. Скорее всего будет в виде фриваре с донатом.

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

Для тех кто не в теме, в чем суть. Народ берется по дешману делать работу, потом возникают коллизии с клиентом, предоплату не взяли, работы сделали. И вместо того чтобы прийти к обоюдному компромиссу, товарищи, жаждущие своей копеечки на миску китайской лапши, подкладывают несколько специально обученных файлов заказчику, благодаря которым, потом в случае кидка можно наебнуть магазин, а еще лучше получить его в свое распоряжени. И ссылок с него напродавать, или в качестве спам-узла юзать. Вобщем много чего «полезного можно наделать». Базу слить конкурентам продать.  И ладно с ними с шелами. Но сука. Они  их не удаляют. А интернет — сейчас стал очень агрессивный, в сети просто тьма всяких пауков, которые обходят сайты не хуже гуглобота в поисках уязвимостей. И ищут вот такие блеать inc.php, spec.php, ini.php.

За руку пока никого не поймал. Но есть определенная тенденция, после конкретных персонажей, которые побывали на фтп в магазинах. В которых моей ноги до этого не было (хотя я в какой то момент начал уже и себя подозревать).

Т.е. я на 99% уверен, что чудят вполне конкретные товарищи. Но прямых улик — к сожалению нет.

Это я  к чему. А возьмите как друзья, проверьте нет у вас лишних файлов в папках download, image. Почистите в корне все php.info, бекапы баз. файловые бекапы,  запарольте  админки через htpass, не дадим упырям ни единого шанса.

 

p.s. хотел без хуйнаныра написать. Даже блог переименовал. А в итоге про упырей без ебтваюмать не получается. Так что простите, извините.

Хуйнаныр(16)Очко(0)

Безопасность Opencart | Как мы защищались от вируса

safe

В продолжение нашей статьи про атаку на Самку чужого, наконец то появилось время подробно описать что мы сделали, чтобы история не повторилась.

1 — Поменяли абсолютно все пароли. Ftp, базы данных, администраторов магазина.

2 — Добавили в /system/logs файл .htaccess следующего содержания:

<FilesMatch ‘.(php) $’>
Order Allow,Deny
Deny from all
</FilesMatch>

3 — Проверили все права на папки файлы и дали минимальные

4 — Прошлись вручную поиском по всем папкам на которых было 777 нашли все подселенные эксплойты, и убрали их.

5 — Прошлись по всем папкам магазина и нашли входжения base64 и  eval. Это позволило обнаружить еще вагон и тележку всякого хлама.

6 — Насобирали статистику айпи с которых были атаки и заблокировали их в корневом .htaccess

7 — Удалили контроллер admin/controller/tool/backup.php. Это не критичный функционал — без него жить можно.

8 — Запаролили админку через .htaccess как это сделать читаем здесь.

9 — Отключили показ ошибок на уровне сервера. И в настройках магазина.

Этого всего достаточно для того чтобы наш зловред не появился опять.

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

Надо развернуть боевой рабочий сервер с ограниченным доступом, а всю разработку вести на каком нибудь деве.
Нужен Suhosin, Mod-Security, какая нибудь система проверки целостности структуры файлов, в идеале GIT, закрытые доступы к админке и phpmyadmin только по ip, нормальный хостинг, никаких шаредов, и отсутствие в одном аккаунте с боевым магазином соседей типа сайтов на WP. Правильные настройки серверного окружения.

Также сервер должен быть с последними патчами безопасности.

Крайне не помешает SSL-сертификат.

И вот такая система действительно даст какую то надежду, что вас не хакнут, если захотят.

Хуйнаныр(11)Очко(0)