Мы в твиттере Мы в телеграме!

Провеббер » Web » Полезные статьи » Защита сайтов от взлома by kzpromo

Набор в команду! Ведется набор в команду, для наполнения сайта новым, интересным контентом. Если у тебя есть предложения, свободное время, ты обладаешь интересным контентом, и хочешь поделиться с другими?
Обращайся к нам в ЛС группы Вконтакте.

Защита сайтов от взлома by kzpromo

Данный материал предоставлен сайтом ProWebber.cc исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
Скачать бесплатно Защита сайтов от взлома by kzpromo.

Защита сайтов от взлома by kzpromo

Уже несколько лет наблюдаю как растет тенденция взломов дле сайтов. Сотни тысяч сайтов страдали от взломов, миллионы сайтов подвержены атакам.
Решил поделиться с наработками которые уже год внедрены в релиз SECURED DLE и обеспечивают нормальную работу сайта без потери информации. Многие будут осуждать меня за данную заплатку, так как кому-то я испорчу бизнес, сильно усложнив взлом. Данная наработка подходит практически к любому сайту где есть php. Я не держу обиду на тех кто не верит в защищенность релиза.
И так я расскажу как обезопасить себя от: шеллов, sql inj, php inj, xss

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

include_once("Название модуля");

---------------------------------------------------------------------------
<?php
//отражение хакерских запросов
//autor: kzpromo

//поставить еденицу если хотите включить отладку запросов
$debug = 0;

$bag_req = array("select", "eval", "echo", "UPDATE", "LIMIT", "INSERT", "INTO", "union", "CONCAT", "INFORMATION_SCHEMA", "OUTFILE", "DUMPFILE", "LOAD_FILE", "BENCHMARK", "SUBSTRING", "ASCII", "CHAR", "database", "HEX", "\\.\\/", "%00", "\\.htaccess", "config\\.php", "document\\.cookie");
$request = serialize($_GET);
$urequest = urldecode($request);
$brequest = base64_decode($request);
if($_GET)
{
foreach ($bag_req as $key => $value) {
  if(preg_match("/$value/i", $request) || preg_match("/$value/i", $urequest) || preg_match("/$value/i", $brequest))
  {
   if($debug == "1") $do_debug = "<br>В массиве найден запрос <b>$value</b> , который блокирует правильную работу<br>$request";
   die("BAD REQUEST $do_debug");
   }
}
}
if($_POST)
{
$request = str_replace("selected_language", "sl", serialize($_POST));
$urequest = urldecode($request);
$brequest = base64_decode($request);
foreach ($bag_req as $key => $value) {
  if(preg_match("/$value/i", $request) || preg_match("/$value/i", $urequest) || preg_match("/$value/i", $brequest))
   {
   if($debug == "1") $do_debug = "<br>В массиве найден запрос <b>$value</b> , который блокирует правильную работу<br>$request";
   die("BAD REQUEST $do_debug");
   }
}
}
?>


full code
http://pastebin.com/qeqZaNHx

Модуль проверяет все GET и POST запросы и при нахождении плохих блокирует, не дав уйти запросам в базу или далее.

Дальше нам необходимо защитить себя от шеллов на сайте
Нужно отредактировать php.ini и отключить следующие функции
disable_functions = eval, exec, system, passthru, scandir, popen, shell_exec, proc_open, proc_close, proc_nice, get_current_user, getmyuid, posix_getpwuid, apache_get_modules, virtual, posix_getgrgid, getmyinode, fileowner, filegroup, getmypid, apache_get_version, apache_getenv, apache_note, apache_setenv, disk_free_space, diskfreespace, dl, ini_restore, openlog, syslog, highlight_file, show_source, symlink, disk_total_space, ini_get_all, get_current_user, posix_uname

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

Для народа старался kzpromo!


Дополнительные ссылки на скачивание ТОЛЬКО для зарегистрированных


-4
Просмотры: 6 461 :: Комментарии (41) :: :: Нужна помощь? Задайте вопрос на форуме ::
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

#1WezangO

  • 28 июня 2011 14:22
  • Регистрация: 26.12.2009
  • Был(а) онлайн: 1.04.2020
  • Комментариев: 141
  • 0
Спасибо. Позже испытаем )

--------------------

#2Heon

  • 28 июня 2011 14:28
  • Регистрация: 13.02.2010
  • Был(а) онлайн: 31.08.2022
  • Комментариев: 109
  • 0
Спасибо конечно,но не совсем понятно что куда делать.

--------------------

#3kzpromo

  • 28 июня 2011 14:30
  • Регистрация: 11.09.2009
  • Был(а) онлайн: 10.12.2023
  • Комментариев: 90
  • 0
Установка в дле
1)Назовем наш модуль security.class.php
2)Загружаем файл в engine/classes
3)Открываем engine/classes/mysql.php
перед
if ( extension_loaded('mysqli') AND version_compare("5.0.5", phpversion(), "!=") )
{
    include_once( ENGINE_DIR."/classes/mysqli.class.php" );
}
else
{
    include_once( ENGINE_DIR."/classes/mysql.class.php" );
}

Вставляем
include_once( ENGINE_DIR."/classes/security.class.php" );

#4sima

  • 28 июня 2011 15:05
  • Регистрация: 17.05.2010
  • Был(а) онлайн: 11.09.2013
  • Комментариев: 114
  • 0
А $_COOKIE ? Его тоже можно подделать... :)

--------------------

#5kzpromo

  • 28 июня 2011 15:10
  • Регистрация: 11.09.2009
  • Был(а) онлайн: 10.12.2023
  • Комментариев: 90
  • 0
куки в дле не так критично

