Mon site se fait hacker, help

Nouveau WRInaute
Bonjour, depuis quelques jours je subit des hack sur mon site web. Il doit y avoir une faille de sécurité quelque part mais je n'arrive pas a trouvé ou

Est-ce quelqu'un pourrai m'aider ?

Merci beaucoup pour votre aide, je ne sais plus quoi faire !
Bonne journée.
 
WRInaute passionné
Re: Mon site ce fait hacker, help

C'est à cause du fichier uploads.

...

Sans connaître l'adresse du site, ni le système utilisé, ni les symptômes , tu penses bien que ce sera difficile de te donner une réponse sérieuse.
 
Nouveau WRInaute
Re: Mon site ce fait hacker, help

Axiso a dit:
C'est à cause du fichier uploads.

...

Sans connaître l'adresse du site, ni le système utilisé, ni les symptômes , tu penses bien que ce sera difficile de te donner une réponse sérieuse.

Oui je sais bien mais avant de balancer l'adresse du site, j'aurai voulu savoir si des personnes sont assez sympa pour m'aider.
Donc voici les infos :

Site web : www.olivale.com
System utilisé : c'est du fait maison
Les symptome : Ben quelqu'un arrive a modifier la base de donnée et mettant des truc typique "Hacked by bla bla"...

Comment je ne sais pas, injection SQL, faille dans le login, droit d'acces sur des répertoires d'upload,......
j'ai pourtant vérifié au niveau des injection SQL, je ne vois pas d'erreur

Si tu es disposé a prendre un peu de temps pour mon problème (et je t'en remercie infiniment d'avance !) dit-moi ce qu'il te faut de plus, si tu veux du code, etc.. ?

Merci beaucoup !
Bonne journée.
 
WRInaute passionné
Re: Mon site ce fait hacker, help

Bonjour,

Tu es sur un serveur dédié ou bien en mutualisé ? Tu as accès aux logs Apache ? C'est réellement la BDD qui est modifiée, pas les scripts ?
 
Nouveau WRInaute
Re: Mon site ce fait hacker, help

Antares System c'est une connaissance qui a fait le développement il y a 6 ans.

Il s'agit d'un server mutualisé, j'ai acces au log apache mais je trouve pas grand chose de compréhensible dedans.
Et oui c'est bien la DB qui est modifiée.

J'ai un admin avec mot de passe pour modifié l'intégralité du site.
 
Nouveau WRInaute
Re: Mon site ce fait hacker, help

Je vous met ci-dessous quelques bout de code qui semble important.

connexion a l'admin (www.olivale.com/admin)

Code:
<?php include '../include/connexion_db.php'; 
	 
	$query = "SELECT ADMIN_ID FROM administration WHERE ADMIN_USER = '".mysql_real_escape_string($_POST["username"])."' AND ADMIN_MDP = '".mysql_real_escape_string($_POST["password"])."'";
	$result = mysql_query($query);
	
	$row = mysql_fetch_row($result);
	$id = $row[0];
	
	if ($id == '0')
	{
	 	echo "<script language='javascript' type='text/javascript'>\n
		      window.location.replace('home.php');\n
	     	  </script>"; 										  
	
		$_SESSION['login'] = "ok";	
	}
	else
	{		  
	   	echo "<script language='javascript' type='text/javascript'>\n
	 	      window.location.replace('index.php?msg=1');\n
	          </script>"; 
	} 
	
	include '../include/deconnexion_db.php'; 
?>

Modification d'un page de texte simple :

Code:
<?php 
	include '../include/connexion_db.php'; 
	include 'valid_login.php'; 
	
	if ( isset( $_POST['fdp'] )) $fdp = mysql_real_escape_string($_POST['fdp']);
	if ( isset( $_POST['fdp_gratuit'] )) $fdp_gratuit = mysql_real_escape_string($_POST['fdp_gratuit']);
	   
    $query = "UPDATE fdp SET FDP_PRIX = '$fdp', FDP_GRATUIT = '$fdp_gratuit' WHERE FDP_ID = '0'";
	$result = mysql_query($query);	
	   
	echo "<script language='javascript' type='text/javascript'>\n
		 window.location.replace('fdp.php?modif_info=ok');\n
		 </script>";

	include '../include/deconnexion_db.php'; 
?>

System d'upload de fichiers :

