Вход Регистрация
Файл: sys/core/protect_shell.php
Строк: 94
<?php
/*
    Для отладки
 $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 $db->query('SELECT `id`, `nick` FROM `user` WHERE `id`=?i LIMIT ?i', [$_SESSION['id_user'], 1])->row();
                } 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);
                        
$db->query('INSERT INTO `jurnal_system` (`time`, `type`, `id_user`, `msg`, `id_kont`)
                        VALUES ( ?i,  ?,  ?i, ?, ?i);'
, [time(), 'system'$user_ses['id'], $msg0]);
                    }
                    
                    
//баним
                    
if ($set['antihah_upload_ban'] == and isset($user_ses['nick'])) {
                        
$data = [
                                      (
time() + $set['antihah_upload_ban_time']),
                                      
'За попытку загрузки Вредоносного файла !',
                                      
$user['id'],
                                      
0
                                
];
                        
$db->query('INSERT INTO `ban` SET `time`=?i, `prich`=?, `id_user`=?i, `id_ban`=?i'$data);
                    }
                    
                    
//баним по ip
                    
if ($set['antihah_upload_ban_ip'] == 1) {
                        
//$ip = my_esc($ip);
                        
$db->query('INSERT INTO `ban_ip` (`min`, `max`,`id_user`,`time`) VALUES( ?i, ?i, ?i, ?i)', [$ip$ip0time()]);
                        
//values('{$ip}', '{$ip}', '0', '".time()."')");
                    
}
                    
                    
//удаляем опасный файл
                    
unlink($Tmpfile);
                unset(
$_FILES);
                    
//$_SESSION['message'] = 'Формат файла запрещен';
            
}
     }
 }
    
    
//банальная проверка
    
if (isset($_FILES) && !isset($continue) && $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'] = 'Формат файла запрещен';
            
}
        }
    }
Онлайн: 2
Реклама