Вот собсно и сам чекер:
#!/usr/local/bin/perl #>Чекер логов апача на предмет вызова веб шеллов, выполнения команд на сервере. #>Поиск осуществляется не только по именам известных веб шеллов, команд, а ещё и с использованием #>запросов передаваемых в веб шеллах, что повышает процент вероятности их обнаружения. print "\n"; print "[ Log checker for Apache\t"; print "(C) spl33n Log Checker 2005 ]"; $file = "access.log"; # Имя лог файла (необходимо изменить на прямой путь к этому файлу, если скрипт не лежит в папке с лог-файлом) ########################### #веб шеллы: @search[0] = "nstview"; @search[1] = "remview"; @search[2] = "r57shell"; @search[3] = "nghshell"; @search[4] = "c99shell"; @search[5] = "dump_price"; @search[6] = "phpMyAdmin"; @search[7] = "bd.pl"; @search[8] = "KA_uShell"; @search[9] = "phpshell"; @search[10] = "r57pws"; @search[11] = "WebShell"; @search[12] = "shell"; @search[13] = "cmd="; @search[31] = "telnet.cgi"; # команды: @search[14] = "ls -al"; @search[15] = "wget"; @search[16] = "curl"; @search[17] = "uname"; # Shell запросы: @search[19] = "ac=shell"; @search[20] = "work_dir=/"; @search[21] = "tmp"; @search[22] = "img=1"; @search[23] = "img=2"; @search[24] = "d="; @search[25] = "&ef="; @search[26] = "&shell=1"; @search[27] = "c=l&d="; @search[28] = "c=d&d="; @search[29] = "php&var="; @search[30] = "c=v&d="; ############################ open(FILE,"$file") || die "Apache log File not found\n"; # Если не найден, то проверь указанный путь к лог файлу апача while(<FILE> ) {if(/(@search[0]|@search[1]|@search[2]|@search[3]|@search[4]|@search[5]|@search[6]|@search[7]|@search[8] |@search[9]|@search[10]|@search[11]|@search[12]|@search[13]|@search[14]|@search[5]|@search[16]|@search [17]|@search[19]|@search[20]|@search[21]|@search[22]|@search[23]|@search[24]|@search[25]|@search[25]| @search[26]|@search[27]|@search[28]|@search[29]|@search[30]|@search[31])/i){push @matches, $_;}} print @matches; open(LogFile, '>>logcheck.txt'); print LogFile "IP adress\t"; print LogFile "Time\t\t\t\t"; print LogFile "Script's\n"; open(LogFile, '>>logcheck.txt'); open(LogFile, '>>logcheck.txt'); print LogFile @matches; open(LogFile, '>>logcheck.txt'); print LogFile "Work is finished!\n"; print "Work is finished!\n"; EOF
В результате создается файл logcheck.txt, в котором вы увидите все запросы к возможным шеллам на веб-сервере.
(Find shell in php sources)
Также для заметки, небольшой обзор опасных php функций и ф-ций вызова шеллов, которые желательно отключить в конфиге php:
exec, passthru, shell_exec, system, proc_open, popen, curl_exec, curl_multi_exec, parse_ini_file, show_source, system, passthru
Rating of article:
[Total: 0 Average: 0]