mysql注入损害赔偿?

时间:2013-03-31 16:56:51

标签: php mysql database linux code-injection

我刚注意到我的mysql_real_escape_string函数不在我的某些PHP脚本中,并且很容易受到注入以及在我的生产网站上执行sleep(30)之类的事情。

我正在进行PDO路线并在这里阅读了很多内容后实现准备好的语句。但这还没有实现。

很少有问题,我在日志中看到很多注射都是由人在网上完成但我看不到任何损害。站点运行以执行sql查询的用户只有update/select/delete/insert个权限。

但是我担心像sleep(30)这样的东西,什么不起作用,如果他们做了任何损害我都没看到?
您能告诉我在哪里检查损坏情况,还是我至少可以获得重大损失? 他们可以更改隐藏的mysql设置或系统设置吗?

顺便说一句,我试图在centos 6+ linux和php上运行最新的更新。

感谢

编辑: 只是为了澄清,数据库几乎是空的,我不担心数据存在,密码是sh512。所以里面的数据并不重要,因为这是我正在写的新应用程序。但我很担心,如果他们改变了系统上的任何东西,或者我应该担心的db。我看到的一些注射有java等,但是日志很大,需要时间来检查它。我还在注射中看到一些模式字符串。

现在问题是他们可以阅读我的架构信息还是修改它们?如果是限制用户,为什么像睡眠这样的函数会起作用?他们还能运行什么其他功能?

请注意,我在同一个MySQL中有其他数据库。我应该担心那些吗?

by''我的意思是: select * from dbname where id = scaped_string 我应该把它放在引号中

4 个答案:

答案 0 :(得分:3)

检查对数据造成的损坏取决于数据库中的数据类型。如果仔细检查后你没有看到任何错误,那么可能没有错。如果您的数据大小合适,那将很难或不可能。

有很多自动漫游器在互联网上漫游,寻找易受SQL注入攻击的代码。他们的尝试可能就是您在日志中看到的内容。仅仅因为尝试并不一定意味着发生入侵。

另请注意,您不一定会有数据被盗的证据。确定这一点的最佳方法是获取服务器日志并在当前服务器的副本上重播它们,检查是否有任何数据。

答案 1 :(得分:2)

如果没有任何进一步的信息,我们必须假设最坏的情况:攻击者能够读取,写入和删除数据库中的任意数据,甚至可能是文件系统中的文件,这可能会导致整体损害服务器(例如通过PHP文件执行命令,权限提升等)。


现在让我们仔细看看可能产生的影响:

由于PHP的MySQL扩展不允许多个语句,因此无法进行所谓的堆栈语句攻击。所以剩下的可能性取决于实际的语句动词和上下文,即语句中的子句:

  • SELECT 声明:
    • 读取任何可访问的数据(例如子查询,联合,基于布尔的盲目等)
    • 阅读文件(LOAD_FILE()
    • 编写文件(… INTO OUTFILE …
  • 更新声明:
    • 显然更新任何可访问的数据,可能不只是在当前表中
    • 读取任何可访问的数据(例如,子查询,基于布尔的盲人)
  • 删除声明:
    • 显然删除任何可访问的数据,可能不只是从当前表中删除
    • 读取任何可访问的数据(例如,子查询,基于布尔的盲人)
  • INSERT 声明:
    • 显然是插入任意数据
    • 阅读任何可访问的数据(例如子查询)

其中一些可能没有直接影响,但可能用于利用其他漏洞。最后,它取决于实际的脆弱陈述。

答案 2 :(得分:0)

据我所知,除了清理输入以保护数据不被注入外,没有隐藏的mysql设置。

你说过,你看到很多人在网站上进行了多次注射,但是你看不出任何损坏,也许他们只是注入一个纯HTML标签,或者尝试XXS攻击,因为真正的mysql注入,可以删除你的表,更新,重置每个受到mysql注入的数据,所以如果我是你,我会马上实现PDO。

答案 3 :(得分:0)

如果您有类似管理面板的内容,则应检查服务器上的webshel​​l和其他类似后门的工具,因为攻击者可以从适当的表中轻松读取您的凭据。并且,当然,查找您网页中的任何更改(查找iframe和可疑的JS代码)。

最糟糕的情况是在可写目录中执行INTO OUTFILE,然后通过本地include或直接访问它。

但是,首先,在担心之前你应该把它视为最常见的自动sql-injection检查器(你可能会说机器人),如果你没有看到任何损坏 - 可能没有入侵。但要小心 - 现在大多数入侵者都没有寻找任何可见的损害,很可能他们会在你的网页中注入一些恶意代码(比如iframes的漏洞)。

所以,不要太偏执,但仍要谨慎:)