清理被黑客入侵的网站的最佳方法没有可用的干净版本


Best methods to clean up a hacked site with no clean version available?

我被要求修复一个在生产服务器上使用osCommerce构建的被黑客入侵的网站。

该站点一直存在于远程主机上。没有离线清洁版本。让我们暂时忘记这是多么愚蠢,并处理它是什么。

它已经被黑客入侵多次,另一个人通过删除网络外壳文件/上传脚本修复了

它经常被黑客入侵。

我能做什么?

因为您不能信任web主机上的任何东西(它可能安装了rootkit),所以最安全的方法是从头开始重建新的web服务器;不要忘记在上线之前更新所有面向外部的软件。所有的更新都是在一个严厉的防火墙上进行的。

重建系统时,一定要特别注意正确的配置。如果web内容由不同于web服务器的用户标识的Unix用户所有,并且对文件的权限设置为禁止写入,则web服务器无法修改程序文件。

配置web服务器的Unix用户帐户,使其只能对日志文件和数据库套接字(如果它们在文件系统中)进行写访问。被黑客攻击的网络服务器仍然可以向客户端提供被黑客攻击过的页面,但重新启动会"撤消"实时黑客攻击"。当然,你的数据库内容可能会被发送到雅库扎,或者被那些认为你的数据应该包括独角兽照片的人破坏。最低特权原则将是一个很好的指导原则——您的web服务器究竟需要访问什么才能完成其工作?只同意。

还可以考虑部署强制访问控制系统,如AppArmor、SELinux、TOMOYO或SMACK。这些系统中的任何一个,如果配置得当,都可以控制系统被黑客入侵时可能损坏或泄漏的内容的范围。(我在AppArmor上工作了十年,我相信大多数系统管理员可以在一两天的学习中学会如何在他们的系统上部署可行的安全策略。没有任何工具适用于所有情况,所以一定要阅读你的所有选择。)

第二次,请确保通过木偶、厨师等工具管理您的配置,或者至少在修订控制系统中进行管理。

更新

另外一件事,与恢复在线有点无关,但可能具有教育意义:从受损的系统中保存硬盘,这样你就可以从另一个系统中安装硬盘并检查其内容。也许通过对泄露的数据进行取证可以学到一些东西:你可能会发现泄露发生在几个月前,并且一直在窃取密码或ssh密钥。您可能会找到一个rootkit或其他利用工具。你可能会找到显示攻击来源的信息——也许网站的管理员还没有意识到他们被黑客入侵了。

在检查被黑客攻击的数据时要小心——你不认识的.jpg很可能是最初破解系统的漏洞,在"已知良好"的系统上查看它也可能会破解它。使用一个可以在完成后格式化的硬盘来完成这项工作。(虚拟化或带有强制访问控制系统可能足以限制"被动"的基于数据的黑客攻击,但没有什么比一次性系统更能让人安心了。)

获取该网站构建时使用的osCommerce版本的新副本,并在新的新osCommerce和被黑客攻击的网站之间进行区分。还要检查服务器上是否存在但不在osCommerce包中的文件。

通过手动比较差异,您可以追踪黑客创建或修改脚本的所有可能位置。

我知道现在提供这个解决方案有点晚了,但osCommerce开发的官方修复程序在这里:http://library.oscommerce.com/confluence/display/OSCOM23/(A) +(SEC)+管理+工具+登录+更新

一旦应用了这些代码更改,那么大部分实际工作就是清理网站。管理员登录绕过漏洞是攻击者通过文件管理器(通常)将文件上传到可写目录(通常是映像目录)的原因。

还有其他通常也是可写的文件,其中可能会附加恶意代码。cookie_usage.php和includes/languages/english/cookie_usagephp是受影响的常见文件,但在某些服务器配置中,所有站点文件都可能受到影响。

尽管官方osCommerce修复程序链接到上面,但我也建议进行此更改:在上面的页面中,向下滚动,直到您看到"更新PHP_SELF值"的链接。也要做出这些改变。

这将纠正$PHP_SELF的报告方式,并防止攻击者在试图绕过管理员登录时使用格式错误的URL。

我还建议您将htaccess基本身份验证登录添加到admin目录中。

还可以查看我编写的一个名为osC_Sec的插件,这是一个集所有功能于一身的安全修复程序,虽然它适用于大多数php支持的Web系统,但它是专门为处理旧版本的osCommerce中存在的问题而设计的。http://addons.oscommerce.com/info/8283