IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Faille sur mon site


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Faille sur mon site
    Bonjour,

    Quelqu'un s'amuse à supprimer toutes les publications de mon site web. Je n'arrive pas à trouver comment il fait...

    Pourriez-vous m'aider à régler cette faille ?

    (Vous pouvez supprimer aussi toutes les publications pour trouver l'origine de la faille, j'ai des backups)

    http://birneo.com/ (La page Home)

  2. #2
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 091
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 091
    Points : 8 194
    Points
    8 194
    Billets dans le blog
    17
    Par défaut
    Pourriez-vous m'aider à régler cette faille ?
    Faudrait la source.

    http://birneo.com/ (La page Home)
    Accessible par http://www.birneo.com/

    Je ne vois qu'une page de connexion.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  3. #3
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 100
    Points : 4 445
    Points
    4 445
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Je ne vois qu'une page de connexion.
    oui
    fournit nous une entré type : test@test.fr : test

    ---------------------
    lol, je viens de tester exactement le même genre ! http://www.worldwide-community.com/ mais lui inscriptions bidons ouvertes
    Il demande a ce que l'on lui casse son site
    $moi= ( !== ) ? : ;

  4. #4
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    test@test.com et mot de passe : test

  5. #5
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    primo pas besoin d'un compte utilisateur pour se connecter: en cliquant sur le bouton connexion on se connecte directement sans avoir à fournir le login et le password.

    tes requêtes sql restent vulnérables à une injection sql.

  6. #6
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci de ta réponse, comment régler ce problème ?

  7. #7
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    ce module firefox sql-inject-me/ permet de tester la vulnérabilité de ton site aux injections SQL et aux attaques XSS.

    pour se protéger contre les injections sql, toutes les données en provenance de l'utilisateur doivent être protégées avec mysql_real_escape_string () (si tu utilises l'extension mysql_*)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $login=$_POST['login']
    $sql="SELECT login FROM users WHERE ='".mysql_real_escape_string ($login) ." '";
    pour se protéger des attaques xss il te faut soit la fonction php htmlspecialchars soit la fonction htmlentities pour afficher les données

  8. #8
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Mais j'utilise PDO pas mysql et je ne trouve pas d'équivalent à mysql_real_escape_string

    L'extension firefox me donne ceci:

    Server Status Code: 302 Moved Temporarily
    Tested value: 1'1
    Server Status Code: 302 Moved Temporarily
    Tested value: '; DESC users; --
    Server Status Code: 302 Moved Temporarily
    Tested value: 1 AND USER_NAME() = 'dbo'
    Server Status Code: 302 Moved Temporarily
    Tested value: 1' AND 1=(SELECT COUNT(*) FROM tablenames); --
    Server Status Code: 302 Moved Temporarily
    Tested value: 1 AND 1=1
    Server Status Code: 302 Moved Temporarily
    Tested value: 1 EXEC XP_
    Server Status Code: 302 Moved Temporarily
    Tested value: 1'1
    Server Status Code: 302 Moved Temporarily
    Tested value: 1' OR '1'='1
    Server Status Code: 302 Moved Temporarily
    Tested value: 1 OR 1=1
    Comment régler ces erreurs ?

  9. #9
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Citation Envoyé par Jasonvnm Voir le message
    Mais j'utilise PDO pas mysql et je ne trouve pas d'équivalent à mysql_real_escape_string
    si tu utilises PDO et que tes requêtes ne sont pas préparées il faut toujours protéger les données avec la fonction PDO quote() (quote.php)

    d'ailleurs les résultats de sql inject me montrent bien les vulnérabiltés liées aux injections sql.

    tu peux poster une portion de code comprenant la requête sql permettant l'identification de tes utilisateurs?

  10. #10
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Voici le code qui check à la connexion
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    $email = strip_tags($_POST['email']);
    $password = $_POST['password'];
    // Fonction quote
    $email_sql = $bdd->quote($email);
     
    $sql = "SELECT * FROM users WHERE email=$email_sql";
    $query = $bdd->query($sql);
    $dn = $query->fetch();
    if(md5($password) == $dn['password'])
    {
       if($dn['suspendu'] == 1)
       {
          header("Location: ../suspendu/");
       }else
       {
          session_regenerate_id();
          $_SESSION['userid'] = $dn['id'];
          $id = $_SESSION['userid'];
          $_SESSION['email'] = $dn['email'];
          $_SESSION['token'] = md5(time()*rand(1440,2560));
          $token = $_SESSION['token'];
          $bdd->query("UPDATE users SET token='$token',online=1 WHERE id='$id'");
          header("location: ../home/");
       }
     
    }else
    {
      header("Location: ../welcome?reply=notok3");
    }

  11. #11
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Il manque les guillemets sur les chaines, je ne vois même pas comment tu peux avoir un résultat.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql = "SELECT * FROM users WHERE email='$email_sql'";
    Ton strip_tags() au début ne sert à rien.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  12. #12
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    en plus de la fonction quote() les données reçues doivent être placées entre guillemets dans la requête sql, par exemple:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    $email = strip_tags($_POST['email']);
    $password = $_POST['password'];
    // Fonction quote
    $email_sql = $bdd->quote($email);
     
    $sql = "SELECT * FROM users WHERE email='".$email_sql."'";

  13. #13
    Futur Membre du Club
    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2013
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2013
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci de votre aide je vais faire ça de suite

  14. #14
    Expert confirmé Avatar de papajoker
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2013
    Messages
    2 100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nièvre (Bourgogne)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Septembre 2013
    Messages : 2 100
    Points : 4 445
    Points
    4 445
    Par défaut
    Citation Envoyé par armel18 Voir le message
    en plus de la fonction quote() les données reçues doivent être placées entre guillemets dans la requête sql, par exemple:
    non justement, quote par defaut est PDO:: PARAM_STR donc ajoute automatiquement ''
    voir 1er exemple : http://php.net/manual/fr/pdo.quote.php

    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    $email = trim($_POST['email']);
    $password = trim($_POST['password']); // trim pour saisie plus lache
     
    if (!filter_var($email, FILTER_VALIDATE_EMAIL)) // test si email valide
    	header("Location: /welcome?reply=notok3"); 
    $sql = 'SELECT * FROM users WHERE email='.$bdd->quote($email).' AND password="'.md5($password).'"';
    // dans sql ai passé le mot de passe aussi
    $query = $bdd->query($sql);
    $dn = $query->fetch();
    if($dn)
    {
       if($dn['suspendu'] == 1)
       {
          header("Location: ../suspendu/");
       }else
       {
          session_regenerate_id();
          $_SESSION['userid'] = $dn['id'];
          $_SESSION['email'] = $dn['email'];
          $_SESSION['token'] = md5(time()*rand(1440,2560));
          $bdd->query("UPDATE users SET token='{$_SESSION['token']}',online=1 WHERE id={$dn['userid']}");
          header("location: ../home/");
       }
    }
    // cette redirection sortie des if imbriqués donc valeur par defaut :)
    header("Location: /welcome?reply=notok3");
    $moi= ( !== ) ? : ;

  15. #15
    Membre éprouvé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2012
    Messages
    631
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2012
    Messages : 631
    Points : 1 220
    Points
    1 220
    Par défaut
    Citation Envoyé par papajoker Voir le message
    non justement, quote par defaut est PDO:: PARAM_STR donc ajoute automatiquement ''
    voir 1ere exemple : http://php.net/manual/fr/pdo.quote.php
    merci c'est très édifiant.

Discussions similaires

  1. Faille SQL sur mon site
    Par xixou dans le forum Langage
    Réponses: 4
    Dernier message: 07/11/2012, 01h07
  2. Réponses: 1
    Dernier message: 31/03/2010, 00h50
  3. Déterminer les failles de sécurités sur mon site
    Par whitespirit dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 05/06/2008, 07h36
  4. Réponses: 2
    Dernier message: 06/10/2005, 18h40
  5. [FLASH MX] Probleme sur mon site....!!
    Par thewill dans le forum Flash
    Réponses: 2
    Dernier message: 07/04/2005, 12h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo