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

Oracle Discussion :

Pourquoi ce script est-il vulnerable ?


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 105
    Par défaut Pourquoi ce script est-il vulnerable ?
    bonjour

    j'ai trouvé un code sur net et j'ai besoin d'aide sur ce script :
    CREATE OR REPLACE PROCEDURE demo(value IN VARCHAR2) AS
    BEGIN
    ...
    -- vulnerable
    EXECUTE IMMEDIATE 'BEGIN updatepass(''' || value || '''); END;';
    -- not vulnerable
    cmd := 'BEGIN updatepass(:1); END;';
    EXECUTE IMMEDIATE cmd USING value;
    ...
    END;
    ma question c'est pourquoi la première requete est vulnerable et la seconde non ? et que fait updatepass ?
    merci d'avance.

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Recherche SQL INJECTION sur le net.

    La chaine exécutée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     'BEGIN updatepass(''' || value || '''); END;'
    peut se retrouver à exécuter un DROP DATABASE si value contient par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1'); DROP DATABASE; updatepass('''1

  3. #3
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 105
    Par défaut
    bonjour et merci pour votre reponse mai j'ai pas bien compris l'idée
    1'); DROP DATABASE; updatepass('''1
    vous voulez dire que l'user execute la procedure demo ('drop database') ?
    merci d'avance.

  4. #4
    Rédacteur
    Avatar de Vincent Rogier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 373
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 373
    Par défaut
    reprenons :

    'BEGIN updatepass(''' || value || '''); END;'
    avec value =

    '); DROP DATABASE XXXX; DBMS_OUTPUT.PUT_LINE('YOU''VE BEEN INJECTED
    cela donne au final (les retours chariots sont ajoutés pour la compréhension) :

    BEGIN
    updatepass('');
    DROP DATABASE XXXX;
    DBMS_OUTPUT.PUT_LINE('YOU''VE BEEN INJECTED');
    END;
    Ca te parait plus clair ?
    Vincent Rogier.

    Rubrique ORACLE : Accueil - Forum - Tutoriels - FAQ - Livres - Blog

    Vous voulez contribuer à la rubrique Oracle ? Contactez la rubrique !

    OCILIB (C Driver for Oracle)

    Librairie C Open Source multi-plateformes pour accéder et manipuler des bases de données Oracle

  5. #5
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 105
    Par défaut
    bonjour et merci pour votre aide
    quelque chose que je n'ai pas saisi, est ce que " updatepass(''); " a un effet pour rendre ce code vulnerable ?
    et c'est quoi son effet ?
    et pouroi ce code n'est pas vulnerable ?
    -- not vulnerable
    cmd := 'BEGIN updatepass(:1); END;';
    EXECUTE IMMEDIATE cmd USING value;
    ...
    merci d'avance

  6. #6
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Entre nous
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Begin
      ...
      Drop database ...
    ne passera jamais.

  7. #7
    Membre confirmé
    Inscrit en
    Février 2010
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 105
    Par défaut
    merci mais si on enleve drop database , est ce que ça reste toujours vulnerable ?

Discussions similaires

  1. Réponses: 10
    Dernier message: 04/04/2007, 16h02
  2. Pourquoi cette requête est lente ?
    Par zenzo dans le forum Langage SQL
    Réponses: 7
    Dernier message: 06/01/2006, 15h15
  3. Réponses: 9
    Dernier message: 05/10/2005, 14h50
  4. [Plugin][VE]pourquoi la fenetre est dans la barre des taches
    Par voyageur dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 15/06/2005, 08h59

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