Bo-Blog BloggerBo-blog 博客程序鸡肋注入漏洞
by:xhm1n9 2011.2.21
inc/mod_main.php //漏洞文件:
case 'category':
if (!$job) $job='default';
else $job=basename($job);
$ifannouncement="none";
acceptrequest('mode');
if ($mode==1 || $mode==2) {
//..........................
} elseif (!empty($mode) && (!is_numeric($mode) || $mode>2)) {
getHttp404($lnc[313]);
}
//......................
if (is_numeric($itemid)) $itemid=floor($itemid); //注意1
elseif (isset($categorynames[$itemid])) $itemid=floor($categorynames[$itemid]);//注意2
else {
getHttp404($lnc[186]); //注意3
}
if (is_array($categories[$itemid]['subcates'])) {
$categories[$itemid]['subcates'][]=$itemid;
$all_needed_cates=@implode(',', $categories[$itemid]['subcates']);
} else {
$all_needed_cates=$itemid;//
}
$counter_now=$blog->countbyquery("SELECT COUNT(blogid) FROM `{$db_prefix}blogs` {$limitation2}`category` in ({$all_needed_cates})");
//........................... |
index.php //调用文件:
acceptrequest('act,go,page,part');
if (!$page) $page=1;
elseif (!is_numeric($page) || $page<=0) {
getHttp404($lnc[313]);
}
//.................................
if ($go) @list($job, $itemid)=@explode('_', basename($go));
if (!$act) $act='main';
else $act=basename($act);
$itemid=safe_convert($itemid); //有过滤
//..................................
if (file_exists("inc/mod_{$act}.php")) include ("inc/mod_{$act}.php");
//...............................
$itemid来自/index.php 注意1中存在逻辑错误,注意2条件不足可以绕过,我们关键看注意3中的函数。
function getHttp404($errormsg) {
global $config;
@header ("HTTP/1.1 404 Not Found");
if ($config['customized404']) {
@header ("Location: {$config['customized404']}");//注意4 没用die()
}
else {
catcherror($errormsg);//这里最终会用到 exit;代码终止执行
}
} |
可以看到只要“data/config.php”配置文件中设置了“$config['customized404']”值,就能绕过过滤走到sql语句中去形成注入。(如有分析错误请指出:))
Exp:http://127.1/bo-blog/index.php?act=main&mode=1&go=category_0
文章作者
Nuclear'Atk
上次更新
2011-02-21
许可协议
Nuclear'Atk(核攻击)网络安全实验室版权所有,转载请注明出处。