Forum-webmaster
Général => Discussions générales => Message commencé par: sam01 le le 25-01-2015 a 15:59:48

Titre: Site internet hacké par injection mysql
Posté par: sam01 le le 25-01-2015 a 15:59:48

Bonjour à tous,

voilà, j'ai un site internet qui exitse depuis bien tôt 5 ans et ces duex derniers, j'ai subi deux attaques de hackers qui ont eu pour conséquences de vider certaines
tables de base de données.
Je suppose que cela à été fait par des injections mysql mais je n'en suis pas sûr ?
Comment le savoir ?
Comment savoir à quel niveau de mon site se trouve les failles mysql.
Les mot de passe de mes utilisateur ne sont pas cryptés. Mais je pense que même si je les crypte, les hackers parviendront à vider à nouveau mes tables par des injections mysql.

Existe-t'il un forum en sécurité site web qui pourrait m'aider à sécuriser mon site. Ou encore de trouver d'où vient la faille.

Merci d'avance pour votre aide.

Titre: Re:Site internet hacké par injection mysql
Posté par: tof73 le le 25-01-2015 a 16:26:04

il faut regarder les logs du site pour voir si c'est bien une injection sql.
après, sans l'url du site, on ne peut pas en dire plus.

Titre: Re:Site internet hacké par injection mysql
Posté par: pppplus le le 25-01-2015 a 18:15:41

Ce ne sont pas les mots de passes non cryptés des utilisateurs qui sont la source de l'injection.

Mais par contre, c'est encore pire, car ça veut dire que votre pirate, peut prendre les logins et passe de vos membres, ce qui est très grave !
Car nombreux sont les membres (inconscients, fainéants, ignorants...) qui mettent les mêmes mots de passe et login partout !

Où se trouve l'injection... là, c'est une autre histoire, ça peut être un peu partout.
Il faut analyser votre code, et si vous n'êtes pas programmeur, il faudra forcément faire appel à un développeur pour colmater un maximum de brèches.

Si vous utilisez un CMS, il faut le mettre à jour (mais mot de passe non cryptés, je doute que ça soit un CMS), mettre à jour les plugins, virer les plugins inutiles...

Titre: Re:Site internet hacké par injection mysql
Posté par: sam01 le le 25-01-2015 a 20:46:28

Bonjour,

j'ai essayé de vous envoyé une partie de log du 23 janvier. C'est le jour où j'ai découvert que mon à été piraté. Mais la log est trop longue.
Je vais essayer de vous l'envoyer en mp.

Voici une petite partie en attendant :


Code:

