PHP et sécurité

PHP et sécurité - Programmation

Marsh Posté le 02-08-2002 à 13:30:03    

Salut tout le monde! J'ai vu sur plusieurs site des histoires de trous de sécurité dans des site en php... J'amerais savoir de quoi il sagit exactement et comment faire pour que son site soit sécurisé.  
Merci d'avance

Reply

Marsh Posté le 02-08-2002 à 13:30:03   

Reply

Marsh Posté le 02-08-2002 à 13:36:41    

ben déjà mettre la dernière version je pense (parce qu'il y avait un problème dans une des versions précédentes)
 
 
 


Message édité par art_dupond le 02-08-2002 à 13:39:17

---------------
oui oui
Reply

Marsh Posté le 02-08-2002 à 14:06:01    

Euh... la dernière version de koi? Moi, je pensais que le trou de sécu se trouvait dans le code... Enfin, je sais pas trop, j'y connais rien en php.

Reply

Marsh Posté le 02-08-2002 à 16:02:25    

2 sources de problèmes : l'interpréteur PHP (c'est là qu'il faut utiliser la dernière version car certaines contiennent des fonctions pas très secure et activées par défaut) et le code proprement dit. En général, il s'agit de Buffer Overflow, c'est à dire que par exemple si tu rentres une chaine de caractère trop longue dans une variable, tu dépasses la taille de la variable et tu écrases ce qui se trouve en mémoire. Cela provoque un pétage de plombs de l'interpréteur et tu peux exécuter du code qui n'est pas prévu à l'origine.

Reply

Marsh Posté le 16-08-2002 à 01:35:18    

Par exemple : j'ai une page avec un peu de texte et deux tableaux assez important. Quand j'essai de le lire, le navi tente a plusieurs reprises de l'afficher, mais n'y paevient jamais :
1- Soit il fait "impossible d'afficher la page.
2- Ou, il fait pleins d'erreurs (style, case decallées etc.)
Ca veut dire koi exactement? Et comment regler ce problême.

Reply

Marsh Posté le 16-08-2002 à 01:38:18    

bizarre comme erreur je ne pense pas que ça viennent du PHP, tu as beaucoup de PHP sur ta page ???
 
C'est une erreur du php qu'on te sort ???

Reply

Marsh Posté le 16-08-2002 à 01:42:19    

Ba je sais pas (j'y connais pas grand chose) mais j'utilise le php que pour faire des includes (pour l'instant). En fait, ma page et un fichier *.php3 mais qui ne contient que du texte et des tableaux... D'ailleurs, je vois même pas ce que tu entend pas erreur de php...  :sarcastic:

Reply

Marsh Posté le 16-08-2002 à 02:02:50    

Utilise pas PHP alors si c'est que pour des include
 
http://httpd.apache.org/docs/mod/mod_include.html


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 16-08-2002 à 02:21:56    

En plus il y a même pas besoin de mettre du PHP sur son site, la seul contraine de cette méthode est d'être sur serveur Apache, mais t'inquiète electroger, les serveurs Windows sont en voie de disparition  :D  
 
Je trouve bizarre cette mode de dire qu'on c'est faire du PHP, parce qu'on a fais son site à l'aide de la fonction include() du PHP ...

Reply

Marsh Posté le 16-08-2002 à 02:35:44    

Mouarf je pensais etre tombé sur le topic que je cherchais. En fait je pensais que l'on y aurait repertorié toute les failles que peut contenir du code de debutant en php.
 
Par exemple mon site a ete pirater 2 fois...  
1 fois a cause de la version rc2 de phpbb, une connerie.
1 fois a cause d'une histoire de variable pas protégé qui permettait au pirate d'inclure sur mon site une page a lui qui permet d'afficher la valeur des variable, comme $user et $pass si vous voyez ce que je veut dire -_-  
 
Alors voila ca serait sympa que certain dise les trucs a faire pour que son code ne contienne pas de faille evidente.

Reply

Marsh Posté le 16-08-2002 à 02:35:44   

Reply

Marsh Posté le 16-08-2002 à 02:39:33    

Olivier51 a écrit a écrit :

En plus il y a même pas besoin de mettre du PHP sur son site, la seul contraine de cette méthode est d'être sur serveur Apache, mais t'inquiète electroger, les serveurs Windows sont en voie de disparition  :D  
 




 
C'est bien, on vient d'apprendre que Windows est un serveur web... Et qu'Apache n'existe pas sous Windows  :ouch:


---------------
Informaticien.be - Lancez des défis à vos amis
Reply

Marsh Posté le 16-08-2002 à 02:58:17    

Pour en revenir a mon prob du 2eme piratage. On m'a dit qu'il falait que j'empeche une page de s'executer sur mon site si elle n'etait pas sur la racine du site. Mais comment on fais pour ca ?  
 
J'avais penser a utilisé un otre moyen, cad ouvrir une session a l'index du site, puis d'ouvrir la page seulement si la session est ouverte. Le prob c'est que ca empeche les visiteurs d'acceder a une otre page que l'index directement...

Reply

Marsh Posté le 16-08-2002 à 04:30:42    

electroger a écrit a écrit :

Salut tout le monde! J'ai vu sur plusieurs site des histoires de trous de sécurité dans des site en php... J'amerais savoir de quoi il sagit exactement et comment faire pour que son site soit sécurisé.  
Merci d'avance




 
je connais (pour les avoir testé :D) 2 grosses failles de programmation :

  • les includes

facile à deviner... si tu fais une inclusion de fichier incluant un fichier en fonction de ce qui est passé dans l'url, tu dois bien tester le nom du fichier à inclure et exclure tout les / au minimum de ce nom.
ex:
url= index.php?menu=mapage.php
 
include('header.php';);
include($menu);
include('footer.php';);
 
si c'est sur ton serveur, je peux remonter jusqu'à ton /etc/password (fichier des pwd sous Linux)
 

  • les uploads de fichiers

- si tu ne testes pas le type de fichier que tu permets d'uploader (une image par ex) je peux uploader du code php qui me permet de rentrer sur ton pc.
- si tu ne testes pas le nom du fichier uploadé et que tu le recopies tel quel sur le disque, je peux uploader (et écraser)du code php qui me permet de rentrer sur ton pc.
 
voila ;)  
alors codez bien !


---------------
...oups kernel error...
Reply

Marsh Posté le 16-08-2002 à 07:54:56    

Ca a l'air compliqué tout ça...  :ouch:  
Au passage Olivier51, si tu trouve un endroit ou je dis savoir codé en php... Je sais pas ou tu va chercher ça! Mais effectivement tu peux légitimement trouver ça bizard...
Bon, moi je comprend rien... J'avais laissé sur ce forum, un message pour savoir quel était le meilleur moyen de faire un site en partant d'un tableau (case gche > sommaire, centrale> page principale etc.), ben... la reponse était claire : PHP. Et maintenant, on me dis non, c'est pas la peine!  :heink:

Reply

Marsh Posté le 16-08-2002 à 08:54:31    

Olivier51 a écrit a écrit :

En plus il y a même pas besoin de mettre du PHP sur son site, la seul contraine de cette méthode est d'être sur serveur Apache, mais t'inquiète electroger, les serveurs Windows sont en voie de disparition  :D



Apache 2 est largement plus performant qu'Apache 1.3 sur les plateformes Windows. Il va en falloir un peu plus pour se débarasser de Windows ;)

Olivier51 a écrit a écrit :

Je trouve bizarre cette mode de dire qu'on c'est faire du PHP, parce qu'on a fais son site à l'aide de la fonction include() du PHP ...



Ben les SSI c'est bien mais encore faut-il que le seveur les supporte. Ce qui n'est peut-être pas le cas de son hébergeur. Dans ce cas, pas d'autres choix que d'utiliser PHP.

Reply

Marsh Posté le 16-08-2002 à 12:46:20    

Citation :

C'est bien, on vient d'apprendre que Windows est un serveur web... Et qu'Apache n'existe pas sous Windows  


 
C'est vrai j'ai écris Windows, mais je vous parler du serveur de Microsoft, pardon ...
 

Citation :

Au passage Olivier51, si tu trouve un endroit ou je dis savoir codé en php... Je sais pas ou tu va chercher ça! Mais effectivement tu peux légitimement trouver ça bizard...  


 
C'est vrai que dans ton message electroger, tu ne dis pas savoir programmer en PHP, mais je ne parlais pas pour toi, je parlais pour des personnes que j'ai vu sur ce forum et sur d'autres forums, re: pardon ...
 
Il faudrait que j'arrête de poster la nuit, ça me fais écrire de posts qui sont à chaque fois contesté ...
 

Reply

Marsh Posté le 16-08-2002 à 20:07:32    

C'est pas grave Olivier51  :D , mais je ne prétends absoluement pas savoir coder en php.
Pour info, mon herbergueur c'est free... Alors vous en pensez koi de tout ça? Perso, je commence à être serieusement perdu avec tous ces termes barbares que vous employés...

Reply

Marsh Posté le 17-08-2002 à 01:17:27    

Concretement, qu'es sont les risques avec les trous de sécu? (piratage? etc)

Reply

Marsh Posté le 17-08-2002 à 01:45:12    

Bah les risques c'est pas compliqués, ils peuvent TOUT t'effacés, c'est pour ce qu'un webmaster d'un site qui commence a avoir de l'importance doit faire regulierement des backup de la bdd et du ftp.
 
Moi ce qui m'interesse, c'est les erreurs a pas faire.
 
Pour ta solution ethernal c'est pas mal mais en general je classe tt mes fichiers a inclure dans un rep inc donc mes url sont du genre ?url=inc/page.php. En plus je pense que ca resout pas le trou de securité des includes que les gars ont utilisé pour hacker mon site la 2eme fois. Qqs m'avait dit qu'il faut codé sa variable d'include, ou mettre un id mais je sais pas coment on fait.
Qqn peut m'eclairer plz ?

Reply

Marsh Posté le 17-08-2002 à 01:53:20    

J'arrive pas a comprendre comment ça peut arriver... Ba, ouais, comme un hacker peut tout effacer sans avoir le login et le code de mon site?  :heink:

Reply

Marsh Posté le 17-08-2002 à 02:44:19    

Bah si justement grace a la faile il chope le code et le login. T'as pas du encore en faire mais quand tu fais une requete vers une base de donnée, tu dois indiquer ton login et ton pass qui sont stoqués dans une variable.
 
Maitenant si j'en crois ethernal on peut aussi avoir ton code en incluant /etc/password...
 
Mais ds tt les cas ils doivent avoir tes codes pour suprimer ou modifier tes fichiers.

Reply

Marsh Posté le 17-08-2002 à 02:50:34    

[HS] C'est normal que je ne vois pas l'avatar des membre dans le forum programmation ?

Reply

Marsh Posté le 17-08-2002 à 09:00:27    

Vadrigar a écrit a écrit :

 
Moi ce qui m'interesse, c'est les erreurs a pas faire.
 
... je classe tt mes fichiers a inclure dans un rep inc donc mes url sont du genre ?url=inc/page.php.




 
là tu es mal barré ;)
php autorise l'include d'un fichier situé sur un autre serveur... ce qui veux dire qu'avec ton système url=inc/page.php je peux inclure un fichier sur un autre serveur web qui contient  

Code :
  1. $fp= fopen('index.php','r');
  2.   $content= fread($fp, filesize('index.php') );
  3.   fclose($fp);
  4.   echo $content;


j'affiche le contenu, je peux déjà le modifier (avec un fwrite) si je veux...
et ainsi de suite jusqu'à récupérer le login et pwd, puis je fais ce que je veux par ftp :D
 
Sécurité = tout mettre dans des tableaux !

Code :
  1. $menu= array('index' => 'index.php',
  2.      'news' => 'news.php');
  3. switch($url){
  4.    case 'index' : include ($menu[$url]); break;
  5.    case 'news' : include ($menu[$url]); break;
  6.    default : include ($menu['index']);
  7. }


ou plus simplement:

Code :
  1. $menu= array('index' => 'index.php',
  2.      'news' => 'news.php');
  3. if (!@include($menu[$url])){
  4.   include ('error.php');
  5. }


 
c tot con, et avec ça pas moyen de passer outre ;)


---------------
...oups kernel error...
Reply

Marsh Posté le 17-08-2002 à 09:05:53    

si tu veux une explication plus détaillée : http://www.newshackers.com/?nh=faillephp


---------------
...oups kernel error...
Reply

Marsh Posté le 17-08-2002 à 13:00:09    

Ben, moi j'utilise le php rien que pour les includes, parce que je voulais faire un site qui avait pour base un tableau (sommaire / page principale ...). Mais je ne pense pas que mon code contient mon login et code... Donc je ne devrais pas avoir de prob? Il y a comme même mon forum (phpBB2  :)  ) qui contient code et login de mon compte multimania (site sur free et forum sur multi). Alors est ce qu'il y a un risque pour mon forum?

Reply

Marsh Posté le 17-08-2002 à 13:26:24    

il y a pas que les login et pwd, même sans eux avec cette faille tu modifies, uploads, effaces ce que tu veux sur ton site.
donc oui, tu risques gros ;)
 


---------------
...oups kernel error...
Reply

Marsh Posté le 17-08-2002 à 14:21:15    

Je viens de lire ton lien Ethernal et je dois bien avouer que je suis surpris par les possibilités qu'offrent les includes au hacker...  :ouch:  Comment puis-je sécuriser mon site?

Reply

Marsh Posté le 17-08-2002 à 14:21:41    

Hum je fais jamais de switch alors chui larguer pour le tableau...
 
J'ai lu l'article de newshackeur et moi mon code etait proteger contre ca.
Je ne donne jamais a la valeur de ma variable un nom de page direct mais news pour news.htm par exemple. Ensuite sur la page de la pseudo frame (centre.php) je verifie avec:
 

<?
if ($page=='news') {include('news.php3');}
elseif ($page=='formulaire') {include('formulaire.php3');}
else {include('defaut.php3');}
?>


 
Si le gars veut m'envoyer une page du type hacker.htm il n'y aura aucune condition qui sera realisé et il se retrouvera avec defaut.php3.

Reply

Marsh Posté le 17-08-2002 à 14:34:02    

Moi mon include centrale est du type :
 <?
////////////////////////////////////////////////
// ----- PARTIE CENTRALE DYNAMIQUE -------------
 
if (!isset($page_centre)) $page_centre="accueil";
if (!isset($rep_rubrique)) $rep_rubrique="";
else
{
$rep_rubrique.="/";
}
if (file_exists("$rep_rubrique$page_centre.php3" ))
{
include ("$rep_rubrique$page_centre.php3" );
}
else
{
include ("404.html" );
}
 
// ---------------------------------------------
////////////////////////////////////////////////
?>
 
