299 Shares 6983 views

Quelle est l'injection de SQL?

Le nombre de sites et de pages sur le web ne cesse de croître. Pris pour le développement de tous ceux qui le peuvent. Et les développeurs Web débutants utilisent souvent le code dangereux et vieux. Et cela crée beaucoup de lacunes pour les criminels et les pirates. Qu'ils ne le sont. L'une des vulnérabilités les plus classiques – SQL-injection.

Un peu de théorie

Beaucoup de gens savent que la majorité des sites et des services sur le réseau utilisent le stockage de base de données SQL. Ceci est un langage de requête structurée qui vous permet de contrôler et de gérer le stockage des données. Il existe de nombreuses versions différentes de la base de données du système de gestion de base de données – Oracle, MySQL, Postgre. Quel que soit le nom et le type, ils utilisent les mêmes données de la requête. Il est là que réside la vulnérabilité potentielle. Si le développeur n'a pas réussi à gérer correctement et demander en toute sécurité, un attaquant peut tirer profit de cette situation et utiliser des tactiques spéciales pour accéder à la base de données, puis – et à toute la gestion du site.

Pour éviter de telles situations, vous devez optimiser correctement le code et de surveiller de près d'une manière dans laquelle une demande est en cours de traitement.

Vérifiez pour injection SQL

Pour établir la présence d'une vulnérabilité dans le réseau a un poids de systèmes logiciels automatisés finis. Mais il est possible d'effectuer une simple vérification manuelle. Pour ce faire, aller à l'un des sites d'essai et dans la barre d'adresse pour essayer de provoquer une erreur de base de données. Par exemple, un script sur le site ne peut pas gérer la demande et ne les pas couper.

Par exemple, il nekiy_sayt / index.php? Id = 25

La façon la plus facile – de mettre 25 après la citation et envoyer la demande. Si aucune erreur, que ce soit sur le site et le filtre toutes les demandes sont traitées correctement ou est désactivé dans les paramètres de leur sortie. Si une page est rechargée avec les problèmes, la vulnérabilité à SQL-injection est.

Après avoir découvert, vous pouvez essayer de se débarrasser de lui.

Pour mettre en œuvre ce besoin de vulnérabilité de savoir un peu plus sur les équipes requêtes SQL. L'un d'eux – UNION. Il rassemble plusieurs résultats de la requête en un seul. Ainsi, nous pouvons calculer le nombre de champs de la table. EXEMPLE première requête est:

  • nekiy_sayt / index.php? id = 25 UNION SELECT 1.

Dans la plupart des cas, cet enregistrement devrait générer une erreur. Cela signifie que le nombre de champs n'est pas égal à 1. Ainsi, le choix des options de 1 ou plus, il est possible d'établir leur nombre exact:

  • nekiy_sayt / index.php? id = 25 UNION SELECT 1,2,3,4,5,6.

Autrement dit, lorsque l'erreur n'apparaîtra plus, cela signifie que le nombre de champs à deviner.

Il y a aussi une solution alternative à ce problème. Par exemple, quand un grand nombre de domaines – 30, 60 ou 100. Cette commande GROUP BY. Elle regroupe les résultats d'une requête sur les motifs, par exemple id:

  • nekiy_sayt / index.php? id = 25 GROUP BY 5.

Si l'erreur n'a pas été reçu, les champs plus 5. Ainsi, des options de remplacement d'une gamme assez large, il est possible de calculer combien d'entre eux en fait.

Cet exemple SQL injection – pour les débutants qui veulent essayer eux-mêmes dans le test de son site. Il est important de se rappeler que l'accès non autorisé à un autre article disponible du Code criminel.

Les principaux types d'injection

Mettre en œuvre la vulnérabilité par SQL-injection dans plusieurs modes de réalisation. Viennent ensuite les méthodes les plus populaires:

  • L'UNION la requête SQL injection. Un exemple simple de ce type a déjà été examiné ci-dessus. Il est réalisé en raison d'une erreur dans la vérification des données entrantes qui ne sont pas filtrés.

  • Erreur à base d'injection SQL. Comme son nom l'indique, ce type utilise également une erreur, l'envoi d'expressions composées syntaxiquement incorrect. Ensuite, il y a l'interception des en-têtes de réponse, analyse qui peut être réalisée ultérieurement par injection SQL.

  • Stacked requêtes SQL injection. Cette vulnérabilité est déterminée en effectuant des demandes successives. Elle est caractérisée par l'addition, à la fin du signe « ; ». Cette approche est souvent mis en œuvre pour accéder à la mise en œuvre de lecture et d'écriture des données ou les fonctions du système d'exploitation, si les privilèges permettent.

