Защита сайтов 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!
Другие новости по теме:

Категория: Модули ----- Просмотров: 3684 ----- Комментариев: 20

Вернуться

  • Группа: User
  • ICQ: 55054644
  • Регистрация: 19.06.2010
  • Комментариев: 33
  • Публикаций: 1
^
Кто пробовал ??
  • Группа: User
  • ICQ: --
  • Регистрация: 10.12.2009
  • Комментариев: 8
  • Публикаций: 0
^
А можно пошаговую инструкцию? Спасибо заранее!
  • Группа: User
  • ICQ: --
  • Регистрация: 9.02.2009
  • Комментариев: 64
  • Публикаций: 20
^
Установка в дле
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" );

--------------------
  • Группа: User
  • ICQ: 1739390
  • Регистрация: 29.01.2010
  • Комментариев: 274
  • Публикаций: 44
^
nugumanov,
//отражение хакерских запросов

вот эта вещь. На первый взляд ничего сложного.
но естественно ее не каждый напишет.
Получается перед отправкой в БД все гет и пост запросы проверяются на наличие в нем $bag_req ( "UPDATE", "LIMIT", "INSERT", "INTO".......), а не замедлит это работу сайта? (не в целом а отправка сообщений, новостей) мне кажется нагрузка возрастет.
А вообще МОЛОДЕЦ! Есть над чем подумать. Только кажется целсофт приберет к рукам твой хак.

--------------------
  • Группа: User
  • ICQ: --
  • Регистрация: 9.02.2009
  • Комментариев: 64
  • Публикаций: 20
^
замедляет, но не значительно
безопасность важнее

--------------------
  • lamov

  • 28 июня 2011 19:30
  • Группа: User
  • ICQ: --
  • Регистрация: 13.02.2011
  • Комментариев: 4
  • Публикаций: 0
^
безопасность превыше всего. Огромнейшее спасибо!
  • Группа: User
  • ICQ: 1739390
  • Регистрация: 29.01.2010
  • Комментариев: 274
  • Публикаций: 44
^
nugumanov,
дорабатывать можно?
хочу дописать черный список IP (бан)

--------------------
  • dns_ua

  • 28 июня 2011 20:43
  • Группа: User
  • ICQ: 628759137
  • Регистрация: 20.06.2010
  • Комментариев: 73
  • Публикаций: 2
^
Наслаждайтесь 85% защитой вашего сайта


все версии

ttp://sourceforge.net/projects/web-firewall/files/

сайт разработки

ttp://web-firewall.sourceforge.net/

nj
  • Группа: User
  • ICQ: 1739390
  • Регистрация: 29.01.2010
  • Комментариев: 274
  • Публикаций: 44
^
dns_ua,
ну вот садись и настраивай, где будут отправятся GET запросы где POST или кукисы.
тебе надо :
знать все переменные в которых хранятся:
1) в массиве гет
2)массиве пост
3) в $_cookie

потом писать еще правила, как я понял. А потом еще обработчик написать..

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

--------------------
  • dns_ua

  • 28 июня 2011 23:27
  • Группа: User
  • ICQ: 628759137
  • Регистрация: 20.06.2010
  • Комментариев: 73
  • Публикаций: 2
^
AlexBen,

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

у вот садись и настраивай, где будут отправятся GET запросы где POST или кукисы.
тебе надо :
знать все переменные в которых хранятся:
1) в массиве гет
2)массиве пост
3) в $_cookie


Имеется защита от доса переброс на страницу 403 или на другой адрес сервака

Скрипт настраивается автоматом, и делает слежку за всеми гобальными запросами. Следит за шелами и сканирует содержимое php скриптов на предметы таких функция как eval и так далее и выдает инфу где в камом скрипте и какакя строка.

Рекомендую Ultimate Web Firewall v1.1.1

  • Группа: User
  • ICQ: 1739390
  • Регистрация: 29.01.2010
  • Комментариев: 274
  • Публикаций: 44
^
Цитата: dns_ua
Имеется защита от доса

ты наверно хотел сказать от легкого флуда?!)

Цитата: dns_ua
А если тебя жаба давит что некоторые хрошо знают web-языки, то пойди купи себе флаг и медаль.


Это говорит человек который не имеет базовые знания HTML и CSS )
Да и я даже не беспокоюсь, мне хватает знать JS + хмтл с css.
Вообще тема не туда нас привела, хотел бы по нормальному, создал бы топик на форуме и там по флудили, т.к. я не говорю что этот скрипт плохой.
Но есть минусы от бальной нагрузки и лишнего использования памяти.
P.S. Медали есть) А флаг куплю обязательно!

--------------------
  • Группа: User
  • ICQ: --
  • Регистрация: 9.02.2009
  • Комментариев: 64
  • Публикаций: 20
^
дорабатывать можно?
хочу дописать черный список IP (бан)

без проблем

Ultimate Web Firewall - хороший скрипт))

--------------------
  • family

  • 29 июня 2011 18:05
  • Группа: User
  • ICQ: --
  • Регистрация: 17.03.2010
  • Комментариев: 7
  • Публикаций: 0
^
При обновлении карты сайта появляется надпись: BAD REQUEST
  • Группа: User
  • ICQ: 1739390
  • Регистрация: 29.01.2010
  • Комментариев: 274
  • Публикаций: 44
^
family,
надо исключить карту сайта

--------------------
  • family

  • 29 июня 2011 20:16
  • Группа: User
  • ICQ: --
  • Регистрация: 17.03.2010
  • Комментариев: 7
  • Публикаций: 0
^
А что именно надо вырезать из кода? И главное, не уменьшится ли безопасность?
  • Группа: User
  • ICQ: 1739390
  • Регистрация: 29.01.2010
  • Комментариев: 274
  • Публикаций: 44
^
family,

LIMIT потому что там name так называется)

--------------------
  • family

  • 29 июня 2011 22:05
  • Группа: User
  • ICQ: --
  • Регистрация: 17.03.2010
  • Комментариев: 7
  • Публикаций: 0
^
Спасибо!!
  • Группа: User
  • ICQ: 1739390
  • Регистрация: 29.01.2010
  • Комментариев: 274
  • Публикаций: 44
^
подправленный вариант
_http://pastebin.com/submLC8r

--------------------
  • Группа: User
  • ICQ: 485348926
  • Регистрация: 17.06.2009
  • Комментариев: 20
  • Публикаций: 0
^
Попробуем...

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