J. Hennecart Serval-Concept Lundi 23 février 2015 J. Hennecart
des injections SQL sont des vulnérabilités permettant de faire exécuter des commandes, non prévues initialement, à une base de données. La faille exploitée est généralement un mauvais filtrage des informations envoyées par un internaute, lui permettant l exécution de commandes sur les bases de données auxquelles l application Web a accès. J. Hennecart
Un peu d éclaircissement et types Vous avez dit BDD? Une base de données est un système permettant de stocker, classifier et retrouver facilement une information. Un simple fichier de tableur peut être considéré comme une base de données. Mais on entend généralement par BDD (Base De Données), dans le milieu informatique, un système plus complexe de gestion de données. On parle alors de SGBD (Système de Gestion de Base de Données). Il en existe deux grands types : J. Hennecart
Un peu d éclaircissement et types Vous avez dit BDD? Une base de données est un système permettant de stocker, classifier et retrouver facilement une information. Un simple fichier de tableur peut être considéré comme une base de données. Mais on entend généralement par BDD (Base De Données), dans le milieu informatique, un système plus complexe de gestion de données. On parle alors de SGBD (Système de Gestion de Base de Données). Il en existe deux grands types : relationnelles qui utilisent un langage SQL () J. Hennecart
Un peu d éclaircissement et types Vous avez dit BDD? Une base de données est un système permettant de stocker, classifier et retrouver facilement une information. Un simple fichier de tableur peut être considéré comme une base de données. Mais on entend généralement par BDD (Base De Données), dans le milieu informatique, un système plus complexe de gestion de données. On parle alors de SGBD (Système de Gestion de Base de Données). Il en existe deux grands types : relationnelles qui utilisent un langage SQL () non relationnelles qui utilisent un langage No SQL (Not only SQL) J. Hennecart
Aujourd hui et types Nous aborderons ici uniquement la problématique des injections dans les bases de données relationnelles car ce sont celles que nous rencontrons le plus souvent dans les entreprises. J. Hennecart
SQL c est quoi? et types SQL est un langage Afin de pouvoir stocker intelligemment l information et traiter celle-ci rapidement il a fallu inventer un langage, qui, associé à un moteur de bases de données, permet un traitement efficace de l information. Ce langage permet par exemple de : J. Hennecart
SQL c est quoi? et types SQL est un langage Afin de pouvoir stocker intelligemment l information et traiter celle-ci rapidement il a fallu inventer un langage, qui, associé à un moteur de bases de données, permet un traitement efficace de l information. Ce langage permet par exemple de : Créer des bases (CREATE DATABASE) J. Hennecart
SQL c est quoi? et types SQL est un langage Afin de pouvoir stocker intelligemment l information et traiter celle-ci rapidement il a fallu inventer un langage, qui, associé à un moteur de bases de données, permet un traitement efficace de l information. Ce langage permet par exemple de : Créer des bases (CREATE DATABASE) Créer des tables (CREATE TABLE) J. Hennecart
SQL c est quoi? et types SQL est un langage Afin de pouvoir stocker intelligemment l information et traiter celle-ci rapidement il a fallu inventer un langage, qui, associé à un moteur de bases de données, permet un traitement efficace de l information. Ce langage permet par exemple de : Créer des bases (CREATE DATABASE) Créer des tables (CREATE TABLE) Insérer des données dans une table (INSERT) J. Hennecart
SQL c est quoi? et types SQL est un langage Afin de pouvoir stocker intelligemment l information et traiter celle-ci rapidement il a fallu inventer un langage, qui, associé à un moteur de bases de données, permet un traitement efficace de l information. Ce langage permet par exemple de : Créer des bases (CREATE DATABASE) Créer des tables (CREATE TABLE) Insérer des données dans une table (INSERT) Lire des données dans une table (SELECT) J. Hennecart
SQL c est quoi? et types SQL est un langage Afin de pouvoir stocker intelligemment l information et traiter celle-ci rapidement il a fallu inventer un langage, qui, associé à un moteur de bases de données, permet un traitement efficace de l information. Ce langage permet par exemple de : Créer des bases (CREATE DATABASE) Créer des tables (CREATE TABLE) Insérer des données dans une table (INSERT) Lire des données dans une table (SELECT) Modifier les données dans une table (UPDATE) J. Hennecart
SQL c est quoi? et types SQL est un langage Afin de pouvoir stocker intelligemment l information et traiter celle-ci rapidement il a fallu inventer un langage, qui, associé à un moteur de bases de données, permet un traitement efficace de l information. Ce langage permet par exemple de : Créer des bases (CREATE DATABASE) Créer des tables (CREATE TABLE) Insérer des données dans une table (INSERT) Lire des données dans une table (SELECT) Modifier les données dans une table (UPDATE) etc J. Hennecart
et types Comment accéder à une base de données Plusieurs solutions Un serveur de bases de données exécute une application chargée de la gestion des bases de données et de l exécution des commandes SQL sur celles-ci. L application peut communiquer avec l utilisateur, ou d autres serveurs, par plusieurs moyens : J. Hennecart
et types Comment accéder à une base de données Plusieurs solutions Un serveur de bases de données exécute une application chargée de la gestion des bases de données et de l exécution des commandes SQL sur celles-ci. L application peut communiquer avec l utilisateur, ou d autres serveurs, par plusieurs moyens : Par une connexion directe sur le serveur (locale ou distante) J. Hennecart
et types Comment accéder à une base de données Plusieurs solutions Un serveur de bases de données exécute une application chargée de la gestion des bases de données et de l exécution des commandes SQL sur celles-ci. L application peut communiquer avec l utilisateur, ou d autres serveurs, par plusieurs moyens : Par une connexion directe sur le serveur (locale ou distante) Par une autre application Web, programme, etc J. Hennecart
et types Comment accéder à une base de données Plusieurs solutions Un serveur de bases de données exécute une application chargée de la gestion des bases de données et de l exécution des commandes SQL sur celles-ci. L application peut communiquer avec l utilisateur, ou d autres serveurs, par plusieurs moyens : Par une connexion directe sur le serveur (locale ou distante) Par une autre application Web, programme, etc Par l intermédiaire d un service Web (meilleur solution) J. Hennecart
et types Comment accéder à une base de données J. Hennecart
Cas d une application Web et types Accès à une BDD par une application Web Dans la vie courante, les internautes accèdent à des bases de données sans vraiment s en rendre compte. C est le site Web qui fait l interface entre l utilisateur et la base de données. Quelques exemples : J. Hennecart
Cas d une application Web et types Accès à une BDD par une application Web Dans la vie courante, les internautes accèdent à des bases de données sans vraiment s en rendre compte. C est le site Web qui fait l interface entre l utilisateur et la base de données. Quelques exemples : Identification sur un portail J. Hennecart
Cas d une application Web et types Accès à une BDD par une application Web Dans la vie courante, les internautes accèdent à des bases de données sans vraiment s en rendre compte. C est le site Web qui fait l interface entre l utilisateur et la base de données. Quelques exemples : Identification sur un portail Consultation d un forum J. Hennecart
Cas d une application Web et types Accès à une BDD par une application Web Dans la vie courante, les internautes accèdent à des bases de données sans vraiment s en rendre compte. C est le site Web qui fait l interface entre l utilisateur et la base de données. Quelques exemples : Identification sur un portail Consultation d un forum Moteur de recherche J. Hennecart
Cas d une application Web et types Accès à une BDD par une application Web Dans la vie courante, les internautes accèdent à des bases de données sans vraiment s en rendre compte. C est le site Web qui fait l interface entre l utilisateur et la base de données. Quelques exemples : Identification sur un portail Consultation d un forum Moteur de recherche etc J. Hennecart
Cas d une application Web et types Mécanisme Dans tous les cas cités précédemment le chemin de l information est pratiquement toujours le même. En voici les étapes : J. Hennecart
Cas d une application Web et types Mécanisme Dans tous les cas cités précédemment le chemin de l information est pratiquement toujours le même. En voici les étapes : 1 L usager saisit des données dans un navigateur J. Hennecart
Cas d une application Web et types Mécanisme Dans tous les cas cités précédemment le chemin de l information est pratiquement toujours le même. En voici les étapes : 1 L usager saisit des données dans un navigateur 2 Les données sont envoyées à l application Web J. Hennecart
Cas d une application Web et types Mécanisme Dans tous les cas cités précédemment le chemin de l information est pratiquement toujours le même. En voici les étapes : 1 L usager saisit des données dans un navigateur 2 Les données sont envoyées à l application Web 3 L application Web forge une requête de base de données avec les informations saisies par l usager. J. Hennecart
Cas d une application Web et types Mécanisme Dans tous les cas cités précédemment le chemin de l information est pratiquement toujours le même. En voici les étapes : 1 L usager saisit des données dans un navigateur 2 Les données sont envoyées à l application Web 3 L application Web forge une requête de base de données avec les informations saisies par l usager. 4 La requête est envoyée à la BDD par l application Web J. Hennecart
Cas d une application Web et types Mécanisme Dans tous les cas cités précédemment le chemin de l information est pratiquement toujours le même. En voici les étapes : 1 L usager saisit des données dans un navigateur 2 Les données sont envoyées à l application Web 3 L application Web forge une requête de base de données avec les informations saisies par l usager. 4 La requête est envoyée à la BDD par l application Web 5 La BDD interprète la requête et retourne une réponse à l application Web J. Hennecart
Cas d une application Web et types Mécanisme Dans tous les cas cités précédemment le chemin de l information est pratiquement toujours le même. En voici les étapes : 1 L usager saisit des données dans un navigateur 2 Les données sont envoyées à l application Web 3 L application Web forge une requête de base de données avec les informations saisies par l usager. 4 La requête est envoyée à la BDD par l application Web 5 La BDD interprète la requête et retourne une réponse à l application Web 6 L application Web traite la réponse et conduit une action (affichage, autorisation d accès, etc) J. Hennecart
et types Schéma d une requête, de la question à la réponse J. Hennecart
Où est le problème Exemple d injection classique Blind injection SQL Comment une injection peut-elle se faire C est au moment où l application Web interprète les données de l usager pour forger une requête de BDD que le problème se pose. Si les données sont traitées sans filtrage, où avec un mauvais filtrage, elles peuvent conduire à une requête non souhaitée envoyée au serveur de base de données. J. Hennecart
Traitons un exemple Où est le problème Exemple d injection classique Blind injection SQL Scénario Imaginons que les conférences de la gare numérique soient saisies dans une base de données et qu il soit possible d effectuer une recherche sur celles-ci par plusieurs critères. Par exemple à l aide du nom du conférencier. Voici les étapes de traitement : 1 L usager saisit un nom de conférencier : Jerome Ridet J. Hennecart
Traitons un exemple Où est le problème Exemple d injection classique Blind injection SQL Scénario Imaginons que les conférences de la gare numérique soient saisies dans une base de données et qu il soit possible d effectuer une recherche sur celles-ci par plusieurs critères. Par exemple à l aide du nom du conférencier. Voici les étapes de traitement : 1 L usager saisit un nom de conférencier : Jerome Ridet 2 Une requête de BDD est générée avec ce nom pour trouver le sujet de la conférence présentée : SELECT sujet FROM conference WHERE conferencier= Jerome Ridet J. Hennecart
Traitons un exemple Où est le problème Exemple d injection classique Blind injection SQL Scénario Imaginons que les conférences de la gare numérique soient saisies dans une base de données et qu il soit possible d effectuer une recherche sur celles-ci par plusieurs critères. Par exemple à l aide du nom du conférencier. Voici les étapes de traitement : 1 L usager saisit un nom de conférencier : Jerome Ridet 2 Une requête de BDD est générée avec ce nom pour trouver le sujet de la conférence présentée : SELECT sujet FROM conference WHERE conferencier= Jerome Ridet 3 La requête est traitée par le serveur de BDD J. Hennecart
Traitons un exemple Où est le problème Exemple d injection classique Blind injection SQL Scénario Imaginons que les conférences de la gare numérique soient saisies dans une base de données et qu il soit possible d effectuer une recherche sur celles-ci par plusieurs critères. Par exemple à l aide du nom du conférencier. Voici les étapes de traitement : 1 L usager saisit un nom de conférencier : Jerome Ridet 2 Une requête de BDD est générée avec ce nom pour trouver le sujet de la conférence présentée : SELECT sujet FROM conference WHERE conferencier= Jerome Ridet 3 La requête est traitée par le serveur de BDD 4 La requête est envoyée à la BDD par l application Web J. Hennecart
Traitons un exemple Où est le problème Exemple d injection classique Blind injection SQL Scénario Imaginons que les conférences de la gare numérique soient saisies dans une base de données et qu il soit possible d effectuer une recherche sur celles-ci par plusieurs critères. Par exemple à l aide du nom du conférencier. Voici les étapes de traitement : 1 L usager saisit un nom de conférencier : Jerome Ridet 2 Une requête de BDD est générée avec ce nom pour trouver le sujet de la conférence présentée : SELECT sujet FROM conference WHERE conferencier= Jerome Ridet 3 La requête est traitée par le serveur de BDD 4 La requête est envoyée à la BDD par l application Web 5 L application Web traite la réponse pour affichage. J. Hennecart
Traitons un exemple Où est le problème Exemple d injection classique Blind injection SQL Le filtrage est-il bien fait? Normalement les données envoyées par le formulaire ne doivent pas être utilisées directement dans la requête SQL. Il faut vérifier qu elles sont conformes au format attendu, en l occurrence ici une chaine nom prénom. Essayons de générer une requête modifiée : Nous entrons comme nom : test OR 1=1# J. Hennecart
Traitons un exemple Où est le problème Exemple d injection classique Blind injection SQL Le filtrage est-il bien fait? Normalement les données envoyées par le formulaire ne doivent pas être utilisées directement dans la requête SQL. Il faut vérifier qu elles sont conformes au format attendu, en l occurrence ici une chaine nom prénom. Essayons de générer une requête modifiée : Nous entrons comme nom : test OR 1=1# La requête devient, sans filtrage : SELECT sujet FROM conference WHERE conferencier= test OR 1=1# J. Hennecart
Traitons un exemple Où est le problème Exemple d injection classique Blind injection SQL Pouvons-nous lire d autres tables? L injection SQL ayant été détectée et prouvée, il est possible de chercher à lire d autres tables. Pour cela il est possible d utiliser UNION dans les SELECT afin de les combiner. Nous entrons comme nom : test UNION SELECT 1# J. Hennecart
Traitons un exemple Où est le problème Exemple d injection classique Blind injection SQL Pouvons-nous lire d autres tables? L injection SQL ayant été détectée et prouvée, il est possible de chercher à lire d autres tables. Pour cela il est possible d utiliser UNION dans les SELECT afin de les combiner. Nous entrons comme nom : test UNION SELECT 1# La requête devient, sans filtrage : SELECT sujet FROM conference WHERE conferencier= test UNION SELECT 1# J. Hennecart
Traitons un exemple Où est le problème Exemple d injection classique Blind injection SQL Trouver d autres tables Il existe plusieurs techniques pour trouver si d autres tables peuvent être lues. Dans les BDD MySQL par exemple il existe une base information schema, qui décrit les tables. Cette base peut nous aider à retrouver des noms de tables qui nous sont inconnues pour le moment. Il est aussi possible de faire des recherches logiques ou des attaques par dictionnaires. J. Hennecart
Traitons un exemple Où est le problème Exemple d injection classique Blind injection SQL Démonstration de quelques essais. J. Hennecart
Un serveur peu bavard Où est le problème Exemple d injection classique Blind injection SQL Dans le noir Dans certains cas, l application ne renvoie pas beaucoup d information. Par exemple lors d une identification le serveur informe simplement l usager s il est authentifié ou non. Il faut dans ce cas utiliser d autres techniques plus avancées que nous ne verrons pas aujourd hui. J. Hennecart
Fitrage des données Filtrer les données Important Dans tous les cas il ne faut jamais faire confiance aux données envoyées par un utilisateur. Il existe plusieurs solutions : J. Hennecart
Fitrage des données Filtrer les données Important Dans tous les cas il ne faut jamais faire confiance aux données envoyées par un utilisateur. Il existe plusieurs solutions : Échapper certains caractères comme la ou les J. Hennecart
Fitrage des données Filtrer les données Important Dans tous les cas il ne faut jamais faire confiance aux données envoyées par un utilisateur. Il existe plusieurs solutions : Échapper certains caractères comme la ou les Filtrer les données avec des expressions régulières, par exemple une date de naissance est du type : JJ/MM/AAAA J. Hennecart
Fitrage des données Filtrer les données Important Dans tous les cas il ne faut jamais faire confiance aux données envoyées par un utilisateur. Il existe plusieurs solutions : Échapper certains caractères comme la ou les Filtrer les données avec des expressions régulières, par exemple une date de naissance est du type : JJ/MM/AAAA Mettre en place un WAF (Web Application Firewall) qui va détecter les requêtes malicieuses et agir en conséquence. J. Hennecart
Fitrage des données Filtrer les données Important Dans tous les cas il ne faut jamais faire confiance aux données envoyées par un utilisateur. Il existe plusieurs solutions : Échapper certains caractères comme la ou les Filtrer les données avec des expressions régulières, par exemple une date de naissance est du type : JJ/MM/AAAA Mettre en place un WAF (Web Application Firewall) qui va détecter les requêtes malicieuses et agir en conséquence. etc J. Hennecart
Ce qu il faut retenir À retenir Des question permettent d exécuter des requêtes non souhaitées dans des bases de données J. Hennecart
Ce qu il faut retenir À retenir Des question permettent d exécuter des requêtes non souhaitées dans des bases de données Elles sont à l origine de grosses fuites d informations J. Hennecart
Ce qu il faut retenir À retenir Des question permettent d exécuter des requêtes non souhaitées dans des bases de données Elles sont à l origine de grosses fuites d informations C est de la responsabilité des entreprises que de sécuriser les données de ses clients : article 34 de la loi Informatique et Libertés du 6 janvier 1978 modifiée. J. Hennecart
Ce qu il faut retenir À retenir Des question permettent d exécuter des requêtes non souhaitées dans des bases de données Elles sont à l origine de grosses fuites d informations C est de la responsabilité des entreprises que de sécuriser les données de ses clients : article 34 de la loi Informatique et Libertés du 6 janvier 1978 modifiée. Afin de s assurer de la bonne sécurisation de son site Web l ANSSI recommande d effectuer un audit par an. Celui-ci relèvera les failles de sécurité et préconisera des recommandations. J. Hennecart
Ce qu il faut retenir À retenir Des question permettent d exécuter des requêtes non souhaitées dans des bases de données Elles sont à l origine de grosses fuites d informations C est de la responsabilité des entreprises que de sécuriser les données de ses clients : article 34 de la loi Informatique et Libertés du 6 janvier 1978 modifiée. Afin de s assurer de la bonne sécurisation de son site Web l ANSSI recommande d effectuer un audit par an. Celui-ci relèvera les failles de sécurité et préconisera des recommandations. Le développement d une application Web doit être pensé sécurité dès l origine. J. Hennecart
À retenir Des question Des question? J. Hennecart