Logiciel pour la recherche SQL-vulnérabilités

Est-il pour injection SQL, le programme ont généralement deux composants – scanner un site pour les vulnérabilités et de les utiliser pour accéder aux données. Il existe des outils pour les plates-formes presque tous connus. Leur fonctionnalité facilite grandement le site de vérification pour casser votre injection SQL.

sqlmap

Scanner très puissant qui fonctionne avec la plupart des bases de données. Il prend en charge différentes méthodes de mise en œuvre de l'injection SQL. Il a la capacité de reconnaître automatiquement le type de fissuration de hachage de mot de passe et le dictionnaire. télécharger et télécharger le fichier actuel et fonctionnel à partir d'un serveur.

Installation sous Linux est effectuée en utilisant les commandes:

  • git clone https://github.com/sqlmapproject/sqlmap.git sqlmap-dev,
  • cdsqlmap-dev /,
  • –wizard ./sqlmap.py.

Pour Windows est disponible en option avec la ligne de commande et de l'interface utilisateur graphique.

injection jSQL

jSQL Injection – un outil multi-plateforme pour tester l'utilisation des vulnérabilités SQL. Écrit en Java, de sorte que le système doit être installé JRE. Capable de gérer les requêtes GET, POST, en-tête, cookie. Il dispose d'une interface graphique pratique.

L'installation de ce logiciel est la suivante:

wget https://github.com/`curl -s https: //github.com/ron190/jsql-injection/releases | grep-E -o « /ron190/jsql-injection/releases/download/v[0-9]{1,2}.[0-9]{1,2}/jsql-injection-v[0-9] . {1,2} [0-9] {1,2} .jar « | tête-n 1`

Lancement est à l'aide de la commande java -jar ./jsql-injection-v*.jar

Pour démarrer le site de test sur SQL vulnérabilité, vous devez saisir l'adresse dans le champ supérieur. Ils sont séparés pour GET et POST. Avec un résultat positif, la liste des tables disponibles apparaît dans la fenêtre de gauche. Vous pouvez les consulter et d'apprendre des informations confidentielles.

onglet «page Admin» utilisée pour trouver les panneaux administratifs. Sur au moyen de modèles spéciaux recherche automatiquement le système enregistre les utilisateurs privilégiés. D'eux, vous pouvez obtenir juste un hachage du mot de passe. Mais il a dans la boîte à outils du programme.

Après avoir trouvé toutes les vulnérabilités et injection enquêtes nécessaires, l'outil permettra au serveur de remplir votre dossier ou, à l'inverse, le télécharger à partir de là.

SQLi Dumper v.7

Ce programme – outil facile à utiliser pour trouver et mettre en œuvre les vulnérabilités SQL. Elle produit l'ONU est basé sur la Dorcas soi-disant. Leur liste se trouve sur Internet. Dorca pour injection SQL – ce sont des modèles spéciaux de requêtes de recherche. Avec leur aide, vous pouvez trouver le site potentiellement vulnérables à travers un moteur de recherche.

Outils de formation

Itsecgames.com sur place il y a un ensemble spécial d'outils qui permet à l'exemple montre comment faire l'injection SQL et le tester. Pour en bénéficier, il est nécessaire de télécharger et installer. L'archive contient un ensemble de fichiers, qui est la structure du site. Pour installer il aura besoin dans le système actuel de jeu de serveur web Apache, MySQL et PHP.

Décompressez l'archive dans un dossier de serveur Web, vous devez aller à l'adresse indiquée lors de l' installation de ce logiciel. Une page avec l'enregistrement des utilisateurs. Ici, vous devez entrer vos informations et cliquez sur «Créer». Déplacement de l'utilisateur à un nouvel écran, le système vous invite à sélectionner l'un des cas de test. Parmi eux, il y a deux décrits par injection, et beaucoup d'autres articles de test.

Il est utile d'examiner un exemple de type SQL injection GET / Search. Ici, vous devez le sélectionner et cliquez sur «Hack». Avant que l'utilisateur apparaîtra, et l'imitation de la chaîne de recherche d'un site de cinéma. Pour trier les films peuvent être longues. Mais il n'y a que 10. Par exemple, vous pouvez essayer d'entrer dans l'Iron Man. Il indique le film, le site fonctionne, et les tableaux qu'il contient. Maintenant, nous devons vérifier si les filtres de script de caractères spéciaux, en particulier citer. Pour ce faire, ajoutez « dans la barre d'adresse". De plus, cela doit se faire après le titre du film. Le site donnera une erreur d'erreur: Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de « % » « à la ligne 1, qui stipule que les caractères ne sont toujours pas traitées correctement. Vous pouvez donc essayer de remplacer votre demande. Mais il faut d'abord calculer le nombre de champs. Il est utilisé pour cette commande par, qui est introduit après les guillemets: http://testsites.com/sqli_1.php?title=Iron+Man « ordre de 2 – & action = recherche.

Cette commande affiche uniquement des informations sur le film, qui est, le nombre de champs est supérieur à 2. Le double trait d'union indique au serveur que les autres demandes doivent être mis au rebut. Maintenant, nous devons trier, mettre de plus en plus d'importance tant que l'erreur ne soit pas imprimé. En fin de compte, il se trouve que les champs seront 7.

Maintenant, il est temps d'obtenir quelque chose d'utile de la base. Va modifier légèrement la demande dans la barre d'adresse, l'amenant à une forme: union » http://testsites.com/sqli_1.php?title=Iron+Man sélectionner une base de données (), l'utilisateur (), 4, mot de passe, 6, 7 des utilisateurs – & action = recherche. En raison de sa mise en œuvre afficherait la chaîne avec les hashs, qui peuvent être facilement convertis en symboles compréhensibles à l'aide de l'un des services en ligne. Un conjure un peu et ramassé un nom de champ avec une connexion, vous pouvez accéder à quelqu'un d'autre l'entrée, comme administrateur du site.

Le produit a un type d'injection d'espèces de poids, sur lequel à la pratique. Il faut se rappeler que l'application de ces compétences dans le réseau sur des sites réels peuvent constituer une infraction pénale.

Injection et PHP

En règle générale, le code PHP et est responsable des demandes de traitement nécessaires provenant de l'utilisateur. Par conséquent, à ce niveau, vous devez construire une défense contre SQL-injection en PHP.

Tout d'abord, nous allons donner quelques directives simples, sur la base desquels il est nécessaire de le faire.

  • Les données doivent toujours être traitées avant d'être placé dans la base de données. Cela peut se faire soit en utilisant des expressions existantes, ou en organisant des requêtes manuellement. Ici aussi, devrait tenir compte du fait que les valeurs numériques sont converties dans le type qui est nécessaire;
  • Différentes structures Evité de invité contrôle.

Maintenant, un peu les règles de compilation des requêtes dans MySQL pour protéger contre SQL injection.

Lors de l'élaboration des expressions pour interroger il est important de séparer les données des mots-clés SQL.

  • SELECT * FROM table WHERE name = Zerg.

Dans cette configuration, le système peut penser que Zerg – le nom d'un champ, vous devez donc placer entre guillemets.

  • SELECT * FROM table WHERE name = 'Zerg'.

Cependant, il y a des moments où la valeur elle-même contient des guillemets.

  • SELECT * FROM table WHERE nom = 'Côte d'Ivoire'.

Ici seulement traiter une partie de la Côte d, et le reste peut être perçu comme une équipe, qui, bien sûr, non. Par conséquent, une erreur se produit. Ensuite, vous avez besoin de ce type de données de dépistage. Pour ce faire, utilisez une barre oblique inverse – .

  • SELECT * FROM table WHERE name = 'cat-d ' Ivoire.

Toutes les réfère ci-dessus pour les lignes. Si l'action se déroule avec un certain nombre, il n'a pas besoin de guillemets ou des barres obliques. Cependant, ils devraient être tenus de conduire de force du type de données souhaité.

Il y a des recommandations que le nom de domaine doit être enfermé dans backquotes. Ce symbole est sur le côté gauche du clavier, ainsi que d'un tilde « ~ ». Est de faire en sorte que MySQL puisse distinguer avec précision le nom du champ de votre mot-clé.

Le travail dynamique avec des données

Très souvent, pour obtenir des données de la base de données en utilisant des requêtes générées dynamiquement. Par exemple:

  • SELECT * FROM table WHERE nombre = '$ number'.

