Yoda

Устранение критических уязвимостей магазинов

Recommended Posts

В последнее время, многие авторы шаблонов, начали поголовно практиковать пагубную технику встраивания целых кусков чужого кода в свои шаблоны, без разбора полетов. В связи с этим, по моим данным, около 10-15% популярных шаблонов и содержат в себе потенциальные уязвимости. 

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

 

Поэтому давайте сделаем наши магазины безопаснее вместе.

 

Вот очень полезная статья с большим набором заплаток от разного рода попыток взлома сайтов. Она правда для WP, но по сути техники взлома не сильно отличаются.

 

https://perishablepress.com/6g/

Для продвинутых пользователей, там все достаточно ясно-понятно. Для новичков, я бы рекомендовал добавить в .htaccess  хотя бы это:

<IfModule mod_rewrite.c>
    RewriteCond %{QUERY_STRING} (eval\() [NC,OR]
    RewriteCond %{QUERY_STRING} (javascript:)(.*)(;) [NC,OR]
    RewriteCond %{QUERY_STRING} (base64_encode)(.*)(\() [NC,OR]
    RewriteCond %{QUERY_STRING} (GLOBALS|REQUEST)(=|\[|%) [NC,OR]
    RewriteCond %{QUERY_STRING} (<|%3C)(.*)script(.*)(>|%3) [NC,OR]
    RewriteCond %{QUERY_STRING} (\\|\.\.\.|\.\./|~|`|<|>|\|) [NC,OR]
    RewriteCond %{QUERY_STRING} (boot\.ini|etc/passwd|self/environ) [NC,OR]
    RewriteCond %{QUERY_STRING} (\'|\")(.*)(drop|insert|md5|select|union) [NC]
    RewriteRule .* - [F]
</IfModule>

Встраивать эту конструкцию необходимо после строки  

RewriteEngine On

После добавления, рекомендую запустить Xenu's

И проверить доступность всех ссылок вашего магазина.

Если появятся страницы с кодом 404 или 500, проведите анализ и удалите исключения из списка, которые мешают нормальному отображению страниц.

 

Подробное описание у меня в блоге.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, toporchillo сказал:

Конкурент не скачает вашу товарную базу

А если:

1. Негодяй оказался среди доверенных людей.

2. Или кто-то из клиентов, получающих ключ, сливает его негодяю.

 

Есть ли возможность организации доступа:

1. по нескольким ключам?

2. и мониторинга доступа?

3. с привязкой ключа к ip-адресу сервера клиента?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
2 часа назад, toporchillo сказал:

Меняете ключ в настройках модуля

Смена ключа не решает описаный проблемный вариант.

 

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

Зачем нужна ваша фишка с ключом? Что она решает?:)

Ну кроме этого, естесственно:

8 часов назад, toporchillo сказал:

я улучшаю безопасность

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ваша мысль ясна. По вашим ответам, максимально приближенным к реальности, напрашивается следующие выводы:

  • Заявленное повышение безопасности по факту не более чем маркетинговый ход, никак оную не повышающий. Обычное решение, позволяющее кастомизировать линк для выгрузки. Которое может создать определенные сложности при случайной смене оператором последовательности добавляемых символов ("ключ").
  • Т.к. линк один и неиндивидуален для каждого из клиентов, секретным его называть нельзя.
  • Тем более это нельзя называть защитой от DDoS-атак, как эффективных, так и малоэффективных. Если "особо упоротый" конкурент располагает информацией о наличии данного линка (и с учётом описанного вами алгоритма формирования линка), его тупо можно сбрутить. В данном случае брутфорс будет считаться DDoS-атакой?  У вас есть защита от брутфорса?

P.S. Александр, я с уважением отношусь к вашим трудам и неоднократно советовал ваши модули пользователям. Я не люблю, когда пытаются дезинформировать пользователей. А разрекламированная вами "фишка" никак не влияет на безопасность, она равносильна плановой смене пароля на админку.
P.P.S. Можете задосить меня тапками, ну или скриншотами с канала Discovery, на ваш выбор:)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
1 час назад, toporchillo сказал:

Назовите адрес вашего интернет-магазина.

В любом из моих магазинов вы получите, в первом варианте - 403 или 404, во втором... ничего не получите, даже после 1000 запросов.

Почему? Если бы я ждал, пока вы из пальца высосите проблему, а потом её героически как бы решите, я просто терял бы время.

1 час назад, toporchillo сказал:

дергать главную страницу

О главной странице речи не было. Дёргать тоже не предлагал. Предлагал перестать дёргать и сделать качественное решение.

1 час назад, toporchillo сказал:

Если ... то магазин защищен от обоих сценариев атаки.

Вы сейчас о каких сценариях пишите?

Если сценарии из первого сообщения, то ваше решение никоим образом не отразится на безопасности ИМ, и выше я написал почему.

Если из последнего, то да, магазин защищен от двух частных случаев чего-то такого, что атакой называть язык не поворачивается. ПС ежедневно атакуют мои сайты:)

1 час назад, toporchillo сказал:

Защита от брутфорса должна реализовываться на уровне сети

Таки от брутфорса или от DDoS?

1 час назад, toporchillo сказал:

dinox, упомянул мой "маркетингговый код"

Ход, а не код. Похвала динокса, равно как и грамоты и ордена выдаваемые им, никоим образом не отражается на безопасности ИМ.

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

1 час назад, toporchillo сказал:

поборнику безопасности Йоде

и ещё нескольким товарищам, чуть было не просрали (что не факт, таки возможно что и просрали) труды многих разработчиков.

 

P.S.

1 час назад, toporchillo сказал:

Командир liveopencart.ru

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

P.P.S.

1 час назад, toporchillo сказал:

И только Модератор форума

Он понял, и давно свои мысли изложил. А вы всё никак не остыните. Отдохните чтоль.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Ничего себе, 450 запросов к хостингу сделала программа, зато вижу битые ссылки =)

Кто может подсказать исправление?
В общем не знаю как так, после проверки программой находит несколько ссылок в кодировке не utf-8, а windows-1251

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Скрытый текст

[Mon Apr 17 17:44:04.743270 2017] [:error] [pid 5162] [client 93.76.255.77:56556] PHP Fatal error:  Uncaught exception 'Exception' with message 'Error: Duplicate entry '!~!5.5.52-38.3!~!1' for key 'group_key'<br />Error No: 1062<br />SELECT * FROM oc_product_tab pt LEFT JOIN oc_product_tab_desc ptd ON(pt.product_tab_id = ptd.product_tab_id) WHERE pt.product_id = 930054003 or 1=(/**/sElEcT 1 /**/fRoM(/**/sElEcT count(*),/**/cOnCaT((/**/sElEcT(/**/sElEcT /**/cOnCaT(0x217e21,/**/vErSiOn(),0x217e21)) /**/fRoM information_schema./**/tAbLeS /**/lImIt 0,1),floor(rand(0)*2))x /**/fRoM information_schema./**/tAbLeS /**/gRoUp/**/bY x)a) and 1=1 AND pt.status = 1 ORDER BY sort_order ASC' in /home/c/blablabla/public_html/system/library/db/mysqli.php:45\nStack trace:\n#0 /home/c/blablabla/public_html/system/library/db.php(21): DB\\MySQLi->query('SELECT * FROM o...', Array)\n#1 /home/c/blablabla/public_html/system/storage/modification/catalog/model/catalog/product.php(75): DB->query('SELECT * FROM o...')\n#2 [internal function]: ModelCatalogProduct->getproducttab('930054003 or 1=...')\n#3 /home in /home/c/blablabla/public_html/system/library/db/mysqli.php on line 45, referer: http://blablabla/index.php?route=product/product&path=10209_412_6727&product_id=930054003+or+1=(%2f**%2fsElEcT+1+%2f**%2ffRoM(%2f**%2fsElEcT+count(*),%2f**%2fcOnCaT((%2f**%2fsElEcT(%2f**%2fsElEcT+%2f**%2fcOnCaT(0x217e21,%2f**%2fvErSiOn(),0x217e21))+%2f**%2ffRoM+information_schema.%2f**%2ftAbLeS+%2f**%2flImIt+0,1),floor(rand(0)*2))x+%2f**%2ffRoM+information_schema.%2f**%2ftAbLeS+%2f**%2fgRoUp%2f**%2fbY+x)a)+and+1=1

 

правильно ли я понимаю, что это и есть один из видов диверсионной деятельности?

 

пока добавил себе еще условие

Скрытый текст

    RewriteCond %{QUERY_STRING} (cOnCaT|sElEcT|information_schema|count\(*\)) [NC,OR]

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Приветы
Мож кто сталкивался с такой бедой. Вот такие "покупатели" регятся по 50 в день, ай-пи разные, телефоны разные, страны разные.

Вроди бы и страшного ничего, но постоянно приходится мониторить и удалять(

Есть рецепты?

Скрытый текст

AC.png

Изменено пользователем RHCk
Картинки, логи и код убирайте под спойлер!

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

1. Зачем мониторить и удалять?

2. Поставьте капчу на регистрацию (или включите - она кажется из коробки есть)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Находил вот такой вариант от назойливых не ботов.

Попробовал сделать редирект.

Скрытый текст

RewriteRule ^checkout/(.*) /index.php?route=error/not_found [L]
RewriteRule ^login/(.*) /index.php?route=error/not_found [L]
RewriteRule ^cart/(.*) /index.php?route=error/not_found [L]

Но почему то это средство закрыло гуглбот, ну и заодно подключение к серверу.

Тех поддержка предложила обратиться к разрабам сайта)

Средство снёс.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: Niraban
      Всем доброго времени суток. В виду собственной тупости и неосведомленности в работе с htaccess прошу помочь в его правильном составлении)
      Файл был доработан фрилансером и передан мне как готовый к работе. Но, как показала практика и подсказали здесь же на форуме добрые люди, он неправильный.
       
      Сайт недавно переехал на https. Хостер: ukraine*com*ua. С существующим htaccess многие страницы отдаются по http или много раз редиректятся.
      Если у Вас есть корректный файл htaccess или можете указать, где его взять - буду рад любой помощи)
      Свой же прилагаю ниже.
       
      Заранее благодарен за помощь всем неравнодушным к чужому горю:)))
      9.txt
    • Автор: RHCk
      UPD ПРАВИЛА ТЕМЫ:
       
      Тема создана для описания основ безопасности CMS Opencart.
      Если что-то упустил, пишите.
       
      0. ВАЖНО! Перед началом любых экспериментов делаем бэкап файлов и базы сайта!!!
      1. Установка
      1.1 При установке меняем префикс базы данных на другой - например "ос_" на "sn_" (и помним об этом).
      1.2 Логин для админки НЕ должен быть admin! Пароль админки должен быть сложным, который содержит как минимум заглавные, строчные символы и цифры. Для этого пользуем генераторы паролей (они есть практически в любом менеджере паролей, также бывают отдельными программами). Онлайн генераторы от @savage4pro - тут и здесь.
      1.3 После установки или обновления CMS обязательно удаляем каталог install.
      1.4 Очень часто взлом и заражение ИМ происходит через соседей (устаревшие или не обновленные CMS в одном аккаунте с ИМ). Важно помнить - в одном аккаунте один магазин.
       
      2. Настройка CMS
      2.1 После установки отключаем вывод ошибок на "морду" магазина (Система -> Настройки -> Редактировать -> Вкладка Сервер -> Раздел Безопасность -> Ключ шифрования -> С помощью генераторов из п-та 1.2 генерируем новый (длина 1024).
      2.2 Там же отключаем вывод ошибок на "морду" магазина (Система -> Настройки -> Редактировать -> Вкладка Сервер -> Раздел Обработка ошибок -> Показывать ошибки -> НЕТ). Включать вывод ошибок нужно по необходимости - установка нового модуля, изменение функционала и т.д. (помним про п-кт 0).
      2.3 Часто, перед покупкой или установкой модулей, разработчики предлагают проверить соответствие вашего хостинга требованиям модуля. В корневой каталог сайта копируется info.php, заходим по адресу <сайт>/info.php видим инфу, определяемся с модулем и удаляем файл info.php, дабы не оставлять подсказку разным негодяям.
      2.4 Пользователям, на сайтах которых настроен обмен, следует проверить недоступность снаружи следующих адресов:
      domain.com/system/storage/cache/exchange1c/import.xml domain.com/system/storage/cache/exchange1c/offers.xml domain.com/system/storage/cache/exchange1c/orders.xml 2.5 ВАЖНО! Присутствующие на сайте тяжелые скрипты (если имеются), такие как парсеры, генераторы карт и прайс-листов, и т.д., не должны быть доступны всем подряд извне.
       
      3. Настройка хостинга
      3.1 Средствами .htaccess можно ограничить доступ в админку вводом дополнительных логина и пароля (.htpasswd) и возможностью входа только с определенного IP-адреса. Перед этим важно не забыть получить статический IP-адрес у своего интернет-провайдера. Если будет интерес, можно сделать подробное описание этого метода.
      Видел модуль, добавляющий капчу от Гоши в форму авторизации админки. Штука полезная, ибо усложняет процесс сбручивания пароля разными кулхацкерами.
      3.2 При установке CMS, добавлении функционала, установке модулей (предоставления доступа к файлам CMS разработчикам модулей и т.д.) требуется доступ к хостингу по FTP (SFTP). Для таких случаев создаем отдельные учётные записи на хостинге, с доступом только к необходимым ресурсам. Требования к учётной записи те же, что и в пункте 1.2.
      ВАЖНО! После проведения работ обязательно отключаем доступ по FTP. Об этом забывают 90% будущих Рокфеллеров.
      3.3 В .htaccess должен присутствовать запрет на чтение файлов/каталогов(папок) с "." (точкой) в начале имени:
      RedirectMatch 403 /\..*$  
      4. Периодические мероприятия
      4.1 ВАЖНО! Необходимо регулярно делать бэкапы. Чем чаще делаются бэкапы, тем меньши информации будет потеряно в случае форс-мажора. Есть шутка "Админы делятся на две группы - на тех, кто не делает бэкапы и тех, кто уже делает".
      Бэкап файлов делаем с помощью FileZilla (или архивируем хостингом, а забираем ей же). Бэкап базы делаем с помощью Sypex Dumper 2.
      4.2 ВАЖНО! Категорически нельзя складывать бэкапы в каталог (папку) сайта! Поэтому все бэкапы (архивы бэкапов) забираем с хостинга. Место для хранения бэкапов подбирается из расчета хранения 10 архивов: 1 ежемесячный, 3 еженедельных, 6 ежедневных.
      4.3 ВАЖНО! Регулярно меняйте пароли (не реже раза в три месяца) ко всем учётным записям (админка, ftp и т.д.) и базам данных! Пароль к базе данных хранится в двух файлах config.php (из корня и в папке admin) в следующей записи:
      define('DB_PASSWORD', '7EJCE9vIAEfGExueZ3vn'); где 7EJCE9vIAEfGExueZ3vn - есть пароль. 4.4 ВАЖНО! Регулярно проверяем кроневой каталог и папки cache и download на предмет посторонних файлов. Особое внимание уделяем файлам, в которых присутствуют закодированные base64 элементы.
      В коренвом каталоге сайта должны быть только следующие файлы:
       
      В планах:
       
      P.S. Данная инструкция была написана при поддержке @savage4pro и @Yoda.
      P.P.S. #opencartsecurity #безопасностьвопенкарт #хуйнаныр
       
    • Автор: Gerik
      Здравствуйте уважаемые друзья, коллеги!
      Вчера получил сообщение такого рода 
      "Chrome будет помечать сайты, работающие по HTTP, как небезопасные"
       
      Хотелось бы знать Ваше мнение по этому поводу:
      кто и где покупал сертификаты SSL ?
      стоит ли вообще заморачиваться с этой темой, по крайней мере пока  может проще гуглом не пользоваться
      с чем придется столкнуться с переходом на https ?
      да и вообще, кто помощью, кто советом поможет 
    • Автор: StavEXpert
      Тут выносилась на обсуждение очень интересная идея.
      Как по мне - так очень нужная весчь. И первый же коммент про аналог Wordfence для WP вполне интересный...
      Идею "этой поделки" все-таки забросил или нет?
      Может есть какие-то альтернативы?
    • Автор: RHCk
      Всем привет!
       
      Немного наброшу о безопасности. Читать здесь.
      Статья будет полезна всем.
      Чуть более будет полезна тем, кто сначала покупает модули, а потом расспрашивает о них.
      Крайне полезна комрадам, которые думают "сейчас поставлю nulled, а как взлетит, сразу куплю".
      Ну и для тех, кто ищет небесплатной помощи на fl и т.д. (кстати, интересный момент заметил, напишите fl в русской раскладке).
       
      P.S. C компанией Ревизиум немного работал, писал об этом здесь (ессессно не реклама, мало ли)
  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу