Провека логов апача на наличие веб-шеллов / Log file Apache checker (perl)

6 Авг

Вот собсно и сам чекер:

#!/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

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.