Автоматический поиск уязвимостей в скриптах
- <?php
- /* findrisk.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>";
- }
- }
- ?>
Задача: найти шелл или другой уязвимый скрипт на сервере.
В ручную это займёт большое количество времени, поэтому прибегнем к помощи php. Для начала нужно рекурсивно собрать ссылки на все существующие файлы, а далее мы проверим каждый скрипт на наличее вредоносного кода и при необходимости уберём его с нашего сервера.
В ручную это займёт большое количество времени, поэтому прибегнем к помощи php. Для начала нужно рекурсивно собрать ссылки на все существующие файлы, а далее мы проверим каждый скрипт на наличее вредоносного кода и при необходимости уберём его с нашего сервера.