Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Глобальная защита opencart


Truth_Explorer

Recommended Posts

Здравствуйте, друзья.

 

Сегодня я расскажу о том, как на 99,9% защитить opencart.

 

За 3 года пользования опенкарт я провел ряд исследований. Последний год я просил своих коллег из Канады, Франции и Китая взломать мой тестовый сайт. Результат - ноль.

 

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

 

На моем сайте стоит 2 защиты:

 

1) на стороне сервера

2) программно.

 

Про первую часть я не буду говорить, так как это само собой разумеющееся: установить пароль на директорию через htpasswd.

 

А вот вторая часть интереснее. Приступим, всего 2 шага.

 

В директории админ в файле login.tpl в самом начале прописываем:

<?php
if (isset($_GET['secretkey']))
{$seckey = $_GET['secretkey'];
setcookie ("secretkey", $_GET['secretkey']);}
else if
(isset($_COOKIE['secretkey']))
{$seckey = $_COOKIE['secretkey']; }
else {$seckey = '';}
if ($seckey != 'secretkeyvalue') {header("HTTP/1.0 404 Not Found");
exit; } else { ?>

В конце всего файла закрываем:

<?php } ?>

Всё.

 

Чтобы попасть в административную часть вам потребуется зайти по адресу /admin?secretkey=secretkeyvalue , где secretkey и secretkeyvalue ВАШИ значения.

 

У меня например на сайте так: /admin?djghjcbynthytn=jndtnvfufpby

 

Сложно? - нет. Потому что мои значения этой абрыкадабры равны осмысленным значениям, только на латинице: вопросинтернет=ответмагазин.

 

И ни одна сволочь не сможет пробраться к вам, не зная этих параметров.

 

И не забывайте, всё же, об элементарных правилах безопасности. Как минимум проверку на стороне сервера, где тоже нужна будет авторизация (для новичков - на хостинге в админ-панеле легко настраивается).

 

Благодарю за внимание.

  • +1 3
Надіслати
Поділитися на інших сайтах


Ну а чтобы господам взламывателям было веселее - я создал administrator.php , при это прописал его в robots.txt (они же любят поглазеть туда). А в этом "админском файле" я прописал клон административной части входа, только просто на html... при этом при попытке входа он отсылает на http://natribu.org/.

 

Удачи. Если будут вопросы или комментарии - буду рад ответить.

  • +1 2
Надіслати
Поділитися на інших сайтах


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

почему?

 

код во view - это круто

Надіслати
Поділитися на інших сайтах

В директории админ в файле login.tpl в самом начале прописываем:

...

 

Чтобы попасть в административную часть вам потребуется зайти по адресу /admin?secretkey=secretkeyvalue , где secretkey и secretkeyvalue ВАШИ значения.

 

В принципе, решение нормальное, но имеет смысл развивать дальше. В данный момент это выглядит так: поставлена бронированная дверь (вход в админку), но окна и стены дома (весь остальной код) оставлены как есть. Лучше, полагаю, реализовывать подобное прямо в index.php.

Надіслати
Поділитися на інших сайтах

Ну а чтобы господам взламывателям было веселее - я создал administrator.php , при это прописал его в robots.txt (они же любят поглазеть туда).

Может, какую-то совсем школоту вы так и обманите, но ОК легко опознать и без админки.

Надіслати
Поділитися на інших сайтах


почему?

 

код во view - это круто

 

Конечно во view - ведь любой сайт мониторится на систему управления в два счета. Зная двиг - будешь знать как к нему подойти.

Надіслати
Поділитися на інших сайтах


В принципе, решение нормальное, но имеет смысл развивать дальше. В данный момент это выглядит так: поставлена бронированная дверь (вход в админку), но окна и стены дома (весь остальной код) оставлены как есть. Лучше, полагаю, реализовывать подобное прямо в index.php.

 

Безусловно, Вы правы. Я сейчас не рассматривал вопросы прямых запросов в "дыры", которые есть в опенкарт. Я лишь показал сущность админской части.

Надіслати
Поділитися на інших сайтах


Может, какую-то совсем школоту вы так и обманите, но ОК легко опознать и без админки.

 

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

Надіслати
Поділитися на інших сайтах


$_GET, $_COOKIE, header() - нельзя так.

Надіслати
Поділитися на інших сайтах

Конечно во view

Это надо делать в контроллере.

Ну, и как намекают выше - у ОК есть обёртки над суперглобальными переменными (в которых, кстати, дополнительная фильтрация) и собственный метод в Response для установки заголовков.

  • +1 1
Надіслати
Поділитися на інших сайтах


  • 1 month later...
В 12.12.2016 в 09:21, jvz сказал:
В 12.12.2016 в 08:55, shoputils сказал:

$_GET, $_COOKIE, header() - нельзя так.

я об этом же

Почему нельзя? Этот метод, в целом, не подходит для защиты админки?

Надіслати
Поділитися на інших сайтах


3 минуты назад, TrueLog сказал:

Почему нельзя? Этот метод, в целом, не подходит для защиты админки?

Потому что нужно экранировать все что приходит в GET POST, потому что это сделано уже за вас на уровне движка, потому что надо использовать системные методы для обработки входящих данных, а не писать костыли, потому что согласно паттерну MVC, использовать любую бизнес-логику в представлении нельзя.
Потому что прежде чем постить подобные советы - надо пойти и немного поучиться!

  • +1 4
Надіслати
Поділитися на інших сайтах


  • 2 years later...
  • 2 months later...
В 12.12.2016 в 04:12, Truth_Explorer сказал:

Здравствуйте, друзья.

 

Сегодня я расскажу о том, как на 99,9% защитить opencart.

 

За 3 года пользования опенкарт я провел ряд исследований. Последний год я просил своих коллег из Канады, Франции и Китая взломать мой тестовый сайт. Результат - ноль.

 

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

 

На моем сайте стоит 2 защиты:

 

1) на стороне сервера

2) программно.

 

Про первую часть я не буду говорить, так как это само собой разумеющееся: установить пароль на директорию через htpasswd.

 

А вот вторая часть интереснее. Приступим, всего 2 шага.

 

В директории админ в файле login.tpl в самом начале прописываем:


<?php
if (isset($_GET['secretkey']))
{$seckey = $_GET['secretkey'];
setcookie ("secretkey", $_GET['secretkey']);}
else if
(isset($_COOKIE['secretkey']))
{$seckey = $_COOKIE['secretkey']; }
else {$seckey = '';}
if ($seckey != 'secretkeyvalue') {header("HTTP/1.0 404 Not Found");
exit; } else { ?>

В конце всего файла закрываем:


<?php } ?>

Всё.

 

Чтобы попасть в административную часть вам потребуется зайти по адресу /admin?secretkey=secretkeyvalue , где secretkey и secretkeyvalue ВАШИ значения.

 

У меня например на сайте так: /admin?djghjcbynthytn=jndtnvfufpby

 

Сложно? - нет. Потому что мои значения этой абрыкадабры равны осмысленным значениям, только на латинице: вопросинтернет=ответмагазин.

 

И ни одна сволочь не сможет пробраться к вам, не зная этих параметров.

 

И не забывайте, всё же, об элементарных правилах безопасности. Как минимум проверку на стороне сервера, где тоже нужна будет авторизация (для новичков - на хостинге в админ-панеле легко настраивается).

 

Благодарю за внимание.

 

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

Можете что то посоветовать в этом случае?

Спасибо!

Надіслати
Поділитися на інших сайтах


  • 7 months later...
  • 3 months later...

Для третей версии необходимо провести следующие мероприятия 

Ниже указанный текст необходимо добавить в начало файла по адресу
/admin/controller/common/login.php

<?php
if (isset($_GET['10'])) {
    $seckey = $_GET['10'];
    setcookie ("10", $_GET['10']);
} else if (isset($_COOKIE['10'])) {
    $seckey = $_COOKIE['10']; 
    } else {
        $seckey = '';
    }
if ($seckey != '1019') {
    header("HTTP/1.0 404 Not Found");
    exit;
} else { ?>
<?php } ?>

 

Админка закрыта возможно попасть только через эту ссылку
https://вашьсайт.ru/admin/?10=1019

Соответственно можно менять переменные "10" и "1019" на любые ваши - делать лучше раз в месяц, 

ВАЖНО!!!! внесение изменений в login.php должно проходить при открытой панели администратора для того чтобы можно было очистить
кеш во вкладке модификаторов, в противном случае будет ошибка и белый экран

 

Да к стати можете создать поддомен на сайте, в директории создать файл index.html, настроить в нем редирект на выше указанную ссылку, чтобы при очистке кеша, который Вы должны чистить:) после каждой работы с админ панелью, не было необходимости забивать километровую ссылку в строку поиска.

 

И основная дыра на сайте это статьи, смотрите кто у вас добавлял статьи и ответы на комменты изначально движок пихает имя админа как автора, не забудьте поменять на другое иначе вход в в ваш магаз это дело времени и хорошей машины которая за месяц брутфорса найдет и админку и логин админа и пароль:)

 

Друзья помните для опытного специалиста все эти танцы с бубном всего на 20% обезопасят ваш ресурс, в опене много дыр:) и вам за безплатно никто не расскажет как их закрыть:) в каждой версии разные. 

 