Les conditions sont gérées de facon assez bizard, cad que chaque page n'a pas de condition, mais est gerée de facon générique par le script (putain, meme moi, je peux faire des phrases complexe...  :D )
 
J'ai fait un petit test :
par exemple pour accedez a ma page1 dans le dossier "supercool" je fait (dans un reseau local) :
http://localhost/projet1/?rep_rubr [...] ntre=page1
 
maintenant j'ai remplacé page1 par http://www.google.fr :
http://localhost/projet1/?rep_rubr [...] google.fr/
 
Ben dans ce cas je tombe sur la page 404.htm de mon site!  :)  
Alors vous en pensez koi?

Reply

Marsh Posté le 17-08-2002 à 14:39:56    

electroger a écrit a écrit :

 
maintenant j'ai remplacé page1 par http://www.google.fr :
http://localhost/projet1/?rep_rubr [...] google.fr/
 
Ben dans ce cas je tombe sur la page 404.htm de mon site!  :)  
Alors vous en pensez koi?




 
je dis hackable normalement... ;)
(faut voir si file_exists fct avec des remotes files
 
une page au hasard :
http://localhost/projet1/?rep_rubr [...] centre=ftp


Message édité par ethernal le 17-08-2002 à 14:40:34

---------------
...oups kernel error...
Reply

Marsh Posté le 17-08-2002 à 14:44:29    

Ben en testant ta page je tombe encore sur le 404.
a noter : le site n'est pas encore sur le net (d'ou le localhost) je le lis avec un serveur Apache.  
Alors t'en pense koi? Tu pense toujours que c'est hackable?

Reply

Marsh Posté le 17-08-2002 à 14:46:46    

exact :)
http://www.php.net/manual/en/function.file-exists.php
 

Citation :

This function will not work on remote files; the file to be examined must be accessible via the server's filesystem


 
ça devrait être bon alors ;)


---------------
...oups kernel error...
Reply

Marsh Posté le 17-08-2002 à 14:49:41    

C'est bon? C'est pas hackable?  :)  
Si c'est le cas c'est cool et ça veut dire que j'ai fait le bon choix quand j'ai choisi le script! (eheh je sais pas du tout programmer mais je fais les bon choix!!  :) )
Autrement pour le phpBB2 y a pas de risques?

Reply

Marsh Posté le 17-08-2002 à 14:51:43    

phpbb2 non ça se saurait.
c qd tu installes des scripts tout fait que tu peux mettre en danger tout le site  
--> faut regarder toutes les sources à la recherche d'include ou d'uploads


---------------
...oups kernel error...
Reply

Marsh Posté le 17-08-2002 à 14:56:58    

Donc le site c'est bon, phpBB2 c'est ok aussi. Je vais ajouter un compteur de dl sur mon site (vous l'avez peut remarqué y a un autre post de moi sur ce forum) je vais prendre un script de phpdebutant (ça me convient bien je pense  :D ) ça risque rien? (ça c'est un script tout fait).

Reply

Marsh Posté le 17-08-2002 à 14:59:21    

Ton phorum phpBB2 risque rien si c'est la version finale, la version RC2 a une faille de securité.

Reply

Marsh Posté le 17-08-2002 à 15:42:41    

Bon, si tout est Ok, c'est cool! Je vais pas tarder a mettre mon site sur le net. Ca fait depuis le mois de mai que je bosse dessus, je vous filerais l'url.
En tout cas MERCI a vous tous pour votre aide, je suis a chaque fois surpris par ceux qui sur hardware.fr, sont près à aider les newbies, tout en sachant qu'il peut probable que ces meme newbies les aide en retour.  :)  
Alors MERCI BEAUCOUP!

Reply

Marsh Posté le 17-08-2002 à 15:50:34    

Bah moi chui nouveau aussi ici, je suis arrivé en meme temps que toi. Apres avoir fait pas mal de forum, je trouve que celui ci n'a rien a voir, pas de dispute debile ou les membre font jouer leur repartie, impek :bounce:

Reply

Marsh Posté le 17-08-2002 à 15:58:13    

Je suis bien d'accord ce forum est génial! Pas seulment en prog d'ailleurs puis que en hardware ils sont solides aussi.
Moi j'ai commencé dans la partie hardware, puis log, puis prog, et franchment c'est genial. L'avantage, c'est égalment le nbre de perso qui tourne sur ce forum, t'es presque sûr que quelqu'un pourra t'aider et assez rapidement en regle générale.

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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