188.165.15.240 - - [23/Jan/2015:11:45:46 +0100] "GET /liste.php?continent=-1&ad_pays=-1&ville=-1&type=-1&pers=-1&date1=&date2=&valide_form=Envoyer+ces+informations&p=9&p=61&p=60&p=62&p=63&p=65&p=64&p=66&p=67&p=68&p=69&p=70&p=71&p=72&p=74&p=75&p=76&p=2&p=6&p=8&p=7&p=5&p=77&p=73 HTTP/1.1" 200 324 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)"
188.165.15.234 - - [23/Jan/2015:11:48:08 +0100] "GET /liste.php?continent=-1&ad_pays=-1&ville=-1&type=-1&pers=-1&date1=&date2=&valide_form=Envoyer+ces+informations&p=9&p=61&p=60&p=62&p=63&p=65&p=64&p=66&p=67&p=58&p=68&p=69&p=71&p=74&p=75&p=2&p=1&p=8&p=77&p=70&p=72&p=76&p=73&p=78&p=79&p=80&p=81 HTTP/1.1" 200 324 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)"
188.165.15.181 - - [23/Jan/2015:11:48:17 +0100] "GET /liste.php?continent=-1&ad_pays=-1&ville=-1&type=-1&pers=-1&date1=&date2=&valide_form=Envoyer+ces+informations&p=9&p=61&p=60&p=62&p=63&p=65&p=64&p=66&p=67&p=59&p=68&p=69&p=70&p=72&p=74&p=73&p=75&p=76&p=2&p=5&p=77&p=71 HTTP/1.1" 200 324 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)"
188.165.15.15 - - [23/Jan/2015:11:48:55 +0100] "GET /liste.php?continent=-1&ad_pays=-1&ville=-1&type=-1&pers=-1&date1=&date2=&valide_form=Envoyer+ces+informations&p=9&p=61&p=60&p=62&p=63&p=65&p=64&p=66&p=68&p=69&p=70&p=72&p=74&p=67&p=75&p=2&p=8&p=6&p=7&p=76&p=77&p=73&p=71&p=79 HTTP/1.1" 200 324 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)"
188.165.15.29 - - [23/Jan/2015:11:49:29 +0100] "GET /liste.php?continent=-1&ad_pays=-1&ville=-1&type=-1&pers=-1&date1=&date2=&valide_form=Envoyer+ces+informations&p=9&p=61&p=60&p=62&p=63&p=65&p=64&p=66&p=67&p=68&p=69&p=70&p=71&p=74&p=75&p=72&p=2&p=5&p=76&p=73&p=78&p=79 HTTP/1.1" 200 324 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)"
46.4.87.105 - - [23/Jan/2015:11:52:15 +0100] "GET /robots.txt HTTP/1.1" 404 1148 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)"
46.4.87.105 - - [23/Jan/2015:11:52:20 +0100] "GET /mess-reception-ecrire-664.html HTTP/1.1" 302 0 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)"
46.4.87.105 - - [23/Jan/2015:11:52:24 +0100] "GET /connexion.php HTTP/1.1" 200 6081 "-" "Mozilla/5.0 (compatible; MJ12bot/v1.4.5; http://www.majestic12.co.uk/bot.php?+)"
157.55.39.203 - - [23/Jan/2015:11:52:40 +0100] "GET /images/photo/815/953.jpeg HTTP/1.1" 200 10856 "-" "Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm)"
188.165.15.234 - - [23/Jan/2015:11:54:06 +0100] "GET /liste.php?continent=-1&ad_pays=-1&ville=-1&type=-1&pers=-1&date1=&date2=&valide_form=Envoyer+ces+informations&p=9&p=61&p=60&p=62&p=63&p=65&p=64&p=66&p=67&p=59&p=68&p=69&p=70&p=72&p=74&p=75&p=71&p=2&p=5&p=8&p=7&p=3&p=4&p=77&p=78&p=79&p=76&p=73&p=80 HTTP/1.1" 200 324 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)"
188.165.15.15 - - [23/Jan/2015:11:54:36 +0100] "GET /liste.php?continent=-1&ad_pays=-1&ville=-1&type=-1&pers=-1&date1=&date2=&valide_form=Envoyer+ces+informations&p=9&p=61&p=60&p=62&p=63&p=65&p=64&p=66&p=67&p=58&p=68&p=69&p=70&p=71&p=72&p=74&p=75&p=2&p=4&p=8&p=5&p=7&p=6&p=76&p=73&p=77&p=79&p=81&p=80 HTTP/1.1" 200 324 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)"
188.165.15.79 - - [23/Jan/2015:11:57:02 +0100] "GET /liste.php?continent=-1&ad_pays=-1&ville=-1&type=-1&pers=-1&date1=&date2=&valide_form=Envoyer+ces+informations&p=9&p=61&p=60&p=62&p=63&p=65&p=64&p=66&p=67&p=68&p=71&p=74&p=70&p=75&p=69&p=77&p=73&p=76&p=72&p=2&p=8&p=6&p=3&p=5&p=4&p=7&p=78 HTTP/1.1" 200 324 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)"
188.165.15.36 - - [23/Jan/2015:11:57:23 +0100] "GET /liste.php?continent=-1&ad_pays=-1&ville=-1&type=-1&pers=-1&date1=&date2=&valide_form=Envoyer+ces+informations&p=9&p=61&p=60&p=62&p=63&p=65&p=64&p=66&p=67&p=68&p=69&p=70&p=71&p=72&p=73&p=74&p=75&p=2&p=3&p=5&p=76&p=4&p=6&p=8&p=10&p=11&p=12&p=77&p=78&p=79&p=80 HTTP/1.1" 200 324 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)"
188.165.15.119 - - [23/Jan/2015:11:59:21 +0100] "GET /liste.php?continent=-1&ad_pays=-1&ville=-1&type=-1&pers=-1&date1=&date2=&valide_form=Envoyer+ces+informations&p=9&p=61&p=60&p=62&p=63&p=65&p=64&p=66&p=68&p=69&p=67&p=70&p=72&p=74&p=75&p=71&p=2&p=7&p=6&p=5&p=3&p=4&p=77&p=73&p=78&p=79&p=80 HTTP/1.1" 200 324 "-" "Mozilla/5.0 (compatible; AhrefsBot/5.0; +http://ahrefs.com/robot/)"

