3

我刚刚注意到我的mysql_real_escape_string函数不在我的一些 php 脚本中的 '' 内,并且它很容易受到注入和sleep(30)在我的生产站点上执行的事情的影响。

经过大量阅读后,我将采用 PDO 路线并实施准备好的语句。但这还没有实现。

几个问题,我在我的日志中看到很多人在网上进行了注射,但我看不到任何损害。该站点运行以执行 sql 查询的用户update/select/delete/insert只有特权。

但是我很担心sleep(30)什么不起作用,如果他们造成了我没有看到的任何损害?
你能告诉我在哪里检查损坏情况,或者我是否可以安全地受到至少重大损坏?
他们可以更改隐藏的 mysql 设置或系统设置吗?

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

谢谢

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

现在的问题是他们可以阅读我的架构信息或修改它们吗?如果它是受限制的用户,为什么睡眠之类的功能会起作用?他们还可以运行哪些其他功能?

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

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

4

4 回答 4

3

检查对数据造成的损坏取决于数据库中的数据类型。如果仔细检查后您没有发现任何问题,那么可能没有任何问题。如果您的数据大小合适,这将是困难的或不可能的。

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

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

于 2013-03-31T17:00:42.200 回答
2
于 2013-03-31T18:04:40.070 回答
0

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

你说,你看到很多人对网站进行注入,但你看不到任何损坏,可能他们只是注入一个普通的 HTML 标签,或者尝试 XXS 攻击,因为真正的 mysql 注入,可以删除你的表,更新,重置所有受到 mysql 注入的数据,所以如果我是你,我会立即实施 PDO。

于 2013-03-31T17:01:48.040 回答
0

如果你有管理面板之类的东西,你应该检查你服务器上的 webshel​​l 和其他类似后门的工具,因为攻击者可以很容易地从适当的表中读取你的凭据。当然,还要查找页面中的任何更改(查找 iframe 和可疑的 JS 代码)。

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

但是,首先,在担心之前,您应该将其视为最常见的自动 sql 注入检查器(您可能会说是机器人),并且如果您没有看到任何损坏 - 可能没有入侵。但要小心 - 现在大多数入侵者不会寻找任何可见的损害,他们很可能会在您的页面中注入一些恶意代码(例如带有漏洞的 iframe)。

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

于 2013-03-31T17:04:26.817 回答