一些 PHP 管理系统程序中的后门


Posted in PHP onAugust 05, 2009

我倒不怎么关心提示框,SABLOG怎么知道我的版本有漏洞呢,程序肯定有后门.每次登陆后台自动检测官方版本跟当前版本对比.嗯.后来找到了.在templates/admin/main.php最后的一部分.删掉如下代码就OK了.
其实这个不足以导致被黑的,现在一般有点常识的,密码都比较复杂,几个数字+几个字母,MD5的话一般很难跑出来.当然有彩虹表的话,另说...

<script type="text/javascript"> 
i=1; 
var autourl=new Array(); 
autourl[1] = 'www.sablog.net'; 
autourl[2] = 'cnc.sablog.net'; 
function auto(url){ 
if(i){ 
i=0; 
var oHead = document.getElementsByTagName('head').item(0); 
var oScript= document.createElement("script"); 
oScript.type = "text/javascript"; 
oScript.src = "http://"+url+"/update.php?version=$now_version&release=$now_release&hostname=$now_hostname"; 
oHead.appendChild(oScript); 
} 
} 
function run(){ 
for(var i=1;i<autourl.length;i++) { 
document.write("<img src=http://"+autourl+" width=1 height=1 onerror=auto('"+autourl+"')>"); 
} 
} 
run(); 
</script>

目前流行的程序里,不止SABLOG一个,Discuz,DEDECMS都是有这样的后门的.这样的后门官方的真正用意很难说.
为了让用户及时得到最新的补丁,最新的版本是一方面,其他的,随便人家怎么发挥了...
但是这个东西有好的一面,也有坏的一面,一旦官方被黑,后果可想而知,所有的用户就被"批量挂马"了.
现在干脆都给发出来吧.先来个DEDECMS的,标示出来的删掉就行:
/include/inc_functions.php 
function GetNewInfo(){ 
if(!isset($GLOBALS['__funAdmin'])) require_once(dirname(__FILE__)."/inc/inc_fun_funAdmin.php"); 
return SpGetNewInfo(); 
} 
/include/inc/inc_fun_funAdmin.php 
function SpGetNewInfo(){ 
global $cfg_version; 
$nurl = $_SERVER["HTTP_HOST"]; 
if( eregi("[a-z\-]{1,}\.[a-z]{2,}",$nurl) ){ $nurl = urlencode($nurl); } 
else{ $nurl = "test"; } 
$gs = "<iframe name='stafrm' src='http://www.dedecms.com/newinfo.php?version=".urlencode($cfg_version)."&formurl=$nurl' frameborder='0' id='stafrm' width='100%' height='50'></iframe>"; 
return $gs; 
} 
dede/index_body.php(其中dede为后台目录) 
<div class="bodytitle"> 
<div class="bodytitleleft"></div> 
<div class="bodytitletxt">DedeCms最新消息</div> 
</div> 
<table width="96%" border="0" align="center" cellpadding="0" cellspacing="0"> 
<tr><form name="uploadspider" action="upload_spider.php" method="post"> 
<td height="80" class="main_dnews"> 
<?php echo GetNewInfo()?> </td> 
</form> 
</tr> 
</table>

再把DZ的"后门"发出来吧.admin\global.func.php里面查找"function cpfooter",替换成如下的function:
function cpfooter() { 
global $version, $adminid, $db, $tablepre, $action, $bbname, $charset, $timestamp, $isfounder, $insenz; 
global $_COOKIE, $_SESSION, $_DCOOKIE, $_DCACHE, $_DSESSION, $_DCACHE, $_DPLUGIN, $sqldebug, $debuginfo; 
$infmessage = ''; 
?> 
<?=$infmessage?> 
<?php echo $sqldebug;?> 
</div> 
</body> 
</html> 
<?php 
updatesession(); 
}

这个文件中还有一个function,没必要的,可以去掉:
function bbsinformation() { 
global $db, $timestamp, $tablepre, $charset, $bbname, $_SERVER, $siteuniqueid, $save_mastermobile; 
$update = array('uniqueid' => $siteuniqueid, 'version' => DISCUZ_VERSION, 'release' => DISCUZ_RELEASE, 'php' => PHP_VERSION, 'mysql' => $db->version(), 'charset' => $charset, 'bbname' => $bbname, 'mastermobile' => $save_mastermobile); 
$updatetime = @filemtime(DISCUZ_ROOT.'./forumdata/updatetime.lock'); 
if(emptyempty($updatetime) || ($timestamp - $updatetime > 3600 * 4)) { 
@touch(DISCUZ_ROOT.'./forumdata/updatetime.lock'); 
$update['members'] = $db->result_first("SELECT COUNT(*) FROM {$tablepre}members"); 
$update['threads'] = $db->result_first("SELECT COUNT(*) FROM {$tablepre}threads"); 
$update['posts'] = $db->result_first("SELECT COUNT(*) FROM {$tablepre}posts"); 
$query = $db->query("SELECT special, count(*) AS spcount FROM {$tablepre}threads GROUP BY special"); 
while($thread = $db->fetch_array($query)) { 
$thread['special'] = intval($thread['special']); 
$update['spt_'.$thread['special']] = $thread['spcount']; 
} 
} 
$data = ''; 
foreach($update as $key => $value) { 
$data .= $key.'='.rawurlencode($value).'&'; 
} 
return 'update='.rawurlencode(base64_encode($data)).'&md5hash='.substr(md5($_SERVER['HTTP_USER_AGENT'].implode('', $update).$timestamp), 8, 8).'×tamp='.$timestamp; 
}

