Вход Регистрация
Файл: sys/core/protect_shell.php
Строк: 97
<?
/*
    Для отладки
 $set['antihah_files_format'] = 0;
 $set['antihack'] = 1;
 $set['antihah_upload_intansiv'] = 1;
 $set['antihah_upload_msg'] = 1;
 $set['antihah_upload_ban'] = 0;
 $set['antihah_upload_ban_ip'] = 0;
 $set['antihah_upload_ban_time'] = 86400;
 */
 
if ($set['antihack'] == 1)
 {
 
//опасные значения (угрозы)
 
$shell_arr = array(
    
"ini_get('safe_mode')",
    
"eval",
    
"gzinflate",
    
"base64_decode",
    
"rootshell",
    
'phpinfo',
    
'rmdir',
    
'opendir',
    
'exec',
    
'system',
    
'shell',
    
'$_FILES',
    
'chmod',
    
'file_get_contents',
    
'copy',
    
'mail',
    
'mkdir',
    
'unlink',
    
'fopen'
    
'fclose',
    
'fputs',
    
'escapeshellarg',
    
'escapeshellcmd',
    
'passthru',
    
'proc_open',
    
'popen',
    
'shell_exec',
    
'include',
    
'include_once',
    
'require',
    
'require_once'
    
);
    
    if (isset(
$_FILES) and $_FILES != null)
    
$Tmpfile = @$_FILES['file']['tmp_name'];
    else 
$Tmpfile null;
    
        
//тек. страница
        
$location $_SERVER['REQUEST_URI'];
        
        
//файл где ищем исключения
        
$shell_dir file_get_contents(H.'sys/dat/if_shell_dir.txt');
        if (
preg_match("#"$shell_dir."#i"$location))
        
$continue true;
        else
        
$continue false;

   
     if (
file_exists($Tmpfile) AND $Tmpfile != null and $continue == null)
     {        
            
//проверяемый файл
            
$malicious_file file_get_contents($Tmpfile);
            
            
//обявляем переменную
            
$attempts 0;
            
            
//перебираем данные
            
foreach ($shell_arr as $key => $val)
            {
                if (
preg_match("#"$val ."#i"$malicious_file))
                
//записываем угрозы
                
++$attempts;
            }
             
//если угроза обнаружена 
            
if($attempts $set['antihah_upload_intansiv'])
            {
                if (isset(
$_SESSION['id_user']))
                
$user_ses mysql_fetch_assoc(query("SELECT `id`,`nick` FROM `user` WHERE `id` = '".intval($_SESSION['id_user'])."' LIMIT 1"));
                else
                
$user_ses null;
                
                    
//сообщаем 
                    
if ($set['antihah_upload_msg'] == 1)
                    {
                        
$msg 
                        
"[b]Анти-шелл[/b], возможно это попытка залить вредоносный шелл!
                        Атакуемая директория  : [url=
{$location}]{$location}[/url]
                        Нарушитель : "
.(@$user_ses['nick'] != null "[url=/id{$user_ses['id']}][color=red][b]{$user_ses['nick']}[/b][/color][/url]":'Гость')."
                        ip : "
.($set['antihah_upload_ban_ip'] == "[Забанить [url=".APANEL."/ban_ip.php?min={$ip}]{$ip}[/url]]":false);
                        
                        
query("INSERT INTO `jurnal_system` (`time` ,`type` ,`read` ,`id_user`,`msg`,`id_kont`)
                        VALUES ( '"
.time()."',  'system',  '0',  '{$user_ses['id']}','"my_esc($msg) ."','0');");
                    }
                    
                    
//баним 
                    
if ($set['antihah_upload_ban'] == and isset($user_ses['nick']))
                    {            
                        
query("INSERT INTO `ban` SET `time`='".(time() + $set['antihah_upload_ban_time'])."', `prich` = 'За попытку загрузки Вредоносного файла !', `id_user` = '$user[id]',`id_ban`='0' ");
                    }
                    
                    
//баним по ip
                    
if ($set['antihah_upload_ban_ip'] == 1)
                    {    
                        
$ip my_esc($ip);
                        
query("INSERT INTO `ban_ip` (`min`, `max`,`id_user`,`time`) values('{$ip}', '{$ip}', '0', '".time()."')");
                    }        
                    
                    
//удаляем опасный файл
                    
unlink($Tmpfile);
                    unset(
$_FILES);
                    
//$_SESSION['message'] = 'Формат файла запрещен';
            
}
        }
    } 
    
    
//банальная проверка 
    
if (isset($_FILES) and $continue == null and $set['antihah_files_format'] == 1)
    {
        foreach (
$_FILES as $fileArr => $Filter)
        {

            if (
            
strpos($_FILES[$fileArr]['name'], "") !== FALSE or
            
strpos($_FILES[$fileArr]['name'], 0) !== FALSE or
            
strpos($_FILES[$fileArr]['name'], '/') !== FALSE or
            
stripos($_FILES[$fileArr]['name'], '.php') !== FALSE or
            
stripos($_FILES[$fileArr]['name'], '.phtml') !== FALSE or
            
stripos($_FILES[$fileArr]['name'], '.js') !== FALSE or  
            
stripos($_FILES[$fileArr]['name'], '.htaccess') !== FALSE
            
)
    
        {
            
unlink($Tmpfile);
            unset(
$_FILES);
            
//$_SESSION['message'] = 'Формат файла запрещен';
        
}

        }
    
}
Онлайн: 1
Реклама