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 PostgreSQL Discussion :

[sqlmap] Cacher le nom de la DB [11]


Sujet :

Administration PostgreSQL

  1. #1
    LFC
    LFC est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 106
    Points : 70
    Points
    70
    Par défaut [sqlmap] Cacher le nom de la DB
    Bonjour,
    le logiciel sqlmap permet de tester les vulnérabilités postgresql.
    Or, le résutlat d'un check sqlmap montre le nom du schéma de la DB.
    Comment peut on cacher le nom du schéma/db à sqlmap ?
    Merci.

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 772
    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 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Vous confondez la notion de schéma SQL et la notion de bases de données. Ces deux concepts n'ont rien à voir l'un avec l'autre !

    Lisez l'article que j'ai écrit à ce sujet :
    https://blog.developpez.com/sqlpro/p...des_schema_sql


    A +
    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/ * * * * *

  3. #3
    LFC
    LFC est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 106
    Points : 70
    Points
    70
    Par défaut
    Bonjour,

    j'ai effectivement réalisé un raccourci entre ces 2 notions et je me suis empressé de lire l'article.

    Disons que le logiciel sqlmap dise :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    available databases [1]:
    [*] public
    Est-ce que c'est considéré comme une faille de sécurité ou pas ? Si oui, j'ai suivi les différents conseils que postgresql donne dans sa section "sécurisation", mais je ne vois pas de quelle manière corriger cela. Les nombreux articles sur le Net ne me donnent pas d'indices non plus.

    Une idée ?

    Merci.

  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 772
    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 772
    Points : 52 732
    Points
    52 732
    Billets dans le blog
    5
    Par défaut
    Les bases étant cloisonnées dans PG, un utilisateur d'une base a ne voit pas et ne peut pas atteindre une base B sauf si un DBlink est créé avec des permissions sp"cifiques.

    Pour les schémas SQL, vous pouvez donner des privilèges individuellement aux schemas.

    Pour le schéma "public" qui est une des pires imbécilité en matière de faille de sécurité, il dvaudrait mieux ne jamais rien créer dans ce schéma et même prévoir un déclencheur DDL qui supprime tout ce qui y est créé !
    https://wiki.postgresql.org/wiki/A_G...ur_Search_Path


    A +
    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/ * * * * *

  5. #5
    LFC
    LFC est déconnecté
    Membre régulier
    Profil pro
    Inscrit en
    Février 2003
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2003
    Messages : 106
    Points : 70
    Points
    70
    Par défaut
    J'ai bien compris qu'il en fallait pas laisser en vie le "public" qui est créé par défaut, mais je disais - pour ne pas citer le vrai nom de la db que j'utilise - que si sqlmap arrive à lire le nom de la db, est-ce que c'est une faille et on peut y rémédier en cachant cela ?
    sqlmap est un logiciel gratuit sur le net, donc quand il teste des failles de sécurité sur n'importe quel site web, il n'y a pas de notion de droit sur un user ou pas.

    Si je prends un exemple tout autre.

    Disons que je lance sqlmap sur le site developpez.net pour tenter de trouver quel est le type de DB qu'ils utilisent, je lancerai :
    sqlmap -u https://www.developpez.net/forums/anologin3.php etc.

    Si sqlmap après de nombreux tests affiche que le site utilise une DB postgresql et le nom de la DB de cette forme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    available databases [1]:
    [*] developpeznet_database
    que pourrait faire ce site pour cacher cette information ?

    J'espère que c'est plus clair maintenant.

    Merci.

  6. #6
    Expert éminent sénior
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 690
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 690
    Points : 30 985
    Points
    30 985
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par LFC Voir le message
    ... donc quand il teste des failles de sécurité sur n'importe quel site web, il n'y a pas de notion de droit sur un user ou pas.
    Si bien sûr. Car le site internet se connecte fatalement à la bdd à un moment ou un autre. Et il passe pour ça par un user dédié à cette connexion. Et ce user a fatalement des droits de connexion à la bdd et d'exécuter ne serait-ce qu'un simple select current_database()).

    Citation Envoyé par LFC Voir le message
    que pourrait faire ce site pour cacher cette information ?
    Déjà si tu arrives, que ce soit avec sqlmap ou simplement par un psql classique, à trouver le nom de la bdd d'un site web, c'est que ce site est déjà bien malade et plus trouée qu'un gruyère et dans ce cas, cette info n'a alors plus d'importance (comme un type qui perd un sac d'or et qui aurait envie de protéger les quelques euros de son portefeuille). Parce que dans les sites bien faits, la bdd se trouve derrière le serveur web. Le serveur peut accéder à la bdd via un réseau interne mais toi tu ne le peux pas. C'est le minimum requis pour pouvoir se dire "sécurisé". Plus les trucs de base qui sont de mettre bien évidemment un mot de passe au user postgres et bien évidemment ne pas mettre de connexion "trust" dans le fichier pg_hba.conf. On peut aussi changer le port par défaut (5432). Déjà là tu as un truc un peu sérieux. Si en plus le site web se trouve sur un serveur Linux dans une partition bien à lui et que la partition est montée en read-only là tu peux commencer à te sentir bien à l'aise.

    Ensuite vient la sécurisation de ta base elle-même. Déjà tu lui mets un user d'admin à son nom, mais sans droit login (exemple pour un bdd "toto" tu crées le user "toto_dba" via un create role toto_dba nosuperuser nocreatedb nocreaterole noinherit nologin). Ainsi juste son existence permet de créer ensuite la bdd à son nom avec create database toto with owner=toto_dba puis faire ensuite un set role "toto_dba" pour que toute la suite de la création de la bdd se fasse sous le compte "toto_dba". Ainsi tous les schémas, toutes les tables, tous les objets de la bdd lui appartiennent.
    Ensuite plus tard tu pourras créer des users réels cette fois, qui auront eux le droit d'administrer la bdd "toto". Exemple create user "LFC" nosuperuser nocreatedb nocreaterole inherit login; grant "toto_dba" to "LFC". Ainsi le user "LFC" pourra administrer la bdd "toto" déjà sans avoir besoin du mot de passe de postgres et surtout il ne pourra pas administrer la bdd "titi".
    Et ensuite tu crées de la même façon un user dédié à utiliser la base (exemple create role toto_user nosuperuser nocreatedb nocreaterole noinherit nologin). Puis pour chaque schéma, chaque table que tu crées, tu commences par faire un revoke all privileges on table truc from public puis un grant select, insert, update, delete on table truc to toto_user. Ainsi seul toto_user (enfin ses héritiers) pourront accéder au contenu de la bdd. Et enfin ne te reste qu'à créer les vrais users (associés eux à des personnes réelles) en les faisant hériter de "toto_user" (même méthode que pour "toto_dba"). Ainsi cela leur permettra de se connecter à la bdd et travailler dedans.
    A partir de là, m'étonnerait que sqlmap puisse trouver quoi que ce soit de consistant et même si le nom de la bdd ressortait quelque part on ne pourrait pas en faire grand chose.

    Concernant le schéma public mentionné par SQLpro je sentais que c'était pas terrible mais sans trop savoir pourquoi donc je ne l'utilise à la base jamais. Déjà mes bdd contiennent toujours différents domaines chacun associé à un schéma dédié donc c'est aussi pour des raisons d'organisation que je n'utilisais pas public. Et aussi question sécurité j'aimais bien car quand le schéma n'est pas "public" il doit être explicitement mentionné dans le nom de la table lors des requêtes. Donc tu te connectes à une de mes bdd, tu fais un \dt et déjà premier fuck. Ok les schémas d'une bdd ça se trouve mais quand-même ça fait plaisir.
    Et en allant voir la page qu'il cite avec l'exemple où on peut créer sa propre fonction lower() qui remplace l'officielle ok je vois mieux et je suis content d'avoir fait ce choix.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. Réponses: 20
    Dernier message: 14/06/2011, 18h17
  2. comment cacher le nom d'une colonne
    Par sdim36 dans le forum MS SQL Server
    Réponses: 7
    Dernier message: 28/02/2008, 20h40
  3. [OpenOffice] Cacher le nom d'une macro open office.
    Par damashi dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 19/02/2008, 17h28
  4. Comment cacher le nom du serveur dans 1 URL
    Par wodel dans le forum IIS
    Réponses: 3
    Dernier message: 03/08/2006, 18h06
  5. Cacher le nom des pages dans l'URL
    Par Prue dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 07/12/2005, 10h18

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