Ici, la variable $ nombre est passé comme la détermination de la valeur du champ. Que se passerait-il si elle devient « Côte d'Ivoire »? Erreur.

Pour éviter ce problème, bien sûr, vous pouvez inclure les paramètres « de guillemets magiques ». Mais maintenant, les données seront examinées si nécessaire et non nécessaire. En outre, si le code est écrit à la main, vous pouvez passer un peu plus de temps pour créer résistant à la fissuration du système lui-même.

Pour l'ajout d'une barre oblique indépendante peut utiliser mysql_real_escape_string.

$ Nombre = mysql_real_escape_string (numéro de $);

$ Année = mysql_real_escape_string (année $);

$ Query = "INSERT INTO table (nombre, année, classe) VALUES ( 'numéro de $', '$ l'année', 11)".

Bien que le code et l'augmentation en volume, mais potentiellement cela fonctionnerait beaucoup plus sûr.

placeholders

Placeholders – une sorte de marqueurs pour lesquels le système reconnaît que c'est l'endroit que vous avez besoin de remplacer une fonction spéciale. Par exemple:

$ Sate = $ mysqli-> prepare ( "SELECT District du numéro WHERE nom =?");

$ Sate-> bind_param ( "s", numéro de $);

$ Sate-> execute ();

Cette section de code prend un modèle de demande de formation et se lie alors le nombre variable, et l'exécute. Cette approche vous permet de diviser le traitement des requêtes et sa mise en œuvre. Ainsi, il peut être sauvé de l'utilisation du code malveillant sont SQL-.

Que pourrait faire un attaquant

Système de protection – un facteur très important, qui ne peut être négligée. Bien sûr, un simple site de carte de visite sera plus facile à restaurer. Et si elle est un grand portail, le service, forum? Quelles sont les conséquences si vous ne pensez pas à la sécurité?

Tout d'abord, un pirate peut casser et enlever complètement l'intégrité de la base. Et si l'administrateur du site ou hoster ne fait pas de sauvegarde, vous aurez des moments difficiles. Par-dessus tout, un intrus, craquage d'un seul site, peut aller à l'autre poste dans le même serveur.

Vient ensuite le vol de renseignements personnels des visiteurs. Comment utiliser – tout est limité que par l'imagination d'un pirate informatique. Mais en tout cas, les conséquences ne seront pas très agréable. Surtout si contenaient des renseignements financiers.

En outre, l'attaquant peut fusionner vous la base de données, puis extorquer de l'argent pour son retour.

utilisateurs au nom de désinformation à l'administrateur du site, la personne dont ils ne sont pas, peuvent aussi avoir des conséquences négatives que les faits possibles de fraude.

conclusion

Toutes les informations contenues dans cet article sont fournies à titre d'information. Utilisez-le seulement besoin de tester leurs propres projets quand il détecte les vulnérabilités et les résoudre.

Pour une étude plus approfondie des techniques de la façon de procéder à l'injection SQL, il est nécessaire de commencer par les capacités de recherche actuelles et les caractéristiques du langage SQL. Comme les requêtes compilées, mots-clés, les types de données, et l'utilisation de tout.

Aussi ne peut le faire sans comprendre le fonctionnement des fonctions PHP et des éléments HTML. La principale utilisation de points vulnérables pour l'injection – une ligne d'adresse et divers champs de recherche. Apprentissage des fonctions de PHP, la méthode de mise en œuvre et caractéristiques de savoir comment éviter les erreurs.

La présence de nombreux outils logiciels prêts à l'emploi pour permettre une analyse approfondie sur les vulnérabilités du site connu. L'un des produits les plus populaires – linux kali. Cette image d'un système d'exploitation basé sur Linux, qui contient un grand nombre d'outils et de programmes qui peuvent réaliser une analyse complète de la force du site.

Ce que vous devez savoir comment pirater le site? Il est très simple – il faut être conscient des vulnérabilités potentielles de votre projet ou site web. Surtout si elle est une boutique en ligne avec paiement en ligne, où les données de l'utilisateur de paiement peuvent être compromis par un attaquant.

Pour une étude professionnelle du personnel de sécurité de l'information existants seront en mesure de vérifier le site pour une variété de critères et de profondeur. A partir d'un simple HTML-injections et à l'ingénierie sociale et du phishing.