Excludera filer?

PHPportalen Forum Index » PHP
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
marcusgarden



Medlem i: 3197 dagar

Status: Offline



#742266
Inlägg Skrivet: 2018-08-13 10:50      Ämne: Excludera filer? Citera

Jag har följande för att söka igenom filer för skadlig kod (har lagt till $this->scanned_files[] = '.ftpquota'; för att INTE söka igenom den filen, men får ändå deta meddelande av siten Warning: file_get_contents(/home/wwwroot/sites/minsite.se/html/.ftpquota) [function.file-get-contents]: failed to open stream: Permission denied in /home/wwwroot/sites/minsite.se/html/check.php on line 44), hur gör jag för att inte söka i just den filen?
Samt, finns det bättre kod för att scanna mina filer?

KOD:
1:
<?php
2:
/*
3:
Plugin Name: php Malicious Code Scanner
4:
Plugin URI: http://www.mikestowe.com/phpmalcode
5:
Description: The php Malicious Code Scanner checks all files for one of the most common malicious code attacks, the eval( base64_decode() ) attack...
6:
Version: 1.3 alpha
7:
Author: Michael Stowe
8:
Author URI: http://www.mikestowe.com
9:
Credits: Based on the idea of Er. Rochak Chauhan (http://www.rochakchauhan.com/), rewritten for use with a cron job
10:
License: GPL-2
11:
*/
12:
 
13:
 
14:
// Set to your email:
15:
define('SEND_EMAIL_ALERTS_TO','min@mail.com');
16:
 
17:
 
18:
############################################ START CLASS
19:
 
20:
 
21:
class phpMalCodeScan {
22:
 
23:
   public $infected_files = array();
24:
   private $scanned_files = array();
25:
   
26:
   
27:
   function __construct() {
28:
      $this->scan(dirname(__FILE__));
29:
      $this->sendalert();
30:
   }
31:
   
32:
   
33:
   function scan($dir) {
34:
      $this->scanned_files[] = $dir;
35:
      $this->scanned_files[] = '.ftpquota';
36:
      $files = scandir($dir);
37:
      
38:
      if(!is_array($files)) {
39:
         throw new Exception('Unable to scan directory ' . $dir . '.  Please make sure proper permissions have been set.');
40:
      }
41:
      
42:
      foreach($files as $file) {
43:
         if(is_file($dir.'/'.$file) && !in_array($dir.'/'.$file,$this->scanned_files)) {
44:
            $this->check(file_get_contents($dir.'/'.$file),$dir.'/'.$file);
45:
         } elseif(is_dir($dir.'/'.$file) && substr($file,0,1) != '.') {
46:
            $this->scan($dir.'/'.$file);
47:
         }
48:
      }
49:
   }
50:
   
51:
   
52:
   function check($contents,$file) {
53:
      $this->scanned_files[] = $file;
54:
      if(preg_match('/(?<![a-z0-9_])eval\((base64|eval|\$_|\$\$|\$[A-Za-z_0-9\{]*(\(|\{|\[))/i',$contents)) {
55:
         $this->infected_files[] = $file;
56:
      }
57:
   }
58:
 
59:
 
60:
   function sendalert() {
61:
      if(count($this->infected_files) != 0) {
62:
         $message = "== MALICIOUS CODE FOUND == \n\n";
63:
         $message .= "The following files appear to be infected: \n";
64:
         foreach($this->infected_files as $inf) {
65:
            $message .= "  -  $inf \n";
66:
         }
67:
         mail(SEND_EMAIL_ALERTS_TO,'Malicious Code Found!',$message,'FROM:');
68:
      }
69:
   }
70:
 
71:
 
72:
}
73:
 
74:
 
75:
############################################ INITIATE CLASS
76:
 
77:
ini_set('memory_limit', '-1'); ## Avoid memory errors (i.e in foreachloop)
78:
 
79:
new phpMalCodeScan;
80:
 
81:
 
82:
?>
83:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
harald_b
Moderator



Medlem i: 4658 dagar
Från: Tavesta
Status: Offline



#742267
Inlägg Skrivet: 2018-08-14 11:31      Ämne: Citera

När du skall välja bort .ftpquota på rad 43 söker du efter $dir.'/'.$file i arrayen, men när du lägger in .ftpquota på rad 35 har du inte med $dir.'/'


Att scanna efter skadlig kod är aldrig ett säkert skydd mot skadlig kod. Det är ganska enkelt att anpassa den skadliga koden så den inte upptäcks, och när den skadliga koden redan tagit sig in kan ju skadan redan vara skedd.
 

_________________
R.r - Ett fritt affärssystem
Till toppen på sidan
Visa användarprofil Skicka privat meddelande
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic