hack continuel de mon site besoin d'aide

ViPHP
ViPHP | 5924 Messages

13 mars 2008, 14:06

Utilisation des short open tag, des register globals, et des variables globales à outrance, que du bonheur…
Je suis désolé, mais oui, il y a de très fortes chances que le problème vienne de ton script…

gipelo
Invité n'ayant pas de compte PHPfrance

13 mars 2008, 21:07

short open tag: c'est quoi et ou est le risque
register globals: c'est quoi et ou est le risque
variables globales: là je comprend pas le risque

Mammouth du PHP | 19672 Messages

13 mars 2008, 23:06

short open tag: c'est quoi et ou est le risque
Le risque de voir ton code PHP s'afficher tel quel dans ton navigateur si l'hébergeur a désactivé cette option : Donc il faut toujours préférer "<?php" à "<?"
register globals: c'est quoi et ou est le risque
Par défaut, cette option est désactivée dans php depuis la version 4.2. Le danger, c'est tout simplement de se faire pirater par l'envoi de valeurs sous forme de paramètres via l'url.
Si tu envoies dans l'url monsite.com/index.php?valeur=yxz tu pourras récupérer de deux manières :
-1- register_globals à on : simplement en appelant la variable $valeur.
Si un pirate trouve une variable qui peut lui permettre de se faufiler dans ton système, il enverra un paramètre ayant le nom de cette variable écrit à la main directement dans l'url.
-2- register_globals à off : en récupérant la variable dans $_GET['valeur'] : aucune des autres variables de ton code ne pourra être modifiée par envoi de code malicieux.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

14 mars 2008, 00:13

En complément de ce qu'a annoncé Cyrano.
Quand on active les register_global, on donne l'ordre de préférence de récupération. Par défaut, c'est GPC pour GET-POST-COOKIE.

cela signifie que si tu attends une variable $test en POST, il suffit que le hacker appelle une url du genre http://tonsite/page.php?test=monhack pour outrepasser ta récupération.

Sinon, concernant les variables globales, c'est l'enfance de l'art que de demander l'exécution de ton script en lui passant les variables qu'on veut.
Immagine que ton script demande une variable globale $test, il suffit d'exécuter le code suivant pour hacker ton script :
$test = "je t'ai hacké"
include('tonscriptavecglobales.php');
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

ViPHP
ViPHP | 5924 Messages

14 mars 2008, 00:38

Sur les variables globales, il faut considérer le fait aussi que cela dénote une mauvaise conception. Cela implique que les fonctions n'ont pas été pensées pour faire ce qu'elles ont à faire mais bricolées ensuite pour gérer une variable que l'on n'avait pas prévu au début.

Ensuite, les variables globales ancrent tes fonctions dans leur contexte, elles ne pourront fonctionner que si tu as défini les variables que tu utilises, avec le même nom, ce qui limite la réutilisation des fonctions ainsi que l'utilisation de celles ci dans n'importe quelle page de ton script.

Classiquement, on met les fonctions dans un(des) fichier(s) à part et on les rend indépendantes de l'ensemble du script pour qu'elles puissent jouer pleinement leur rôle…

ViPHP
ViPHP | 1996 Messages

14 mars 2008, 15:29

Je viens de voir aussi une autre faille de possible dans la partie "je ne suis pas enregistré". Quand tu cliques sur le lien tu fais ceci : "http://corvetteonline.free.fr/Membres/i ... compte.php"

C'est un peu dangereux non ? imagine que dans ADR_BCK le hacker mette http://sa_source.
Suis je dans l'erreur ?
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

gipelo
Invité n'ayant pas de compte PHPfrance

16 mars 2008, 20:49

Je viens de voir aussi une autre faille de possible dans la partie "je ne suis pas enregistré". Quand tu cliques sur le lien tu fais ceci : "http://corvetteonline.free.fr/Membres/i ... compte.php"

C'est un peu dangereux non ? imagine que dans ADR_BCK le hacker mette http://sa_source.
Suis je dans l'erreur ?
effectivement ce n'est pas top, mais normalement avec ça tu redirige uniquement vers la page contenur dans ADR_BCK donc normalement ce n'est pas bien mechant si le hackeur remplace la valeurà l'execussion cela le redirigera ailleur.

gipelo
Invité n'ayant pas de compte PHPfrance

16 mars 2008, 23:20

je viens de refaire mon script page.php

Code : Tout sélectionner

<?php /*************************Variable de paramétrage***********************/ //$dirname="./"; //$Menu_path indique le chemin de retour //$Menu_path_texte indique le texte a afficher pour le lien chemin retour //$N_page: indique la page courante $NB_Images_Par_Page=50; //definition nb image par page $TT_Miniature="TN_"; //definition de l'entéte des miniatures /************************Définition des variables***********************/ $Dir_Name=htmlentities($_GET["dirname"]); $Menu_path=htmlentities($_GET["Menu_path"]); $Menu_path=htmlentities($_GET["Menu_path_texte"]); $N_page=htmlentities($_GET["N_page"]); $fichier_image=array (); // dossier qui vas contenir le nom des fichier jpeg $NB_Images=0; $NB_pages=0; // nombre de page total de l'album init a 0 $CurPage=pathinfo($SCRIPT_FILENAME); // obtention du nom de la page $Page_courante=$CurPage["basename"]; //variable qui contient l'adresse de la page courante $fichier_parametre=$dirname."/info.php"; //fichier de parametre $Pos=50*($N_page-1); // détermine la position de base dans le tableau des images $Position=-1; /***********************************************************************/ include($fichier_parametre); /********Détermine si le fichier est une miniature ou pas********/ function is_miniature($TT_Miniature,$nom_fichier) { $entete=explode($TT_Miniature,$nom_fichier); if ($entete[0]==$nom_fichier) $Is_miniature=false; else $Is_miniature=true; return $Is_miniature; } /***********************************************************************/ /************************Affichage du titre******************/ if ($Type_Titre==1) $Titre= "<img src=$Nom_meeting>"; else $Titre="$Nom_meeting"; /**********************Determine la page ou doit revenir le diaporama*********************/ $Adr_retour=$Page_courante."&N_page=$N_page"."&dirname=$Dir_Name"; /************************Met les noms de fichier dans le tableau $fichier_image******************/ $dh=opendir($Dir_Name); while (($file=readdir($dh))!== false) { $info_fichier=pathinfo($file); if ((($info_fichier["extension"]=="jpg") or ($info_fichier["extension"]=="JPG")) && is_miniature($TT_Miniature,$file)==false) //si le fichier est un fichier jpeg et pas une miniature on le rajoute dans le tableau de liste des images { $Position=$Position+1; $fichier=$Dir_Name."/".$file; $Affiche_image="<a href=diaporama.php?Index=$Position&Retour=$Adr_retour ><img src=\"thumbgen.php?fichier=$fichier\" border=\"0\"></a>"; $fichier_image[]=$Affiche_image; } } /**********************Determine le nombre de page*********************/ $NB_Images=sizeof($fichier_image); $NB_pages=ceil($NB_Images/$NB_Images_Par_Page); /***********************************************************************/ ?> <html> <head> <title>Corvette-online.net photos de meetings</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <link href="styles/Autostyle.css" rel="stylesheet" type="text/css"> </head> <BODY bgcolor="#ffffff" background="../../Rencards/commun/fds1.jpg" text="#000066" link="#000066" vlink="#000066" alink="#ff0000"> <? include("../../header.php"); ?> <table width="100%" height="100%" border="0" align="left" cellpadding="0" cellspacing="0"> <tr> <td width="55" rowspan="2" valign="top" background="http://corvetteonline.free.fr/Index/page1_r2_c1.gif"><img src="http://corvetteonline.free.fr/Index/smlgauche.jpg" width="55" height="2"></td> <td width="100%">&nbsp;</td> </tr> <tr> <td width="100%" valign="top"><div align="center"> <TABLE align="center"> <TR> <TD height="69" colspan="2" ALIGN=CENTER><p><font size="6"><b><font size="5" face="Verdana, Arial, Helvetica, sans-serif"><font size="4"> </font></font></b></font><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="+1"><b> <?php echo($Titre); ?> </b></FONT></p> <hr noshade> <table width="506" border="0" cellspacing="0" bordercolor="#000066"> <tr> <td><div align="center"><font size="2" face="Geneva, Arial, Helvetica, sans-serif"><b> </b></font></div></td> </tr> </table></TD> </TR> <P> <TR> <TD colspan="2" ALIGN=CENTER> <TABLE align="center"> <TR> <TD ALIGN=CENTER VALIGN=BOTTOM> <?php echo($fichier_image[$Pos+0]); ?> </TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2">&nbsp; <?php echo($fichier_image[$Pos+1]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+2]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+3]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+4]); ?> </FONT></TD> </TR> <TR> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+5]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+6]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+7]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+8]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+9]); ?> </FONT></TD> </TR> <TR> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+10]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+11]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+12]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+13]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+14]); ?> </FONT></TD> </TR> <TR> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+15]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+16]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+17]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+18]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+19]); ?> </FONT></TD> </TR> <TR> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+20]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+21]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+22]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+23]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+24]); ?> </FONT></TD> </TR> <TR> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+25]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+26]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+27]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+28]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+29]); ?> </FONT></TD> </TR> <TR> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+30]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+31]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+32]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+33]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+34]); ?> </FONT></TD> </TR> <TR> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+35]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+36]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+37]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+38]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+39]); ?> </FONT></TD> </TR> <TR> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+40]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+41]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+42]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+43]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+44]); ?> </FONT></TD> </TR> <TR> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+45]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+46]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+47]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+48]); ?> </FONT></TD> <TD ALIGN=CENTER VALIGN=BOTTOM><FONT face="Verdana, Arial, Helvetica, Sans-Serif" size="-2"> <?php echo($fichier_image[$Pos+49]); ?> </FONT></TD> </TR> </TABLE></TD> </TR> <TR> <TD colspan="2" ALIGN=CENTER><BR> <FONT face="Verdana, Arial, Helvetica, Sans-Serif"> <B>Page:</B>&nbsp;<strong>&nbsp;</strong></FONT> <strong><FONT color="#FF0000" face="Verdana, Arial, Helvetica, Sans-Serif"> <?php $A_afficher=""; for($j=1;$j<=$NB_pages;$j++) { if ($j==$N_page) { $A_afficher=$A_afficher.' '.$j; } else { $A_afficher=$A_afficher.' '.'<a href="'.$Page_courante.'?nom_meeting='.$nom_meeting.'&dirname='.$dirname.'&N_page='.$j.'">'.$j.'</a>'; } } echo($A_afficher); ?> </font></strong></TD> </TR> <TR> <TD colspan="2" ALIGN=CENTER> <TR> <TD colspan="2" ALIGN=CENTER><b><font face="Verdana, Arial, Helvetica, sans-serif" size="3"><strong> </strong></font></b></TD> </TR> <TR> <TD ALIGN=CENTER> <div align="left"><strong> <?php $j=$N_page-1; if($N_page==1) $A_afficher='<TD ALIGN=CENTER><div align="left"><a href="'.$Menu_path.'"><img src=../../commun/back.gif border="0"></a></div></TD>'; else $A_afficher='<TD ALIGN=CENTER><div align="left"><a href="'.$Page_courante.'?nom_meeting='.$nom_meeting.'&dirname='.$dirname.'&N_page='.$j.'"><img src=../../commun/back.gif border="0"></a></div></TD>'; echo($A_afficher); ?> </strong></div></TD> <TD ALIGN=CENTER> <div align="right"><strong> <?php $k=$N_page+1; if($N_page==$NB_pages) $A_afficher=""; else $A_afficher='<TD ALIGN=CENTER><div align="left"><a href="'.$Page_courante.'?nom_meeting='.$nom_meeting.'&dirname='.$dirname.'&N_page='.$k.'"><img src= ../../commun/next.gif border="0"></a></div></TD>'; echo($A_afficher); ?> </strong></div></TD> </TR> <P> </TABLE> <div align="right"><br> Pictures &copy;<strong> <? echo($Copyright); ?> </strong></div> </div></td> </tr> </table> <p>&nbsp;</p> <p>&nbsp;</p> <? include("../../php/analytics.php"); ?> </BODY> </HTML>
je pense que c'est mieux, effectivement en le reparcourant, j'ai put voir pas mal de non sens de prog...c'etait mon premier script il y'a 3 ans :lol:

et je confirme que mes fonction étaient vraiment bof LOL

merci a vous pour vos critiques constructives. je vais reprendre mes scripts un par un pour les corriger.

y'a t'il d'autres bonnes régles à connaitres ?

Eléphant du PHP | 396 Messages

17 mars 2008, 11:56


gipelo
Invité n'ayant pas de compte PHPfrance

20 mars 2008, 16:06

merci à tous,

bonne et mauvaise nouvelle:

j'ai viré tous sur mon site web en ne laissant que le forum: phpbb3.0 et ...
et là toujours le même probléme

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

20 mars 2008, 16:46

Tu as vérifié qu'il ne restait aucun script caché sur ton serveur ?

genre, des fichiers qui commencent par point (.) ...
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer