我倒不怎么关心提示框,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的"后门"发出来吧.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)."×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的文件,用不着的话就直接删除.没什么用.