代码拉取完成,页面将自动刷新
436
修复 UCenter任意文件包含Bug
已合并
在此向漏洞提供者 Net4ky 表示感谢,也希望更多的安全人员加入到维护Discuz! X程序安全的工作中来。
此Bug来源于WooYun平台,地址为:http://www.wooyun.org/bugs/wooyun-2014-062388
镜像地址为:https://wooyun.x10sec.org/static/bugs/wooyun-2014-062388.html https://web.archive.org/web/20151121150539/http://www.wooyun.org/bugs/wooyun-2014-062388
怀着忐忑的心情提交了这个漏洞,依旧相信wooyun是一个良好的平台 赌上了作为一个白帽子的节操,不要在让他碎一地
条件一:需要UC管理员权限。
条件二:前台可上传带有PHP代码的可控文件。
漏洞函数 onping 在文件 uc_server\control\admin\app.php
function onping() {
$ip = getgpc('ip');
$url = getgpc('url');
$appid = intval(getgpc('appid'));
$app = $_ENV['app']->get_app_by_appid($appid);
$status = '';
if($app['extra']['apppath'] && @include $app['extra']['apppath'].'./api/'.$app['apifilename']) {
$uc_note = new uc_note();
$status = $uc_note->test($note['getdata'], $note['postdata']);
} else {
$this->load('note');
$url = $_ENV['note']->get_url_code('test', '', $appid);
$status = $_ENV['app']->test_api($url, $ip);
}
if($status == '1') {
echo 'document.getElementById(\'status_'.$appid.'\').innerHTML = "<img src=\'images/correct.gif\' border=\'0\' class=\'statimg\' \/><span class=\'green\'>'.$this->lang['app_connent_ok'].'</span>";testlink();';
} else {
echo 'document.getElementById(\'status_'.$appid.'\').innerHTML = "<img src=\'images/error.gif\' border=\'0\' class=\'statimg\' \/><span class=\'red\'>'.$this->lang['app_connent_false'].'</span>";testlink();';
}
}
其中的变量$app['extra']['apppath']和$app['apifilename']是从这两栏读过来的 修改其中的值就可以了
漏洞证明
修复方案
对值过滤
本PR根据漏洞提供者建议,对此类情况下的值进行了过滤,规避了相关安全隐患。
本PR已在公开前联系 @oldhuhu 并进行了预测试,感谢官方为本修复方案提供的建议以及详尽的测试工作。