Code:
<?php 
	include '../include/connexion_db.php'; 
	$dest_dossier = '../upload_shop/';
	
	$isOk = 0;
		  
	/***********************************************************************************************************************
	    TRAITEMENT DE LA PHOTO 1
	***********************************************************************************************************************/
	if(isset($_FILES['file']))
	{		
		// formatage nom fichier : enlever les accents, remplacer les caracteres autres que lettres, chiffres et point par _  	
		$timestamp=date("U"); //SECONDES ECOULEES DEPUIS LE 1ER JANVIER 1970
		$dest_fichier = basename($_FILES['file']['name']);
		$dest_fichier = strtr($dest_fichier, '¿¡¬√ƒ≈«»… ÀÃÕŒœ“”‘’÷Ÿ⁄€‹›‡·‚„‰ÂÁËÈÍÎÏÌÓÔÚÛÙıˆ˘˙˚¸˝ˇ', 'AAAAAACEEEEIIIIOOOOOUUUUYaaaaaaceeeeiiiioooooouuuuyy');
		$dest_fichier = preg_replace('/([^.a-z0-9]+)/i', '_', $dest_fichier);
			
		if ($dest_fichier != '')												
		{
			// copie du fichier														
			$dest_fichier=$timestamp.'_'.$dest_fichier;
			move_uploaded_file($_FILES['file']['tmp_name'], $dest_dossier . $dest_fichier);	
		}	
		else
			$dest_fichier = ''; 
		
		$queryFree = "SELECT UIS_1, UIS_2, UIS_3, UIS_4, UIS_5 FROM uploadimagesshop WHERE UIS_ID = '0'";
		$resultFree = mysql_query($queryFree);
		$rowFree = mysql_fetch_row($resultFree);
		$image_1 = $rowFree[0]; 
		$image_2 = $rowFree[1];
		$image_3 = $rowFree[2];
		$image_4 = $rowFree[3];
		$image_5 = $rowFree[4];
		 
		
		 
		if (($image_1 == "NA") && ($isOk == 0))
		{		
			$query = "UPDATE uploadimagesshop SET UIS_1 = '$dest_fichier' WHERE UIS_ID = '0'";
			$result = mysql_query($query);
			$isOk = 1;
		}
		if (($image_2 == "NA") && ($isOk == 0))
 		{
			$query = "UPDATE uploadimagesshop SET UIS_2 = '$dest_fichier' WHERE UIS_ID = '0'";
			$result = mysql_query($query);
			$isOk = 1;
		}		  
		if (($image_3 == "NA") && ($isOk == 0))
 		{
			$query = "UPDATE uploadimagesshop SET UIS_3 = '$dest_fichier' WHERE UIS_ID = '0'";
			$result = mysql_query($query);
			$isOk = 1;
		}		
		if (($image_4 == "NA") && ($isOk == 0))
 		{
			$query = "UPDATE uploadimagesshop SET UIS_4 = '$dest_fichier' WHERE UIS_ID = '0'";
			$result = mysql_query($query);
			$isOk = 1;
		}	  
		if (($image_5 == "NA") && ($isOk == 0))
 		{
			$query = "UPDATE uploadimagesshop SET UIS_5 = '$dest_fichier' WHERE UIS_ID = '0'";
			$result = mysql_query($query);
			$isOk = 1;
		}
	}	
	
	echo "<script language='javascript' type='text/javascript'>\n
		 window.location.replace('uploadImages.php');\n
		 </script>";	  							   

include '../include/deconnexion_db.php'; ?>

Script qui fait les backup du site

Code:
<?PHP
	function dumpMySQL($serveur, $login, $password, $base, $mode)
	{
	    $connexion = mysql_connect($serveur, $login, $password);
	    mysql_select_db($base, $connexion);
	 
	    $entete = "-- ----------------------\n";
	    $entete .= "-- dump de la base ".$base." au ".date("d-M-Y")."\n";
	    $entete .= "-- ----------------------\n\n\n";
	    $creations = "";
	    $insertions = "\n\n";
	 
	    $listeTables = mysql_query("show tables", $connexion);
	    while($table = mysql_fetch_array($listeTables))
	    {
	        // si l'utilisateur a demandé la structure ou la totale
	        if($mode == 1 || $mode == 3)
	        {
	            $creations .= "-- -----------------------------\n";
	            $creations .= "-- creation de la table ".$table[0]."\n";
	            $creations .= "-- -----------------------------\n";
	            $listeCreationsTables = mysql_query("show create table ".$table[0], $connexion);
	            while($creationTable = mysql_fetch_array($listeCreationsTables))
	            {
	              $creations .= $creationTable[1].";\n\n";
	            }
	        }
	        // si l'utilisateur a demandé les données ou la totale
	        if($mode > 1)
	        {
	            $donnees = mysql_query("SELECT * FROM ".$table[0]);
	            $insertions .= "-- -----------------------------\n";
	            $insertions .= "-- insertions dans la table ".$table[0]."\n";
	            $insertions .= "-- -----------------------------\n";
	            while($nuplet = mysql_fetch_array($donnees))
	            {
	                $insertions .= "INSERT INTO ".$table[0]." VALUES(";
	                for($i=0; $i < mysql_num_fields($donnees); $i++)
	                {
	                  if($i != 0)
	                     $insertions .=  ", ";
	                  if(mysql_field_type($donnees, $i) == "string" || mysql_field_type($donnees, $i) == "blob")
	                     $insertions .=  "'";
	                  $insertions .= addslashes($nuplet[$i]);
	                  if(mysql_field_type($donnees, $i) == "string" || mysql_field_type($donnees, $i) == "blob")
	                    $insertions .=  "'";
	                }
	                $insertions .=  ");\n";
	            }
	            $insertions .= "\n";
	        }
	    }
	 
	    mysql_close($connexion);
	 
	 	$timestamp=date("Y-m-d");
	 
	    $fichierDump = fopen("backupMySql/".$timestamp.".sql", "wb");
	    fwrite($fichierDump, $entete);
	    fwrite($fichierDump, $creations);
	    fwrite($fichierDump, $insertions);
	    fclose($fichierDump);
	    echo "Sauvegarde réalisée avec succès !!";
	}		
													 
	include '../include/connexion_db.php';
	
	dumpMySQL($db_host, $db_user, $db_pass, $db_name, 3);
?>

Vous voyez des choses importantes ? des erreurs, des failles ?
 
Nouveau WRInaute
Re: Mon site ce fait hacker, help

Bonjour,

Je vois un *gros* souci d'injection SQL sur la page produits_liste.php.

On peut assez vite trouver des infos cruciales, comme le mdp de l'admin (en clair dans la DB): il commence par "nv" et se termine par 4 (à changer donc, mais **surtout** ne jamais laisser de mdp en clair dans une DB).

Si tu veux, tu peux me contacter en MP, je veux bien jeter un oeil sur le code (gratuitement, s'entend)

C.
 
Discussions similaires
Haut