Site hacké -> Login ?

Yako
Invité n'ayant pas de compte PHPfrance

20 mai 2010, 11:22

Bonjour,

Un site dont je m'occupe a été hacké. Des fichiers ont été ajoutés et modifiés sur l'hébergement.

J'ai modifié le code du login qui n'était pas suffisamment protégé mais rebelotte.
Je ne suis pas hyper habitué à traiter les soucis de sécurité, et j'ai du mal à trouver la source de tous mes maux. J'ai installé les plugins XSS-Me pour firefox, et SQL Inject-Me.
Pas de soucis en XSS, et toujours quelques soucis en injection..

Voilà mon code :

Code : Tout sélectionner

<?php session_start(); //récupération de l'URL de la page de provenance $prov = $_SERVER['HTTP_REFERER']; //récupération des variables du formulaire de login function protection($string){ $string = stripslashes($string); $string = htmlspecialchars($string); $string = htmlentities($string); return $string; } $pseudo = protection($_POST['pseudo']); $pass = protection($_POST['pass']); function loginUser($loginIn,$passwordIn,$prov) { $conn = mysqli_connect('----', '----', ------', '-----'); if (!$conn) { die('Could not connect to MySQL: ' . mysqli_connect_error()); } //mysqli_query($conn, 'SET NAMES \'utf8\''); //protection $loginIn=$conn->real_escape_string($loginIn); $query='SELECT id_client,pseudo_client,pass_client FROM client WHERE pseudo_client=?'; $stmt=$conn->prepare($query); if($stmt) { $stmt->bind_param("s",$loginIn); $stmt->execute(); $stmt->store_result(); if($stmt->num_rows!=0) { $stmt->bind_result($id_client,$pseudo_client,$pass_client); while($stmt->fetch()) { if($pass_client===md5($passwordIn)) { $_SESSION['id_client'] = $id_client; header("Location: ".$prov);exit;} else { header("Location: erreurLogin.php"); } } } else { header("Location: erreurLogin.php"); } } } loginUser($_POST['pseudo'],$_POST['pass'],$prov); ?>

Yako
Invité n'ayant pas de compte PHPfrance

20 mai 2010, 11:24

Et merci beaucoup pour le coup de pouce !!!

;)

ViPHP
ViPHP | 5462 Messages

20 mai 2010, 11:26

t'es sur que c'est au niveau de cette page la ?

Yako
Invité n'ayant pas de compte PHPfrance

20 mai 2010, 11:39

Je ne suis sûr de rien.
J'ai repris un site dont le code n'était pas trop propre...

Il n'y a que deux formulaires, login et recherche. Tout est ok pour le formulaire de recherche selon les 2 extensions pour Firefox.
Les include de pages sont tous protégés par des switch avec default...

Pour moi il n'y avait plus que le login comme point d'ombre (ou bien l'une des nombreuses fonctions PHP), mais dès lors qu'on est plus lié à un formulaire, ou à un include de page, je ne vois pas trop où chercher...

Donc j'ai refait ce script de login, mais c'est mon premier en objet donc bon, pas trop sûr de moi quand même... D'où ce petit post pour en avoir le coeur net...

ViPHP
ViPHP | 5462 Messages

20 mai 2010, 11:43

ta un formulaire d'upload dans l'une de tes pages ?

ViPHP
ViPHP | 1136 Messages

20 mai 2010, 11:50

Bon , déjà , tu as une injection possible au niveau de $_SERVER['HTTP_REFERER']

qui n'est pas vérifié ..
Mais je ne sais pas si celà peut poser probléme dans un

header("Location ... );

Il y a des spécialistes du header pour éclaircir sur ce point ?

Sinon , il faut voir la globalité du site , ce n'est pas parce que cette page à été altérée qu'il faut en déduire que la faille est là ...

Ch.

Yako
Invité n'ayant pas de compte PHPfrance

20 mai 2010, 11:59

En fait, l'ancien formulaire de login n'était pas protégé, c'est pour ça que j'ai travaillé dessus..

Mais effectivement, le site comprend une centaine de fichiers au code pire que le mien :) et je ne sais pas trop où chercher... Je me suis donc concentré avant tout sur les formulaires et les includes utilisant des variables d'URL...