Данный материал предоставлен сайтом 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");
}
}
}
?>
//отражение хакерских запросов
//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!
Предыдущая Следующая