Apache + VirtualHost + Directory = aucune sécurité ?

Apache + VirtualHost + Directory = aucune sécurité ? - réseaux et sécurité - Linux et OS Alternatifs

Marsh Posté le 16-08-2006 à 01:39:49    

Bonjour,
 
J'ai fais un petit serveur web sous apache avec plusieurs domaines (donc virtualhosts) gérés...
Tout marche parfaitement. Mais ce soir je décide de tester ce que d'éventuels pirates pourraient faire...et là je m'apercois qu'en téléchargeant par exemple le programme "QuiXplorer", qui est juste un script php permettant de naviguer dans l'arborescence du serveur, que je pouvais accéder aux répertoires de sites "concurrents"  :pt1cable:  :pt1cable:  :ouch:  
 
J'explique mieux la situation... j'ai cette arborescence :  
 
/var/www/
/var/www/main/ = répertoire "root" (et vide) qui est utilisé quand on accède au serveur directement via l'IP (sans utiliser de domaine quoi  :o )
/var/www/toto.com/ = répertoire du site web "www.toto.com"
/var/www/abc.fr/ = répertoire du site web "www.abc.fr"
 
Mainteant si j'extrait les scripts php de "QuiXplorer" (+ configuration) dans /var/www/toto.com/quix/ et que je tape l'url http://www.toto.com/quix/ je vois les fichiers de www.toto.com, jusque là normal. Maintenant si je change la config de QuiXplorer en mettant comme "base directory" /var/www/abc.fr/ et que je tape l'url http://www.toto.com/quix/ je vois les fichiers/répertoires du domaine www.abc.fr et là c'est pas normal  :ouch:  :ouch:  :ouch:  
 
Voilà l'extrait de la configuration de httpd.conf :

Citation :

DocumentRoot /var/www/main
 
<Directory />
    Options SymLinksIfOwnerMatch
    AllowOverride None
 
    Order allow,deny
    Deny from all
</Directory>
 
<Directory /var/www/>
    Options FollowSymLinks MultiViews
    AllowOverride All
 
    Order allow,deny
    Allow from all
</Directory>
 
<VirtualHost 192.168.1.1>
DocumentRoot /var/www/main/
ServerName 192.168.1.1
</VirtualHost>
 
<VirtualHost 192.168.1.1>
DocumentRoot /var/www/toto.com/
ServerName www.toto.com
ErrorLog /var/log/apache/www.toto.com_error_log
TransferLog /var/log/apache/www.toto.com_access_log
</VirtualHost>
 
<VirtualHost 192.168.1.1>
DocumentRoot /var/www/abc.fr/
ServerName www.abc.fr
ErrorLog /var/log/apache/www.abc.fr_error_log
TransferLog /var/log/apache/www.abc.fr_access_log
</VirtualHost>


 
A prioris ca vient du fait que j'autorise tout le monde sur le répertoire racine /var/www/ qui contient les deux sites...ok mais je pensais qu'un virtual host était plus fort et aller les encapsuler dans leur répertoire respectif ?  :??:  :heink:  
 
Comment corriger ce gros trou de sécurité ?  :??:  
Merci de m'aider, je comprends plus rien là.  :sweat:


Message édité par AthlonSoldier le 16-08-2006 à 01:39:57
Reply

Marsh Posté le 16-08-2006 à 01:39:49   

Reply

Marsh Posté le 16-08-2006 à 03:29:21    

Reply

Marsh Posté le 16-08-2006 à 04:58:53    

Merci  :jap:
 
Pour ceux qui un jour auraient le même problème j'ai donc rajouté simplement une ligne à la fin de chaque virtual host, par exemple :
 

Citation :

<VirtualHost 192.168.1.1>
DocumentRoot /var/www/abc.fr/
ServerName www.abc.fr
ErrorLog /var/log/apache/www.abc.fr_error_log
TransferLog /var/log/apache/www.abc.fr_access_log
php_admin_value open_basedir /var/www/abc.fr/
</VirtualHost>


Message édité par AthlonSoldier le 16-08-2006 à 05:00:55
Reply

Marsh Posté le 16-08-2006 à 09:44:02    

Ce n'est pas un "gros trou de sécurité" du coté d'apache mdr.
C'est simplement que tu n'a pas bien sécurisé ton php.ini  :non:  
Les exploreurs php se servent des commandes comme system(), passthru(), exec(), shell() pour remonter des repertoires (cd ..) et les lister (ls)
 
il suffit simplement d'interdire ces fonctions dans php.ini en rajoutant  

Code :
  1. disable_functions =


et en ajoutant les fonctions que tu veux interdire.
Tu peux aussi activer le safe_mode=on.
 
Avant de dire que tu as découvert un enorme trou de sécu, regarde la source de ton explorateur php pour voir comment il fonctionne, tu verra qu'il n'ya rien de magique ;)

Message cité 1 fois
Message édité par tabb le 16-08-2006 à 09:45:17
Reply

Marsh Posté le 16-08-2006 à 13:00:02    

Non c'est faux. Tu ne peux faire aucune commande système sur mon serveur. En fait si, je n'ai pas désactivé exec()...mais tu ne peux pas aller bien loin, vu que tu ne peux executer que deux scripts (j'ai restreint toutes les commandes à un répertoire). Alors les "ls" & co ne marche pas du tout. :)

Reply

Marsh Posté le 16-08-2006 à 14:32:05    

tabb a écrit :

Ce n'est pas un "gros trou de sécurité" du coté d'apache mdr.
C'est simplement que tu n'a pas bien sécurisé ton php.ini  :non:  
Les exploreurs php se servent des commandes comme system(), passthru(), exec(), shell() pour remonter des repertoires (cd ..) et les lister (ls)


[:k-nar]
 
Euh php se sert de son API hein, c'est plus simple et moins dangereux que de lancer des executions [:pingouino]


---------------
Bitcoin, Magical Thinking, and Political Ideology
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed