帮助查找此 MySQL 页面中的安全漏洞?

Posted

技术标签:

【中文标题】帮助查找此 MySQL 页面中的安全漏洞?【英文标题】:Help find security flaws in this MySQL page? 【发布时间】:2011-01-22 10:20:51 【问题描述】:

我正在尝试查找 mysql 页面中的安全漏洞。这是一个学习 SQL 的班级的作业。通过文本框,他们可以访问数据库以提交查询并查看它是否返回正确的数据集。我想看看他们是否有什么恶意。

这是SHOW GRANTS 查询的结果:

Grants for user@localhost
GRANT USAGE ON *.* TO 'user'@'localhost' IDENTIFIED BY PASSWORD 'the password'
GRANT SELECT ON `server\_dir`.* TO 'user'@'localhost'
GRANT SELECT ON `server\_dir\_ans`.* TO 'user'@'localhost'

有人可以解释这些GRANT 语句的含义吗? *.*GRANT USAGE 是什么?我还能对这个网站做些什么来破坏它?

网站本身是用 php 编写的。

响应 The Rook,当我执行时:

UPDATE mysql.user set Password = password("hacked");
FLUSH PRIVILEGES;

我回来了:

Error Number: 1142. UPDATE command denied to user 'user'@'localhost' for table 'user'
Error Number: 1227. Access denied; you need the RELOAD privilege for this operation

正如我所想,用户似乎缺乏执行此操作所需的权限。还是我误会了什么?

【问题讨论】:

Usage 是有限的,我错了我以为它可以修改所有的数据库和表,我的错。尽管有这些特权,您仍然必须小心如何构建查询。 Sql 注入和“不安全的直接对象引用”仍然是你面临的问题。 【参考方案1】:

*.* 表示所有数据库上的所有表。

安全漏洞在 php 中比在 msyql 中发生的更多,有关常见问题,请参阅此 Wikipedia 文章:SQL Injection。

GRANT USAGE 表示no privileges。

【讨论】:

以上是关于帮助查找此 MySQL 页面中的安全漏洞?的主要内容,如果未能解决你的问题,请参考以下文章

为帮助保护你的安全,您的Web浏览器已经限制此文件显示可能访问您的计算机的活动内容

查找安全漏洞 - 真正的 SQL 注入还是误报?

如何在服务器上安全地存储文件

在 MySQL 中存储 html 的 100% 安全方式 [关闭]

在 MySQL 中存储 html 的 100% 安全方式 [关闭]

MySQL数据库安全设置的操作流程