IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Sécurité Discussion :

Retrouvez la source de la faille sur un système maison


Sujet :

Sécurité

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 83
    Points : 55
    Points
    55
    Par défaut Retrouvez la source de la faille sur un système maison
    Bonjour les experts.

    J'ai un serveur dédié sur lequel plusieurs sites sont hébergés. (Linux, CPanel avec Bruteforce et CSF activé)

    Parmi les sites php (avec login, base de données etc sur mesure), quelques-uns se font "hackés" (c'est-à-dire : des fichiers qui s'installent dans des répertoires soit existant soit créés )
    J'ai un .htaccess placé dans la racine :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    DirectoryIndex index.php
    OPTIONS -ExecCGI  -Indexes
    RewriteEngine On
    RewriteCond %{REQUEST_URI} !^/robots.txt
    RewriteCond %{REQUEST_URI} !^/sitemap.xml
    RewriteCond %{HTTP_USER_AGENT} ^-?$ [OR] ## ANONYMES
    RewriteCond %{HTTP_USER_AGENT} ^curl|^Fetch\ API\ Request|GT::WWW|^HTTP::Lite|httplib|^Java|^LeechFTP|lwp-trivial|^LWP|libWeb|libwww|^PEAR|PECL::HTTP|PHPCrawl|PycURL|python|^ReGet|Rsync|Snoopy|URI::Fetch|urllib|WebDAV|^Wget [NC]  
    
    RewriteCond %{HTTP_USER_AGENT} ^[bcdfghjklmnpqrstvwxz\ ]{10,}|^[0-9a-z]{15,}|^[0-9A-Za-z]{19,}|^[A-Za-z]{3,}\ [a-z]{4,}\ [a-z]{4,} [OR]  
    
    
    RewriteCond %{REQUEST_METHOD} (GET|POST) [NC]
    RewriteCond %{QUERY_STRING} ^(.*)(%3C|<)/?script(.*)$ [NC,OR]
    RewriteCond %{QUERY_STRING} ^(.*)(%3D|=)?javascript(%3A|:)(.*)$ [NC,OR]
    RewriteCond %{QUERY_STRING} ^(.*)document\.location\.href(.*)$ [OR]
    RewriteCond %{QUERY_STRING} ^.*(%24&x).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^.*(127\.0).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^(.*)(%3D|=)(https?|ftp|mosConfig)(%3A|:)//(.*)$ [NC,OR]  
    RewriteCond %{QUERY_STRING} ^.*(_encode|localhost|loopback).* [NC,OR]
    RewriteCond %{QUERY_STRING} ^(.*)GLOBALS(=|[|%[0-9A-Z]{0,2})(.*)$ [OR]
    RewriteCond %{QUERY_STRING} ^(.*)_REQUEST(=|[|%[0-9A-Z]{0,2})(.*)$ [OR]
    RewriteCond %{QUERY_STRING} ^(.*)(SELECT(%20|\+)|UNION(%20|\+)ALL|INSERT(%20|\+)|DELETE(%20|\+)|CHAR\(|UPDATE(%20|\+)|REPLACE(%20|\+)|LIMIT(%20|\+)|CONCAT(%20|\+)|DECLARE(%20|\+))(.*)$ [NC]
    RewriteCond %{REQUEST_METHOD} ^(TRACE|DELETE|TRACK) [NC]
    
    RewriteCond %{REQUEST_URI} .*((php|my)?shell|remview.*|phpremoteview.*|sshphp.*|pcom|nstview.*|c99|r57|webadmin.*|phpget.*|phpwriter.*|fileditor.*|locus7.*|storm7.*)\.(p?s?x?htm?l?|txt|aspx?|cfml?|cgi|pl|php[3-9]{0,1}|jsp?|sql|xml) [NC,OR]
    RewriteCond %{REQUEST_METHOD} (GET|POST) [NC]
    RewriteCond %{QUERY_STRING} ^(.*)=/home/loginftp/(.*)$ [OR]
    RewriteCond %{QUERY_STRING} ^work_dir=.*$ [OR]
    RewriteCond %{QUERY_STRING} ^command=.*&output.*$ [OR]
    RewriteCond %{QUERY_STRING} ^nts_[a-z0-9_]{0,10}=.*$ [OR]
    RewriteCond %{QUERY_STRING} ^(.*)cmd=.*$ [OR] 
    RewriteCond %{QUERY_STRING} ^c=(t|setup|codes)$ [OR]
    RewriteCond %{QUERY_STRING} ^act=((about|cmd|selfremove|chbd|trojan|backc|massbrowsersploit|exploits|grablogins|upload.*)|((chmod|f)&f=.*))$ [OR]
    RewriteCond %{QUERY_STRING} ^act=(ls|search|fsbuff|encoder|tools|processes|ftpquickbrute|security|sql|eval|update|feedback|cmd|gofile|mkfile)&d=.*$ [OR]
    RewriteCond %{QUERY_STRING} ^&?c=(l?v?i?&d=|v&fnot=|setup&ref=|l&r=|d&d=|tree&d|t&d=|e&d=|i&d=|codes|md5crack).*$ [OR]
    RewriteCond %{QUERY_STRING} ^(.*)([-_a-z]{1,15})=(ls|cd|cat|rm|mv|vim|chmod|chdir|concat|mkdir|rmdir|pwd|clear|whoami|uname|tar|zip|unzip|gzip|gunzip|grep|more|ln|umask|telnet|ssh|ftp|head|tail|which|mkmode|touch|logname|edit_file|search_text|find_text|php_eval|download_file|ftp_file_down|ftp_file_up|ftp_brute|mail_file|mysql|mysql_dump|db_query)([^a-zA-Z0-9].+)*$ [OR]
    RewriteCond %{QUERY_STRING} ^(.*)(wget|shell_exec|passthru|system|exec|popen|proc_open)(.*)$
    
    RewriteRule (.*) - [F]
    Via les logs d'apache, je sais juste voir l'exécution du script installé et non comment il a été placé.
    Plutôt d'interdire , on ne peut pas trouver la source du problème ?

    Merci d'avance ..

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 235
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 235
    Points : 15 532
    Points
    15 532
    Par défaut
    la faille peut se trouver n'importe où, dans un script PHP qui ne vérifie pas correctement ses entrées par exemple

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 83
    Points : 55
    Points
    55
    Par défaut
    Merci pour ta réponse.

    Comme j'ai des dizaines de fichiers et des milliers de lignes de codes, il n'y a pas un moyen plus simple : par exemple : via les logs qui m’indiqueraient le début de la faille ? Apache n'est pas capable de générer un log précis ?

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Février 2004
    Messages
    83
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2004
    Messages : 83
    Points : 55
    Points
    55
    Par défaut
    J'ai ajouté également ce bout de code dans le fichier index.php (qui appelle tous les autres fichiers)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
     error_reporting(0);
     ini_set(allow_url_fopen, 0);
     ini_set(allow_url_include, 0);
    
    		foreach ($_POST as $key => $val) 
    		{
      			$val = preg_replace("/[^_A-Za-z0-9-\.&=]/i",'', $val);
    			$_POST[$key] = $val;
    		}  
    
    		foreach ($_GET as $key => $val) 
    		{
      			$val = preg_replace("/[^_A-Za-z0-9-\.&=]/i",'', $val);
    			$_GET[$key] = $val;
    		}  
    
    
    		foreach ($_REQUEST as $key => $val) 
    		{
      			$val = preg_replace("/[^_A-Za-z0-9-\.&=]/i",'', $val);
    			$_REQUEST[$key] = $val;
    		}
    cette solution est idéale pour bloquer ce genre d'upload de fichier même si la faille n'est pas corrigée?

Discussions similaires

  1. Trouver la source d'une image sur une page web
    Par will97 dans le forum Réseau/Web
    Réponses: 2
    Dernier message: 02/03/2009, 04h38
  2. [SSIS][2k5]failles sur un LOOKUP
    Par magicsam dans le forum SSIS
    Réponses: 2
    Dernier message: 12/06/2008, 20h45
  3. Réponses: 5
    Dernier message: 06/09/2007, 09h49
  4. Réponses: 1
    Dernier message: 24/07/2006, 21h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo