数据库被一遍又一遍地黑掉; 已经清理了SQL注入站点

我有一位客户要求我尝试分析一个网站的漏洞。

发生的事情是,每个周末左右,数据库中一张表的一条logging的字段每次都变成同一个东西。 从JewelryJewelery <a href="http://[**REMOVED-FOR-SF**]/viewPress?press_id=407">[**REMOVED-FOR-SF**]</a><a href="http://[**REMOVED-FOR-SF**]/[**REMOVED-FOR-SF**].html">[**REMOVED-FOR-SF**]</a> 。 事实上,它始终是相同的logging,使我认为这是一种自动脚本,但如果是这样,我找不到它。

以下已经完成:

  • 修复了SQL注入漏洞
  • 阻止777个目录中的PHP执行
  • 每次修复后更改数据库密码
  • 每次修复后都更改了CMS密码

下一步是什么?

攻击者很可能不需要知道密码来执行更改 – 我将如何解决这个问题:

find您的CMS的查询函数包装器,并更新它以logging到文件和/或发送电子邮件,只要查询string上的正则expression式匹配您的垃圾邮件string – 包括任何和所有相关的服务器和CMSvariables,这可能有助于识别问题的来源。

请注意,您可以在PHP 4.3+上调用debug_backtrace()来隔离包含文件(如果这可能是恶意插件的工作)。

可能是一个剩余的注入攻击 – 你可以设置一个数据库触发器让你知道什么时候logging再次改变? 然后将其与您的networking服务器日志相关联 – 应该立即导致罪魁祸首。

还要确保你logging尽可能多的东西(引荐者等)

你有没有看过SQL服务器? 也许有一个脚本在那里运行,或者有一些程序被设置为进行更新,这是为了合法的原因(甚至只是为了testing的目的)而被遗忘,但仍然被触发。 可能有一些硬编码的值,如错字。

你在CMS中安装了一个链接生成器吗? 一些网站会自动链接以生成反向链接到博客文章。 这看起来像是同样的事情。 检查你的CMS的扩展,看看里面是否有东西。

网站的负载有多重? 也许一个数据包捕获可能是一个select,告诉你任何事情和从外部世界来的一切,当这个变化。 这至less会让你知道服务器内部的东西是否正在改变事物,或者你的漏洞在哪里。

您可以设置modsecurity,并添加一条规则,以便在发现拼写错误的版本时loggingPOST数据。 如果是某人编辑它,或SQL注入它应该被logging。