prowebber.ru - Тут есть все для настоящих вебмастеров

Чтение RSS Мы в твиттере
«    Декабрь 2016    »
ПнВтСрЧтПтСбВс
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
 

Всё для вебмастера » Хакинг » Защита сайтов от взлома by kzpromo

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


Данный материал предоставлен сайтом ProWebber.ru исключительно в ознакомительных целях. Администрация не несет ответственности за его содержимое.
У нас вы можете скачать бесплатно Защита сайтов от взлома 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!


0
Просмотры: 4360 VIP ProWebber | Комментарии (41)
Уважаемый посетитель, Вы зашли на сайт как незарегистрированный пользователь.
Мы рекомендуем Вам зарегистрироваться либо войти на сайт под своим именем.

#1WezangO

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

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

0

#2Heon

  • 28 июня 2011 14:28
  • Регистрация: 13.02.2010
  • ICQ: 562788181
  • Комментариев: 108
Спасибо конечно,но не совсем понятно что куда делать.

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

0

#3kzpromo

  • 28 июня 2011 14:30
  • Регистрация: 11.09.2009
  • ICQ: 6960380
  • Комментариев: 83
Установка в дле
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" );

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

0

#4sima

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

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

0

#5kzpromo

  • 28 июня 2011 15:10
  • Регистрация: 11.09.2009
  • ICQ: 6960380
  • Комментариев: 83
куки в дле не так критично

Можете добавить
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");
   }
}
}

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

0

#6sima

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

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

0

#7kzpromo

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

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

0

#8sima

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

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

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

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

0

#9kzpromo

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

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

0

#10sima

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

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

0

#11rocksmart

  • 28 июня 2011 16:19
  • Регистрация: 13.11.2010
  • ICQ: --
  • Комментариев: 21
На Slaed что то защита похожа.


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

0

#12kzpromo

  • 28 июня 2011 16:22
  • Регистрация: 11.09.2009
  • ICQ: 6960380
  • Комментариев: 83
ничего не мешает, можете и реферер проверять и юзерагенты, но это будет грузить сайт
обратите внимание на вторую часть статьи

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

0

#13sima

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

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

0

#14kzpromo

  • 28 июня 2011 16:58
  • Регистрация: 11.09.2009
  • ICQ: 6960380
  • Комментариев: 83
ну значит не судьба дле форуму и нашему релизу быть вместе
есть полно нуллов где убрана лицензия

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

0

#15kaktus

  • 28 июня 2011 18:15
  • Регистрация: 9.10.2009
  • ICQ: 402814915
  • Комментариев: 112
kzpromo, спасибо, что поделился знаниями. Respect!!!

0

#16oleg9797

  • 28 июня 2011 18:32
  • Регистрация: 26.11.2010
  • ICQ: 4010412
  • Комментариев: 21
Огромное спасибо, очень полезно!

0

#17KinoStar

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

0

#18Julius

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


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

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

0

#19Julius

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

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

0

#20kzpromo

  • 28 июня 2011 21:30
  • Регистрация: 11.09.2009
  • ICQ: 6960380
  • Комментариев: 83
карта гугла не совместима с защитой от шеллов, как можно её исправить ?

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

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

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


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

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

Max-energy.top - Заработок на электросчетчиках;)

Skripters.info - все для вебмастера. Только эксклюзивный контент.

Создание шаблонов DLE, быстро и недорого! 3wave.com.ua

Бро лей на лучшую партнёрку

Почти бесплатный VDS хостинг!

Поддержи сайт
Скрипты, cms, шаблоны, статьи по раскрутке

Опросы

Как часто вы бываете на сайте?

Захожу 1-2 раза в день
1-2 часа в сутки
Более 2 часов
Почти целый день тут smile

Архив новостей
Ноябрь 2016 (7)
Октябрь 2016 (10)
Сентябрь 2016 (8)
Август 2016 (11)
Июль 2016 (14)
Июнь 2016 (17)

Последние комментарии:

Искать людей

Ваши переписки