如何保护自己免受此 php 脚本中的攻击?

信息安全 应用安全 攻击 linux php 源代码
2021-08-14 16:08:52

由于 PHP 的安装方式存在漏洞(共享 VPS 与 PHP 安装为 Apache 模块而不是 CGI)以及 OSCommerce 的配置方式(某些目录上的安全性为 777),我在朋友的网络服务器上发现了许多 PHP 脚本已被黑客加载。使用多层加密隐藏了实际代码。他们有一个 PHP 文件,其中有一个巨大的字符串分配给变量 $str。然后他们使用以下代码将字符串解密为恶意 PHP 代码,并尝试通过访问该页面来运行它。用于解密编码字符串的语句是eval(gzinflate(str_rot13(base64_decode($str))));

他们现在无法从该目录运行代码,因为有一个 .htaccess 文件阻止执行该文件夹中的脚本,因为我们发现系统已被入侵,所以这是一个临时修复,但可能不是最好的.

我在我的 Mac 上运行的 linux vm 上运行了这个脚本,同时将上面的语句更改为,echo(gzinflate(str_rot13(base64_decode($str))));以便我可以看到源代码。为了这里的人们的兴趣,我把它放在了pastebin上。

被黑页面的源粘贴箱

据我所知,这似乎是一个非常复杂的脚本,它尝试了各种技巧来访问您的服务器,但我对 PHP 不够熟悉,无法识别所有可能试图利用的漏洞。如果我可以假设他们在过去的某个时候成功地运行了这个,我应该在我的系统上执行哪些检查?

3个回答

上传的是一个流行的 shell 脚本 - 一种常见的后期利用方法。你得到的那个似乎是 C99 品种。

简而言之,它是一个脚本,它为攻击者提供了一个控制面板到您的服务器,以便他可以执行命令、下载和安装恶意内容、查找带有密码的文件、进一步感染系统、发起其他攻击等等。

OsCommerce 最近有一个非常严重的 RFI 漏洞,允许上传这些东西,这可能就是你得到它的方式 - 有自动工具寻找漏洞并利用它。

您的系统不再安全:攻击者可能已经下载了 rootkit,或者他可能在您的计算机上创建了第二个后门,因此删除该文件是不够的。

理想的解决方案是执行完全擦除并从备份中恢复您想要的任何内容 - 也就是说,如果您相信您的备份是干净的。

如果你不能这样做,你必须对服务器进行全面调查,但你永远无法确定。

至于你的问题:枚举脚本包含的不同攻击是没有意义的,因为它基本上为你的服务器提供了一个命令行,攻击者可以运行他想要的任何命令或下载他需要的任何工具。为了方便起见,它只是具有一些预配置的功能。

非常值得看一下这个问题 -怀疑入侵后怎么办,因为有一系列重要问题取决于您的服务器上的内容。

除非您是经验丰富的专业人士,否则您可以做的最安全的事情是擦除服务器并从全新安装磁盘/源重新安装,然后在检查是否在入侵之前创建备份后从备份中重新加载数据

这是因为如果攻击者设法获得 root 访问权限,攻击者可能已经升级到您在源代码中看到的命令之外几乎可以做任何事情,并且您必须发现入侵的工具可能无法获得巧妙实施的 root 工具包。


如果您有更多时间/专业知识,您可以在受限环境中的虚拟机上运行它(以防止它攻击其他任何东西)并观察它的作用。您将需要在 VM 和网络上进行大量日志记录,以帮助您识别活动。这通常比它值得付出的努力多得多,除非你是为了你的日常工作而这样做的,而且许多组织只是采用“从轨道上发射核弹”的方法,并假设一切都可能受到损害。

实际上,在这些类型的 shell 代码中执行的代码类型更类似于文件管理器,您几乎无法阻止它们的执行,相反,您可以尝试阻止某些文件类型被安装到图像目录中,例如.

重点是保护您的网站从一开始就不允许上传恶意代码,而不是阻止“一旦”上传文件就执行这些文件。

过时版本的 osCommerce 及其变体在管理员登录序列中存在已知弱点,攻击者只需将 login.php 附加到任何管理员文件的末尾即可绕过登录验证: www.yoursite.com/admin/administrators.php/login.php例如,将允许攻击者查看内容的 administrators.php 页面。

这将允许攻击者完全访问管理部分中的 osCommerce 文件管理器和有限的文件编辑器,以及您在朋友网站上找到的 shell 代码。

要真正修补此问题,需要对 osCommerce 代码进行两处代码更改: 1/修补管理员登录

2/修补 $PHP_SELF 代码

最好也将 htpasswd 基本身份验证添加到您的管理目录。