Вход Регистрация
* Manager

Автоматический поиск уязвимостей(шеллов, бэкдоров) в скриптах

  1. <?php
  2.  
  3. /* findrisk.php */
  4.  
  5. ini_set("set_time_limit",0);
  6. ini_set("memory_limit", "128M");
  7.  
  8. function _readdir($d,&$files)
  9. {
  10. global $opendir;
  11. $dir = opendir ($d);
  12. while ( $file = readdir ($dir))
  13. {
  14. if (( $file != ".") && ($file != ".."))
  15. {
  16. $opendir=$d."/".$file;
  17. if(filetype($opendir)=="dir")
  18. {
  19. _readdir($opendir,&$files);
  20. }
  21. else
  22. {
  23. $files[] = $opendir;
  24. }
  25. }
  26. }
  27. closedir ($dir);
  28. }
  29. _readdir(".",&$files);
  30.  
  31. $exp = array(
  32. 'file_put_contentss*(',
  33. 'fwrites*(',
  34. 'fputs*(',
  35. 'evals*(',
  36. 'systems*(',
  37. '<frame[^>] ',
  38. '<iframe[^>] '
  39. );
  40.  
  41. $regexp = '/.{15}b('.implode($exp,"|").')b.{15}/Uis';
  42. foreach ($files as $index)
  43. {
  44. $content = file_get_contents($index);
  45. if(preg_match_all($regexp,$content,$match))
  46. {
  47. //print_r($match);
  48. echo "<b>".$index."</b>";
  49. for($j=0;$j<count($match[0]);$j )
  50. {
  51. $match[0][$j] = htmlspecialchars($match[0][$j]);
  52. $match[1][$j] = htmlspecialchars($match[1][$j]);
  53. $text = str_replace($match[1][$j], "<font color=\"#FF0000\"><b>".$match[1][$j]."</b></font>", htmlspecialchars($match[0][$j]));
  54. echo "<br>".$text;
  55. }
  56. echo "<br><br>";
  57.  
  58. }
  59. }
  60.  
  61. ?>
» Описание: Задача: найти шелл или другой уязвимый скрипт на сервере.
В ручную это займёт большое количество времени, поэтому прибегнем к помощи php. Для начала нужно рекурсивно собрать ссылки на все существующие файлы, а далее мы проверим каждый скрипт на наличее вредоносного кода и при необходимости уберём его с нашего сервера.
» Время добавления: 10 Марта 2016 в 20:51
» Посмотров: 2373
» textarea
» Рейтинг: [+0 | -0]
Комментарии [1]
Онлайн: 1
Реклама