Titre: Re:Site internet hacké par injection mysql
Posté par: pppplus le le 25-01-2015 a 21:20:21

Bonsoir

Les logs peuvent donner des pistes ou non (un bon pirate va les effacer !).

Il faut surtout réfléchir par rapport à vos scripts PHP, prioritairement toutes les pages ou un utilisateur peut entrer des données (donc tous les formulaires, pages d'upload de fichiers...)
Et donc sécuriser tout vos formulaires.

Pensez aussi à changer tous vos mots de passe (ftp, mysql, accès admin....)
Mettez bien des mots de passe unique et très compliqué.

Titre: Re:Site internet hacké par injection mysql
Posté par: sam01 le le 25-01-2015 a 21:26:36

J'ai déjà fait tout ça...
Comment savoir quelles sont mes requêtes qui ont une faille ?
Quelles sont mes pages qui peuvent être attqquées par des injections mysql ?

Voici par exemple ma requête de connexion qui est présente sur toutes les pages :


Code:

if (isset($_POST['valide'])) // si clique sur le bouton ok
                        {
                        
                          if(empty($_SESSION["mail"])) // si l'utilisateur n'est pas connecté
                           {
                              if(isset($_POST["mail"])) {$mail = $_POST['mail'];}   else { $mail = "";}
                              if(isset($_POST["mdp"])) {$mdp = $_POST['mdp'];} else { $mdp = "";}
                           }

                           if(empty($erreur[0]))
                           {
                              include ('connect.php');
                              /* on va d abord chercher si le client n'existe pas en effectuant un test sur la boîte mail */
                            $sql = sprintf("select * from flatforswap_adherent where mail=%s and mdp=%s and valide !=%s", quote_smart($mail), quote_smart($mdp), quote_smart('0'));
                              $req = mysql_query($sql) or die('Erreur SQL : <br />'.$sql);
                               if (mysql_num_rows($req) == 1)
                               {
                                  $data = mysql_fetch_assoc($req);
                                  $valide = $data['valide'];
                                  if ($valide == 2){
                                  $verifexist = true;}
                                  elseif($valide == 1){
                                  $verifexist = false;
                                  $erreurc[] = '<center><font color="#FF0000">'.$idem_txt0032.'</font></center>';}
                               }
                               else
                               {
                                 $verifexist = false;
                                 $erreurc[] = '<center><font color="#FF0000">'.$idem_txt0033.'</font></center>';
                               }
                               mysql_close();
                               if ($verifexist == 'true')
                               {
                                 $_SESSION['mail'] = $data['mail']; /* l'adhérent est maintenant connecté */
                                 
                                 include ('connect.php');
                                 // $sqld = sprintf("SELECT id_adh FROM flatforswap_adherent WHERE mail=%s", quote_smart($_SESSION["mail"]));
                                 // 20/04/2012 on rajoute la clause WHERE $valide = 2
                                 $sqld = sprintf("SELECT id_adh FROM flatforswap_adherent WHERE mail=%s and valide =%s", quote_smart($_SESSION["mail"]), quote_smart('2'));
                                 $reqd = mysql_query($sqld) or die('Erreur SQL : <br />'.$sqld);
                                 $datad = mysql_fetch_assoc($reqd);
                                 $id_adh = $datad['id_adh'];
                                 $_SESSION['id_adh'] = $id_adh; /* on met id_adh en session afin d'éviter des requête inutiles */
                               }
                         }
                           
                           // message d'erreur
                           //if(isset($erreurc[0])) {for($i=0;$i<sizeof($erreurc);$i++) { echo $erreurc[$i];]
                              
                        }
                     



Est-ce qu'il y a une faille dans cette requête ?

Titre: Re:Site internet hacké par injection mysql
Posté par: pppplus le le 25-01-2015 a 21:50:11

if(isset($_POST["mail"])) {$mail = $_POST['mail'];}

Vous faites confiance aux données utilisateurs.
Un utilisateur peut rentrer n'importe quoi, et avec quelques petites connaissances et essais a des chances de passer.

il faut au moins par exemple :
$mail = mysql_real_escape_string($_POST['mail']);
(ne marche que si la connexion mysql est ouverte)

D'autres moyens existent.
Le principe, vous devez nettoyer toutes les entrées utilisateurs, et toujours penser qu'un utilisateur peut entrer n'importe quoi, y compris pour nuire.


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.