Можете добавить
if($_COOKIE)
{
$request = serialize($_COOKIE);
$urequest = urldecode($request);
$brequest = base64_decode($request);
foreach ($bag_req as $key => $value) {
  if(preg_match("/$value/i", $request) || preg_match("/$value/i", $urequest) || preg_match("/$value/i", $brequest))
   {
   if($debug == "1") $do_debug = "<br>В массиве найден запрос <b>$value</b> , который блокирует правильную работу<br>$request";
   die("BAD REQUEST $do_debug");
   }
}
}

#6sima

  • 28 июня 2011 15:16
  • Регистрация: 17.05.2010
  • Был(а) онлайн: 11.09.2013
  • Комментариев: 114
  • 0
$_FILES ? :)
В некоторых случаях и так можно навредить, правда там ['name'] не используется вроде. хотя... :)

--------------------

#7kzpromo

  • 28 июня 2011 15:20
  • Регистрация: 11.09.2009
  • Был(а) онлайн: 10.12.2023
  • Комментариев: 90
  • 0
суть вашего сообщения не уловил! но должно быть весело :)
зачем контролировать файлы если есть защита от шеллов?

#8sima

  • 28 июня 2011 15:26
  • Регистрация: 17.05.2010
  • Был(а) онлайн: 11.09.2013
  • Комментариев: 114
  • 0
kzpromo,
Контроль не файлов, а реального имени файла, по моему в загрузчике используется $_FILES['filename']['name'] для записи, и этот самый ['name'] тоже предлагаю фильтровать, лишним всё равно не будет. :)
P.s: http://www.xakep.ru/post/49508/default.asp

P.p.s: Насколько я понял, то и такое:
evaluation
HEX : blablabla

Не пропустит.

--------------------

#9kzpromo

  • 28 июня 2011 15:42
  • Регистрация: 11.09.2009
  • Был(а) онлайн: 10.12.2023
  • Комментариев: 90
  • 0
методы описанные в журнале хакер не пройдут,
так как используют GET запросы

#10sima

  • 28 июня 2011 15:57
  • Регистрация: 17.05.2010
  • Был(а) онлайн: 11.09.2013
  • Комментариев: 114
  • 0
kzpromo,
А что мешает видоизменить входящие данные для использования их в том-же $_FILES, или $_COOKIE ?

--------------------

#11rocksmart

  • 28 июня 2011 16:19
  • Регистрация: 13.11.2010
  • Был(а) онлайн: 20.09.2014
  • Комментариев: 20
  • 0
На Slaed что то защита похожа.


--------------------

#12kzpromo

  • 28 июня 2011 16:22
  • Регистрация: 11.09.2009
  • Был(а) онлайн: 10.12.2023
  • Комментариев: 90
  • 0
ничего не мешает, можете и реферер проверять и юзерагенты, но это будет грузить сайт
обратите внимание на вторую часть статьи

#13sima

  • 28 июня 2011 16:24
  • Регистрация: 17.05.2010
  • Был(а) онлайн: 11.09.2013
  • Комментариев: 114
  • 0
kzpromo,
Ясное дело.
Да, кстати, у вашей защиты есть и обратная сторона медали, хотя-бы тот-же eval, использует dle-forum для лицензирования, да и не только он один.

--------------------

#14kzpromo

  • 28 июня 2011 16:58
  • Регистрация: 11.09.2009
  • Был(а) онлайн: 10.12.2023
  • Комментариев: 90
  • 0
ну значит не судьба дле форуму и нашему релизу быть вместе
есть полно нуллов где убрана лицензия

#15kaktus

  • 28 июня 2011 18:15
  • Регистрация: 9.10.2009
  • Был(а) онлайн: 25.12.2018
  • Комментариев: 112
  • 0
kzpromo, спасибо, что поделился знаниями. Respect!!!

#16oleg9797

  • 28 июня 2011 18:32
  • Регистрация: 26.11.2010
  • Был(а) онлайн: 18.02.2012
  • Комментариев: 21
  • 0
Огромное спасибо, очень полезно!

#17KinoStar

  • 28 июня 2011 19:04
  • Регистрация: 28.11.2010
  • Был(а) онлайн: 4.10.2012
  • Комментариев: 60
  • 0
карта гугла не совместима с защитой от шеллов, как можно её исправить ?

#18Julius

  • 28 июня 2011 19:43
  • Регистрация: 1.01.2011
  • Был(а) онлайн: 19.06.2016
  • Комментариев: 171
  • 0
//поставить еденицу если хотите включить отладку запросов
$debug = 0;


А что нужно ставить, 1 или 0 ???) не пойму никак!

--------------------

#19Julius

  • 28 июня 2011 21:28
  • Регистрация: 1.01.2011
  • Был(а) онлайн: 19.06.2016
  • Комментариев: 171
  • 0
не знаю это баг или нет, но вот:
у меня после установки не добавляются рекламки в разделе "Рекламные материалы"... пишет "BAD REQUEST"

--------------------

#20kzpromo

  • 28 июня 2011 21:30
  • Регистрация: 11.09.2009
  • Был(а) онлайн: 10.12.2023
  • Комментариев: 90
  • 0
карта гугла не совместима с защитой от шеллов, как можно её исправить ?

вычеркните из списка disable_functions функции которые использует карта гугла
А что нужно ставить, 1 или 0 ???) не пойму никак!

при нуле он не будет выводить в каком запросе ошибка

при единице выведет полную информацию
Выведет массив и сам запрос который не пропускает модуль
Данная опция полезна для отладки собственных скриптов и не только


1 2 3
Предыдущая    Следующая
Информация
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.

Архив новостей
Ноябрь 2024 (9)
Октябрь 2024 (169)
Сентябрь 2024 (13)
Август 2024 (60)
Июль 2024 (12)
Июнь 2024 (30)