还有admin/home.inc.php,大概193~196行(DZ6.1.0 UTF-8官方原版),这里:
showtablerow('', array('class="vtop td24 lineheight"', 'class="lineheight smallfont"'), array( 
lang('home_discuz_version'), 
'Discuz! '.DISCUZ_VERSION.' Release '.DISCUZ_RELEASE.' <a href="http://www.discuz.net/forumdisplay.php?fid=10" class="lightlink smallfont" target="_blank">'.lang('home_check_newversion').'</a> ' 
));

虽然说这里没有直接与官方进行通信,但是,,,我看着不爽,想打补丁自己常去官方看就是了.还有所有文件名中包含insenz的文件,用不着的话就直接删除.没什么用.
PHP 相关文章推荐
mysql 字段类型说明
Apr 27 PHP
php代码把全角数字转为半角数字
Dec 10 PHP
DISCUZ 论坛管理员密码忘记的解决方法
May 14 PHP
几种有用的变型 PHP中循环语句的用法介绍
Jan 30 PHP
PHP测试程序运行时间的类
Feb 05 PHP
PHP实现获取FLV文件的时间
Feb 10 PHP
PHP获取数组的键与值方法小结
Jun 13 PHP
PHP使用strtotime获取上个月、下个月、本月的日期
Dec 30 PHP
ThinkPHP框架中使用Memcached缓存数据的方法
Mar 31 PHP
PHP实现一维数组与二维数组去重功能示例
May 24 PHP
PHP实现断点续传乱序合并文件的方法
Sep 06 PHP
Yii2框架控制器、路由、Url生成操作示例
May 27 PHP
黑夜路人出的几道php笔试题
Aug 04 #PHP
谈谈新手如何学习PHP 默默经典版本
Aug 04 #PHP
用PHP的ob_start() 控制您的浏览器cache
Aug 03 #PHP
一贴学会PHP 新手入门教程
Aug 03 #PHP
php 获得汉字拼音首字母的函数
Aug 01 #PHP
PHP 上传文件的方法(类)
Jul 30 #PHP
PHP 文章中的远程图片采集到本地的代码
Jul 30 #PHP
You might like
第九节 绑定 [9]
2006/10/09 PHP
基于mysql的论坛(7)
2006/10/09 PHP
PHP设计模式之命令模式的深入解析
2013/06/13 PHP
php unset全局变量运用问题的深入解析
2013/06/17 PHP
使用PHP破解防盗链图片的一个简单方法
2014/06/07 PHP
简单了解将WordPress中的工具栏移到底部的小技巧
2015/12/31 PHP
使用一个for循环将N*N的二维数组的所有值置1实现方法
2017/05/29 PHP
利用php + Laravel如何实现部署自动化详解
2017/10/11 PHP
HTML代码中标签的全部属性 中文注释说明
2009/03/26 Javascript
jquery 简单的进度条实现代码
2010/03/11 Javascript
js 强制弹出窗口代码研究-又一款代码
2010/03/20 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
基于JQuery和CSS3实现仿Apple TV海报背景视觉差特效源码分享
2015/09/21 Javascript
js模块加载方式浅析
2017/08/12 Javascript
Chrome调试折腾记之JS断点调试技巧
2017/09/11 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
vue 地图可视化 maptalks 篇实例代码详解
2019/05/21 Javascript
Javascript Dom元素获取和添加详解
2019/09/24 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
2020/10/30 Javascript
寻找网站后台地址的python脚本
2014/09/01 Python
Python+selenium实现自动循环扔QQ邮箱漂流瓶
2018/05/29 Python
python得到一个excel的全部sheet标签值方法
2018/12/10 Python
python基于K-means聚类算法的图像分割
2019/10/30 Python
用Python去除图像的黑色或白色背景实例
2019/12/12 Python
python datetime时间格式的相互转换问题
2020/06/11 Python
车库门开启器、遥控器和零件:Chamberlain
2019/04/09 全球购物
通信专业个人自我鉴定
2013/10/21 职场文书
会计电算化专业应届大学生求职信
2013/10/22 职场文书
酒店保洁主管岗位职责
2013/11/28 职场文书
学习新党章思想汇报
2014/01/09 职场文书
民主生活会发言材料
2014/10/20 职场文书
2015年班组长工作总结
2015/04/10 职场文书
幼儿教师三分钟演讲稿
2019/06/21 职场文书
Python通过m3u8文件下载合并ts视频的操作
2021/04/16 Python
解决使用了nginx获取IP地址都是127.0.0.1 的问题
2021/09/25 Servers