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

Administration MySQL Discussion :

Un trou de sécurité ?


Sujet :

Administration MySQL

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut Un trou de sécurité ?
    Bonjour,

    j'ai un site web et ce matin je reçois ce mail d'un inconnu :
    "
    bonjour
    votre site XXXXXX.com n'a pas sécurisé parce que il CONTENIR d un trou dangereux
    les hacker pouvons Connecté a votre data base
    je suis prét t'aidé de réparé tous trous
    je suis besion de l argent 260 £ pour acheter les medicament pour mon marie

    "

    Ensuite, le mec me liste toutes mes bases de données et certaines tables !!!!

    Ca fait peur, je dois avoir un gros trou de sécurité, mais lequel ?

    Merci de m'aider je flippe ...

    ++

  2. #2
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    S'il peut te lister toutes tes BDD et tables, c'est qu'il a pu accéder à l'information donc oui, tu as un trou de sécurité !

    Peut-être a t-il utilisé une injection SQL via une URL de ton site ?
    Peut-être as-tu laissé traîner en clair le compte utilisateur MySQL et le mot de passe dans une URL ou dans un code qui génère la page HTML ou un fichier Javascript envoyé au browser ?
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    S'il peut te lister toutes tes BDD et tables, c'est qu'il a pu accéder à l'information donc oui, tu as un trou de sécurité !

    Peut-être a t-il utilisé une injection SQL via une URL de ton site ?
    Peut-être as-tu laissé traîner en clair le compte utilisateur MySQL et le mot de passe dans une URL ou dans un code qui génère la page HTML ou un fichier Javascript envoyé au browser ?
    le user et mot de passe est jamais passé dans l url, il est que dans mes fichiers php ...

    Je viens de limiter l accès à localhost ce serait peut être déjà mieux mais ça résoud pas le souci

  4. #4
    Modérateur
    Avatar de sevyc64
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2007
    Messages
    10 193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 193
    Points : 28 077
    Points
    28 077
    Par défaut
    Attention, ce message, tel que tu le rapporte, est une grosse tentative d'arnaque.

    Il n'est même pas certains que l'auteur ait réussi à acceder à la structure de ton site. Il a peut-être simplement réussi à injecter un script qui a lu la structure et créer le mail, sans que lui même ait eu l'information.

    Si ça se trouve, le message a été envoyé depuis l'adresse d'administration du serveur lui-même, vers cette même adresse, que tu as redirigé peut-être sur une adresse personnelle.

    En tout cas, ne communique pas avec cette personne, ne lui adresse aucune somme d'argent, ni aucun paramètre, compte d'accès, ou autre de ton site.
    --- Sevyc64 ---

    Parce que le partage est notre force, la connaissance sera notre victoire

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par sevyc64 Voir le message
    Attention, ce message, tel que tu le rapporte, est une grosse tentative d'arnaque.

    Il n'est même pas certains que l'auteur ait réussi à acceder à la structure de ton site. Il a peut-être simplement réussi à injecter un script qui a lu la structure et créer le mail, sans que lui même ait eu l'information.

    Si ça se trouve, le message a été envoyé depuis l'adresse d'administration du serveur lui-même, vers cette même adresse, que tu as redirigé peut-être sur une adresse personnelle.

    En tout cas, ne communique pas avec cette personne, ne lui adresse aucune somme d'argent, ni aucun paramètre, compte d'accès, ou autre de ton site.
    Arnaque oui, mais il a quand même listé toutes mes bases ! Comment ????? C'est ça qui m'inquiète ...

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    En règles général les développeurs PHP/MySQL ne sont pas formé à faire des applications sécurisées.
    Parmi les trous de sécurité les plus classiques il y a la création de requêtes par manipulation de bout de chaines de caractères dans PHP, Sans vérification des du contenu des variables passées en argument...
    Cela constitue des injections de SQL.
    Dès lors, au lieu de passer une valeur classique, l'utilisateur var passer un texte comme :
    "toto';SELECT * FROM INFORMATION_SCHEMA.TABLES--"
    Et donc obtenir la liste de vos tables...

    Il suffit donc d'identifier les points d'injection de SQL et d'y remédier soit en faisant des requêtes paramétrées, soit en utilisant des procédures stockées, soit en testant le contenu des variables saisie et le tout en ajoutant une véritable gestion de la sécurité via les utilisateurs SQL et les privilèges...

    Cela vous coutera certainement plus que les 250 £ demandées par cet escroc, mais il fallait y penser avant !

    A +

    PS : je suis toujours atterré par la méconnaissance des concepts des SGBDR par les développeurs MySQL !
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    PS : je suis toujours atterré par la méconnaissance des concepts des SGBDR par les développeurs MySQL !
    Tout le monde n'est pas, je cite, "Expert SGBDR & SQL" ...

  8. #8
    dsy
    dsy est déconnecté
    Membre habitué
    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    105
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2002
    Messages : 105
    Points : 142
    Points
    142
    Par défaut
    "Ca fait peur, je dois avoir un gros trou de sécurité, mais lequel ?"
    Tu pourrais commencer par regarder tes logs HTTP pour analyser les requêtes réussies.

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    ça y est j'ai trouvé de droles de traces :

    41.250.95.160 - - [03/Nov/2011:15:30:19 +0100] "GET /produit/index/?pid=-999.9%20UNION%20ALL%20SELECT%200x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536-- HTTP/1.1" 200 88733 "-" "-"

    41.250.95.160 - - [03/Nov/2011:15:30:26 +0100] "GET /produit/index/?pid=-999.9%20UNION%20ALL%20SELECT%200x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536,0x31303235343830303536-- HTTP/1.1" 200 88733 "-" "-"
    Ca fait quoi ce truc ?????

  10. #10
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    /produit/index/?pid=65561%20and(select%201%20from(select%20count(*),concat((select%20(select%20concat(0x7e,0x27,Hex(cast(database()%20as%20char)),0x27,0x7e))%20from%20information_schema.tables%20limit%200,1),floor(rand(0)*2))x%20from%20information_schema.tables%20group%20by%20x)a)%20and%201=1
    j ai essayé d'accéder à cette page avec cette requête, mais rien ne s'affiche sur ma page, j 'ai un message d erreur car mon script php aime pas, comment il récupère le résultat de sa requête le mec ??

  11. #11
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    41.250.95.160 - - [03/Nov/2011:15:30:55 +0100] "GET /produit/index/?pid=65561%20and(select%201%20from(select%20count(*),concat((select%20(select%20concat(0x7e,0x27,Hex(cast(database()%20as%20char)),0x27,0x7e))%20from%20information_schema.tables%20limit%200,1),floor(rand(0)*2))x%20from%20information_schema.tables%20group%20by%20x)a)%20and%201=1 HTTP/1.1" 200 88733 "-" "-"
    vois pas comment il récupère le résultat de sa requête ...

  12. #12
    Modérateur

    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 799
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 799
    Points : 34 031
    Points
    34 031
    Billets dans le blog
    14
    Par défaut
    C'est exactement ce que SQLPro et moi pensions : tu es victime d'une injection SQL !

    Documente-toi sur le sujet ; tu comprendras la cause et tu trouveras les méthodes pour t'en protéger.

    Grosso modo, tu as dans ton site des url avec des paramètres faisant directement référence à un identifiant d'un élément de ta BDD, ici apparemment l'identifiant du produit.

    Une url de ce genre :
    ton_site//produit/index/?pid=une_valeur

    Et toi tu t'attends naïvement à ce que tout utilisateur utilise l'interface pour que une_valeur soit celle de l'identifiant du produit sélectionné ou un truc du genre. Sauf que des petits malins détournent ça facilement en ajoutant à ce genre d'URL une requête SQL qui va espionner ta BDD.

    Quelque part, un programme de ton site récupère le paramètre pour interroger la BDD de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM produit
    WHERE pid = une_valeur
    Et avec la combine qui transforme une_valeur en une_valeur+une_requête, ça donne un truc de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *
    FROM produit
    WHERE pid = une_valeur
    UNION ALL
    SELECT *
    FROM information_schema.SCHEMATA
    -- etc...

    Bon courage !
    C'est avec ce genre de problème qu'on apprend le plus !
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole. Autoentrepreneur.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  13. #13
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    66
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 66
    Points : 41
    Points
    41
    Par défaut
    Citation Envoyé par CinePhil Voir le message
    C'est exactement ce que SQLPro et moi pensions : tu es victime d'une injection SQL !

    Documente-toi sur le sujet ; tu comprendras la cause et tu trouveras les méthodes pour t'en protéger.

    Grosso modo, tu as dans ton site des url avec des paramètres faisant directement référence à un identifiant d'un élément de ta BDD, ici apparemment l'identifiant du produit.

    Une url de ce genre :
    ton_site//produit/index/?pid=une_valeur

    Et toi tu t'attends naïvement à ce que tout utilisateur utilise l'interface pour que une_valeur soit celle de l'identifiant du produit sélectionné ou un truc du genre. Sauf que des petits malins détournent ça facilement en ajoutant à ce genre d'URL une requête SQL qui va espionner ta BDD.

    Quelque part, un programme de ton site récupère le paramètre pour interroger la BDD de cette manière :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT *
    FROM produit
    WHERE pid = une_valeur
    Et avec la combine qui transforme une_valeur en une_valeur+une_requête, ça donne un truc de ce genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    SELECT *
    FROM produit
    WHERE pid = une_valeur
    UNION ALL
    SELECT *
    FROM information_schema.SCHEMATA
    -- etc...

    Bon courage !
    C'est avec ce genre de problème qu'on apprend le plus !
    oui j'ai bien compris la faille et je l'ai corrigée en vérifiant que le paramètre que le code PHP reçoit soit bien ce que j'attends !

    Ce que je ne comprends pas, c'est comment il récupère le résultat de sa requête ?????? Il fait un select, ok mais il s'affiche où, comment le résultat ?

Discussions similaires

  1. La solution pour en finir avec le trou de la sécurité sociale
    Par Pierre Louis Chevalier dans le forum La taverne du Club : Humour et divers
    Réponses: 0
    Dernier message: 09/11/2013, 03h05
  2. La Sécurité dans Access
    Par Maxence HUBICHE dans le forum Sondages et Débats
    Réponses: 81
    Dernier message: 24/06/2007, 01h07
  3. Trou de sécurité
    Par sansblague dans le forum Apache
    Réponses: 2
    Dernier message: 21/01/2007, 10h49
  4. Réponses: 4
    Dernier message: 13/12/2005, 10h19
  5. Pb de sécurité
    Par xtrips dans le forum Débuter
    Réponses: 6
    Dernier message: 16/04/2003, 07h50

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