RuCore.NET

Автоматический поиск уязвимостей в скриптах и поиск шеллов на сервере





Задача: найти шелл или другой уязвимый скрипт на сервере.
В ручную это займёт большое количество времени, поэтому прибегнем к помощи php. Для начала нужно рекурсивно собрать ссылки на все существующие файлы, а далее мы проверим каждый скрипт на наличее вредоносного кода и при необходимости уберём его с нашего сервера.

 




<?php
set_time_limit(0);
ini_set(«set_time_limit»,0);
ini_set(«memory_limit», «128M»);
function _readdir($d,&$files)
{
global $opendir;
$dir = opendir ($d);
while ( $file = readdir ($dir))
{
if (( $file != «.») && ($file != «..»))
{
$opendir=$d.»/».$file;
if(filetype($opendir)==»dir»)
{
_readdir($opendir,&$files);
}
else
{
$files[] = $opendir;
}
}
}
closedir ($dir);
}
_readdir(«.»,&$files);
$exp = array(
‘file_put_contentss*(‘,
‘fwrites*(‘,
‘fputs*(‘,
‘evals*(‘,
‘systems*(‘,
‘<frame[^>] ‘,
‘<iframe[^>] ‘
);
$regexp = ‘/.{15}b(‘.implode($exp,»|»).’)b.{15}/Uis’;
foreach ($files as $index)
{
$content = file_get_contents($index);
if(preg_match_all($regexp,$content,$match))
{
//print_r($match);
echo «<b>».$index.»</b>»;
for($j=0;$j<count($match[0]);$j )
{
$match[0][$j] = htmlspecialchars($match[0][$j]);
$match[1][$j] = htmlspecialchars($match[1][$j]);
$text = str_replace($match[1][$j], «<font color=»#FF0000″><b>».$match[1][$j].»</b></font>», htmlspecialchars($match[0][$j]));
echo «<br>».$text;
}
echo «<br><br>»;
}
}
?>



Поделись статьей с друзьями


54 просмотров



Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: