RE = $out['reque'] = $_SERVER['REQUEST_URI']; #$out['redir'] = $_SERVER['REDIRECT_URL']; #$out['ip1'] = $_SERVER['HTTP_X_FORWARDED_FOR']; $this->IP = $out['ip2'] = $_SERVER['REMOTE_ADDR']; $out['ua'] = $_SERVER['HTTP_USER_AGENT']; if($this->IP!='37.29.121.162') { $this->check_ban($this->IP); $this->check_ua($out['ua']); $this->check_url($out['reque']); } } /** * Проверям есть ли ИП в бане уже, более 3 банов сразу баним! * если меньше то делаем задержку 1 секунда * @param $ip * @return void */ function check_ban($ip){ $file = 'tmp/ban/'.$ip.'.json'; if (file_exists($file)){ $json = json_decode(file_get_contents($file),1); if($json['kol']>3) die('ошибка сервера 2'); else sleep(1); } } /** * Записываем подозрительные ИП и баним * @return void */ function ban(){ $file = 'tmp/ban/'.$this->IP.'.json'; if (file_exists($file)){ $json = json_decode(file_get_contents($file),1); $json['time'] = time(); $json['kol']++; $json['url'][]=$this->RE; file_put_contents($file,json_encode($json)); }else{ $json = array(); $json['time'] = time(); $json['kol'] = 1; $json['url'][]=$this->RE; file_put_contents($file,json_encode($json)); } die('ошибка сервера 1'); } /** * Проверяем по словарю адресную строку и баним при совпадении * @param $url * @return void */ function check_url($url){ $slovar = $this->slovar(); foreach ($slovar as $key => $val){ if(strpos($url, $val)!==False){ $this->ban(); } } } /** * Проверяем ЮзерАгента и баним если это подозрительный * @param $ua * @return void */ function check_ua($ua){ $ban = false; if(strpos($ua, 'Kali')!==False){ $ban = true; } if($ban){ $this->ban(); } } /** * Словарь не наших слов в адресной строке * @return array */ function slovar(){ $out = array(); $out[] = '../'; $out[] = '..%2F'; $out[] = '/etc'; $out[] = '/passwd'; //$out[] = '/admin'; $out[] = 'option=com'; $out[] = 'wp-config'; $out[] = 'wp-content'; $out[] = 'localPath'; $out[] = '.jsp'; $out[] = '/pwn'; $out[] = 'functionRouter'; $out[] = '/cgi-bin'; $out[] = 'instancemanager'; $out[] = '+CSCOU+'; $out[] = '/scripts/setup'; $out[] = '/ecp'; $out[] = 'adminer'; return $out; } function syssys_html_head(){ $out = '
Дата | '; echo 'Файл | '; echo '
---|---|
[' . count($output) . '] featureShell p0wny eval( | |
' . $data . ' | '; echo '' . str_replace('/home/admin/web/eios.mkgtu.ru/public_html/', '', $file) . ' | '; echo '
'.$this->syssys_getcontentfile($file,$finds).' | |
[' . count($output) . '] $emaillist=$_POST $emaillist= $smtp_username= $smtp_password= Sender Anonym Email | |
' . $data . ' | '; echo '' . str_replace('/home/admin/web/eios.mkgtu.ru/public_html/', '', $file) . ' | '; echo '
'.$this->syssys_getcontentfile($file,$finds).' | |
[' . count($output) . '] различные ботнетовские редиректы | |
' . $data . ' | '; echo '' . str_replace('/home/admin/web/eios.mkgtu.ru/public_html/', '', $file) . ' | '; echo '
'.$this->syssys_getcontentfile($file,$finds).' | |
[' . count($output) . '] malware скрипты | |
' . $data . ' | '; echo '' . str_replace('/home/admin/web/eios.mkgtu.ru/public_html/', '', $file) . ' | '; echo '
'.$this->syssys_getcontentfile($file,$finds).' | |
[' . count($output) . '] различные malware в java скриптах | |
' . $data . ' | '; echo '' . str_replace('/home/admin/web/eios.mkgtu.ru/public_html/', '', $file) . ' | '; echo '
'.$this->syssys_getcontentfile($file,$finds).' |
'.print_r($output,1).''; } if($des=='') { echo $this->syssys_html_head(); echo '
Дата | '; $html .= 'IP | '; $html .= 'Метод | '; $html .= 'УРЛ | '; $html .= 'Код | '; $html .= 'Запрос | '; $html .= 'Юзерагент | '; $html .= '
---|---|---|---|---|---|---|
' . $val1['data'] . ' | '; $html .= '' . $val1['ip'] . ' | '; $html .= '' . $val1['method'] . ' | '; $html .= '' . $val1['urlp'] . ' | '; $html .= '' . $val1['code'] . ' | '; $html .= '' . $val1['url'] . ' | '; $html .= '' . $val1['ua'] . ' | '; $html .= '
'.print_r($this->syssys_parse_find($output),1).''; echo '
Дата | '; echo 'Файл | '; echo '||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
' . $val['data_c'] . ' | '; echo '' . $val['file'] . ' | '; echo '||||||||||||||
';
echo '
| ';
echo '
'.print_r($arr,1).''; if(count($arr)>2){ $tmp=array(); $tmp['ip'] = $arr[1][0]; $tmp['data'] = $arr[2][0]; $tmp['method'] = $arr[3][0]; $tmp['urlp'] = $arr[4][0]; $tmp['http'] = $arr[5][0]; $tmp['code'] = $arr[6][0]; $tmp['size'] = $arr[7][0]; $tmp['url'] = $arr[8][0]; $tmp['ua'] = $arr[9][0]; $out[] = $tmp; }else $out[]['line'] = $line; } return $out; //echo '
'.print_r($output,1).''; } function syssys_get_logs_IP($ip){ $out = array(); $command = 'grep '.$ip.' /home/admin/web/eios.mkgtu.ru/logs/eios.mkgtu.ru.log'; // [0] => 62.183.98.199 - - [12/Apr/2022:10:02:40 +0300] "GET /upload/iup/208/98062.php HTTP/1.0" 200 177818 "https://eios.mkgtu.ru/iup/student/edit/5400/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/92.0.4495.0 Safari/537.36" exec($command, $output); foreach($output as $key => $line){ preg_match_all('|(.*) - - \[(.*)\] "(.*) (.*) (.*)" (.*) (.*) "(.*)" "(.*)"|isU',$line,$arr); if(count($arr)>2){ $tmp=array(); $tmp['ip'] = $arr[1][0]; $tmp['data'] = $arr[2][0]; $tmp['method'] = $arr[3][0]; $tmp['urlp'] = $arr[4][0]; $tmp['http'] = $arr[5][0]; $tmp['code'] = $arr[6][0]; $tmp['size'] = $arr[7][0]; $tmp['url'] = $arr[8][0]; $tmp['ua'] = $arr[9][0]; $out[] = $tmp; }else $out[]['line'] = $line; } return $out; } }