跳至主要内容

PHP程序中的"后门"

像DZ,phpwind,dede等php程序都会在后台提示站长或管理员当前版本是否有漏洞或者是否为最新版本等。 其实这个不足以导致被黑的,现在一般有点常识的,密码都比较复杂,几个数字+几个字母,MD5的话一般很难跑出来.当然有彩虹表的话,另说... 目前流行的程序里,SABLOG,Discuz,DEDECMS都是有这样的后门的.这样的后门官方的真正用意很难说. 为了让用户及时得到最新的补丁,最新的版本是一方面,其他的,随便人家怎么发挥了... 但是这个东西有好的一面,也有坏的一面,一旦官方被黑,后果可想而知,所有的用户就被"批量挂马"了. 现在干脆都给发出来吧.

SABLOG的“后门”

SABLOG在登录BLOG后台,弹出提示框,程序版本有漏洞.每次登陆后台自动检测官方版本跟当前版本对比.嗯.后来找到了.在templates/admin/main.php最后的一部分.删掉如下代码就OK了. <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>

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的“后门”

再把DZ的"后门"发出来吧.adminglobal.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).'&timestamp='.$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程序中的后门:http://wiki.clin003.com/wiki/PHP%E7%A8%8B%E5%BA%8F%E4%B8%AD%E7%9A%84%E5%90%8E%E9%97%A8

评论

此博客中的热门博文

6岁小朋友在PSP上看到不该看的东西

美国佛州的一位母亲Thamtha Tovar为自己六岁的儿子在Manatee的沃尔玛购买了一个礼物,一台全新的PSP, 然而当这位六岁的小朋友打开此PSP的时候,映入眼帘的却是一位"一丝不挂"的美女,惊恐之下,小朋友向自己的母亲哭诉了自己的遭遇。 伟 大的母亲听说此事勃然大怒,愤然找到沃尔玛的负责人要求对此事件作出合理解释,为何刚购买的PSP里的记忆卡会有"美女"在里面。沃尔玛的工作人员如此说 道:"呃,你把机器带来过,我们把卡帮你取出来,然后我们会给您儿子免费提供一个新的游戏。"这位母亲说:"我很乐意,但是恐怕你们没有明白我说的话。" 沃尔玛的一位发言人称他们正在调查为何发生此事,寻求解决此问题,而Tovar女士则要求更换一台全新的PSP并要求沃尔玛为此事道歉。 ------------------ 洛阳生活信息点评网:http://luoyanglife.com/ 洛阳生活信息,我爱打折论坛:http://bbs.luoyanglife.com/ 河南招生考试网:http://www.edu-ha.com/  

照着做,你的人生一定很顺利!

  01.犯了错误就该诚实地认错——狡辩、诿过只会害了自己。   02. 朋友 之间要保持距离——这样的 友谊 才能长久。     03.钱追人,人追健康——有了健康,还怕挣不到钱么?     04.别轻易转行——转行的风险很高,最好不要轻率为之。     05.适度地抬高身价——在就业市场中,人也是一种商品。     06.把敬业变成 习惯 ——从长期看是为了自己。     07.运用累积法壮大资产——不求快,不求多,不中断。     08.忍一时,争千秋形势比人强时,必须忍。     09.与其你死我活,不如你活我也活——这就是双赢,是良性竞争。     10.以"播种"的 心态 经营人际关系——种子播得越早越坚韧。     11.做事切勿率性而为——率性而为只会害了自己。     12.遇到魔鬼型的主管时——接受他的磨练可让你的 性格 越来越坚韧。     13.不要当众和主管吵架——那会让你无路可走,只有走人。     14.向不同行业的人学习新知识——记住,要用请教的 态度 。     15.所有的困难都是好事——这是老天爷在磨练你,目的是把重任交给你。     16.用吃亏就是占便宜的心态 做人 做事——那样你就可以迅速长大。     17.不要在失意者面前谈论你的得意——那样 伤害 你的人际关系。     18.不要小看守时这件事——守时是对别人的尊重。     19.用 时间 来看人——时间是检验大师。     20.用打听来看人——把获得的信息汇总,就可以了解那个人。     21.建立一个朋友档案——以免人到用时方恨少。     22.扩大交友圈——主动出击,不要等别人上门找你。     23.保持交友的弹性——敌人也可以变成朋友。     24.要交 喜欢 "修理"你的朋友——这种朋友是你的 人生 导师。   25.毛遂自荐,好处多多——让别人看到你,知道你的存在,知道你的能力。     26.小心突然升温的 友情 ——对待这种友情的正确态度是:不推不迎,礼尚往来。     27.做老二,不做老大——老大没当好,容易变成老三老四。     28.做人要中规中矩——目的是赢得他人的尊重和信赖。   ...

FTP服务器关于断点续传权限的防范问题

FTP服务器关于断点续传权限的防范问题    假设ftp服务器中存在一个文件Readme.txt,文件大小为1000 bytes,连接上这个ftp服务器(假设我有写权限,ftp服务器是支持断点再传的),我本地中也有一个叫Readme.txt的文件,文件大小为 500 bytes。好了,我开始做坏事。    1、连接上这个ftp服务器(用系统自带的 ftp://ftp.exe/,在内网的可能无法使用,因为 ftp://ftp.exe/用的是port模式)    2、dir(查看Readme.txt大小,确定了是1000 bytes)    3、quote rest 1000(告诉ftp服务器我将要传送的文件是从文件位置1000开始)    4、send Readme.txt    5、dir(再次查看Readme.txt大小,现在Readme。txt变成1500 bytes了)    为什么Readme.txt会变大了?很简单,因为我本地的那个Readme.txt的500字节上传成功,并写入到ftp服务器中存在的那个 1000 bytes的Readme.txt文件中了。问题是出在第二条命令,如果没有第二条命令,我的第4个命令(Send Readme.txt),就会得到一个Permission Deny的错误,第二条命令是让ftp服务器信任我们将要进行一个断点再传的操作,如果没有第二条命令,ftp服务器将以为我们进行的是一个复盖原文件的操作(复盖原文件操作需要另外的权限才可以进行)。    这个问题只是在允许断点再传的FTP服务中存在,但现在90%的FTP服务程序都是允许断点再传的,所以这问题在普遍的FTP服务器都会存在。    防范方法:    如果一定需要给用户上传权限的话,最好的防范方法是每个用户都给他建立一个目录,将那个用户的权限完全锁在这个目录内,那么用户就没有权限可以查看其它用户的目录,也就是说无法造成以上所说的破坏。