Для человека который в начале форума писал про то, что он обезопасил сайт выше указанным способом, бро кидай ссылку на сайт вынесу твой ресурс за две недели:)  Стоимость теста ресурса 500$, полная безопасность как обычно 1000$:))

 

PS: Изучайте свои движки, правильно настроенный опен это мега зверь. Изучайте внимательно мануал к движку и изменения в нем      

Надіслати
Поділитися на інших сайтах


И откуда вы, такие специалисты тупорылые, лезете-то...

46 минут назад, verbram сказал:

И основная дыра на сайте это статьи, смотрите кто у вас добавлял статьи и ответы на комменты изначально движок пихает имя админа как автора, не забудьте поменять на другое иначе вход в в ваш магаз это дело времени и хорошей машины которая за месяц брутфорса найдет и админку и логин админа и пароль:)

Какие, к черту, статьи? Вордпресса начитался, гуру стал? Права была лиса Алиса.

  • +1 2
Надіслати
Поділитися на інших сайтах


2 часа назад, verbram сказал:

бро кидай ссылку на сайт вынесу твой ресурс за две недели:)

тестовый подойдет?

 

Надіслати
Поділитися на інших сайтах

34 минуты назад, chukcha сказал:

тестовый подойдет?

 

Так он же "за безплатно" не работает, 500 бексов хочет. В-приниципе, я бы согласился сделать ставку, взломает - я ему 500, не взломает - он мне 500. Чего не срубить бабла нахаляву. Только нет у него 500$, не будет легкого заработка :-)

Змінено користувачем Shureg
  • +1 1
Надіслати
Поділитися на інших сайтах


2 часа назад, verbram сказал:

Да к стати можете создать поддомен на сайте, в директории создать файл index.html, настроить в нем редирект на выше указанную ссылку, чтобы при очистке кеша, который Вы должны чистить:) после каждой работы с админ панелью, не было необходимости забивать километровую ссылку в строку поиска.

Только счас заметил.  Сразу чувствуется рука матёрого безопасника.
А еще лучше там сразу выложить форму входа с уже забитыми в value логином и пассом, чтоб не заморачиваться каждый раз :-D

Надіслати
Поділитися на інших сайтах


Порывы автора благие, а решение бесполезно, скорее всего может защитить на 0,01% из 100%. к тому же в пример ставится говнокод, да еще и в tpl.. Как дал бы по рукам за такое...
1. Админ закрыть можно через .htaccess и пока пока
2. Ваш код не решает никакой проблемы, защита от школоло это так для баловства.

Что бы вот прям защитится, надо комплекс мер
1. Убрать все загрузчики файлов от клиента, а если таковы необходимы, то не использовать стандартные пути хранения файлов и делать проверку расширения итд
2. Не игнорировать экранизацию полей ввода, в OC уже есть обертка для этого
3. Можно изощряясь вынести все на уровень каталога выше (Выше public_http), а туда выводить только View
и пускай долбятся куда хотят (но потеряете совместимость)

А эти все доп пароли, куки итд.. ну такое

Надіслати
Поділитися на інших сайтах

23 минуты назад, ocdev_pro сказал:

Порывы автора благие, а решение бесполезно, скорее всего может защитить на 0,01% из 100%. к тому же в пример ставится говнокод, да еще и в tpl.. Как дал бы по рукам за такое...
1. Админ закрыть можно через .htaccess и пока пока
2. Ваш код не решает никакой проблемы, защита от школоло это так для баловства.

Что бы вот прям защитится, надо комплекс мер
1. Убрать все загрузчики файлов от клиента, а если таковы необходимы, то не использовать стандартные пути хранения файлов и делать проверку расширения итд
2. Не игнорировать экранизацию полей ввода, в OC уже есть обертка для этого
3. Можно изощряясь вынести все на уровень каталога выше (Выше public_http), а туда выводить только View
и пускай долбятся куда хотят (но потеряете совместимость)

А эти все доп пароли, куки итд.. ну такое

Ты забыл про блокировку попыток SELECT *$%^#%HFDHGGD  CAST(); RAND.

И блокировку всяких ../..///  - на уровне серверных правил.

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

 

Надіслати
Поділитися на інших сайтах


31 минуту назад, Yoda сказал:

Ты забыл про блокировку попыток SELECT *$%^#%HFDHGGD  CAST(); RAND.

И блокировку всяких ../..///  - на уровне серверных правил.

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

 

Точно. А еще, было бы очень хорошо иметь git что бы в любой не удобной ситуации, откатить изменения сделанные со стороны и увидеть куда и что добавили

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.