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

MS SQL Server Discussion :

SQL injection, stored procedures


Sujet :

MS SQL Server

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 1
    Points
    1
    Par défaut SQL injection, stored procedures
    Bonjour,

    mon probleme est le suivant:
    j'utilise une application qui envoie au server MSSQL des requetes de ce genre:
    EXEC sprocedure argument
    la faille est que des utilisateurs peuvent par exemple entrer 'SHUTDOWN-- comme argument.
    je ne possede pas les sources de l'application donc je ne peux rien corriger de ce coté la. Est-il possible de securiser cette faille coté Serveur MSSQL ?

  2. #2
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bonjour,

    la première chose à faire est de diminuer les droits du compte qui se connecte au minimum. Pour exécuter un shutdown, il faut être sysadmin. De plus, sur les bases, enlève les droits de db_owner, ddl_admin, securityadmin... s'il y en a.

    Pour le reste, quelques conseils ici : http://www.microsoft.com/france/msdn.../secmod12.mspx
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    merci pour cette reponse rapide !

    Oui j'avais deja lu que restreindre les droits empecherait le shutdown, mais comme je suis obligé de laisser les droits en ecriture ca laisse toujours la possibilité de faire un UPDATE ou DELETE...

    Je vais lire l'article que vous me conseillez en esperant y trouver une solution.

  4. #4
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Ok, si tu diminues les droits jusque là, et que tu vérifies que la chaîne que tu reçois ne contient ni '--', ni ';', ni UPDATE ou DELETE, tu as déjà fait un peu de chemin.
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  5. #5
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    justement c'est la mon probleme, comment je verifie que la chaine ne contient pas telle ou telle chaine de caractères ? (vu que je n'ai aucun controle sur l'application qui envoie la requete)

  6. #6
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    IF CHARINDEX ( '--' , @monParam) > 0 OR CHARINDEX ( ';' , @monParam) > 0 -- ...
    BEGIN
       RAISERROR('faut pas rêver !', 16, 10)
       RETURN
    END
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  7. #7
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    je met ca ou ? dans la stored procedure ?
    le probleme est, je crois, que l'injection se fait au moment de l'appel a la procedure et non dans la procedure elle meme.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    EXEC sprocedure ''SHUTDOWN--
    ou est ce que je me trompe et ce n'est pas possible ?

  8. #8
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Oui, dans la procédure.
    Quand tu dis que l'injection se fait au moment de l'appel... la chaîne est passée en paramètre à la procédure, mais elle est exécutée dans la procédure. Tu as un EXEC() ou un sp_executesql dans ta procédure, n'est-ce pas ? Alors si tu fais le test avant l'exécution, eh bien... voilà...
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  9. #9
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    non en fait l'exec est directement fait depuis le programme client.
    il envoie la requete "EXEC sprocedure param"

  10. #10
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Ok, j'ai compris, désolé, je restais bloqué sur le paramètre.

    Es-tu sûr dans ce cas que le login qui exécute la procédure doit avoir des droits datawriter ? Si le login ne fait qu'appeler des procédures, tu peux lui donner des droits uniquement sur les procédures, et non pas sur les table utilisées.
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  11. #11
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    ah peut etre que ca suffirait en effet ! comment je fais ca ? et est-ce que je peux lui donner les droits seulement sur certaines procedures et pas d'autres ?

  12. #12
    Expert confirmé
    Avatar de rudib
    Homme Profil pro
    Fakir SQL Server & NoSQL
    Inscrit en
    Mai 2006
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Fakir SQL Server & NoSQL

    Informations forums :
    Inscription : Mai 2006
    Messages : 2 573
    Points : 4 043
    Points
    4 043
    Par défaut
    Bien sûr, tu donnes les droits d'exécution par procédure. Si l'owner des procédures est le même que l'owner des tables, il ne vérifie pas les droits sur les tables, donc tu peux :
    - donner les droits sur les sprocs, soit via Enterprise Manager, soit via T-SQL avec un GRANT EXEC ON sproc TO user
    - enlever les droits sur les tables
    Rudi Bruchez
    Rudi Bruchez EIRL, solutions MS SQL Server et NoSQL
    LinkedIn - [Outil libre de diagnostic SQL Server : Sql Trismegiste]
    LIVRES : Optimiser SQL Server -
    Microsoft SQL Server 2012 Security Cookbook
    - les bases de données NoSQL

    e-learning : LinkedIn Learning - Pluralsight

  13. #13
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Août 2006
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 7
    Points : 1
    Points
    1
    Par défaut
    je vais essayer ca, je te tiens au courant si ca resoud tous les problemes ou non.
    merci mille fois pour ton aide !

Discussions similaires

  1. Utilisation Data Set - SQL Stored Procedure Query
    Par scariou29 dans le forum BIRT
    Réponses: 6
    Dernier message: 01/07/2008, 11h25
  2. Optimisation du SQL stored procedure
    Par ttttnht dans le forum Sybase
    Réponses: 1
    Dernier message: 23/06/2008, 13h57
  3. Stored Procedure SQL Serveur
    Par DPhBxl dans le forum VBA Access
    Réponses: 0
    Dernier message: 19/03/2008, 14h39
  4. [sql 200] Problème avec une stored procedure
    Par marc_dd dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 01/12/2006, 15h11
  5. [SQL] stored procedure
    Par gregorian dans le forum Langage SQL
    Réponses: 3
    Dernier message: 23/11/2005, 14h08

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