825 Star 2.8K Fork 1.3K

Discuz / DiscuzX

Merged
!436 修复 UCenter任意文件包含Bug

老周部落:PR_Fix_UCenter_Include_Bug Discuz:master

老周部落 Created on: 2020-04-09 23:34
缺陷/BUG
安全/security
Reviewer 134128 discuzx 1578919084 134392 zoewho 1578919099 134400 3dming 1578919100 146896 lootan 1578919519 1157835 comsenzdiscuz 1578943409 5247157 oldhuhu 1578983196   Tester 5247157 oldhuhu 1578983196

在此向漏洞提供者 Net4ky 表示感谢,也希望更多的安全人员加入到维护Discuz! X程序安全的工作中来。

此Bug来源于WooYun平台,地址为:http://www.wooyun.org/bugs/wooyun-2014-062388
镜像地址为:https://wooyun.x10sec.org/static/bugs/wooyun-2014-062388.html

怀着忐忑的心情提交了这个漏洞,依旧相信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 并进行了预测试,感谢官方为本修复方案提供的建议以及详尽的测试工作。

0 comments, 1 participants 1773794 laozhoubuluo 1594507411

Show action logs Hide action logs
oldhuhu merged Pull Request 2020-04-14 15:02
oldhuhu test passed 2020-04-10 15:20
oldhuhu check passed 2020-04-10 15:20
老周部落 assigned tester oldhuhu 2020-04-09 23:35
老周部落 assigned reviewer 湖中沉 2020-04-09 23:35
老周部落 assigned reviewer oldhuhu 2020-04-09 23:34
老周部落 assigned reviewer monkeye 2020-04-09 23:34
老周部落 assigned reviewer Discuz! 2020-04-09 23:34
老周部落 assigned reviewer LooTan 2020-04-09 23:34
老周部落 assigned reviewer comsenz-service 2020-04-09 23:34
老周部落 assigned reviewer DiscuzX 2020-04-09 23:34
老周部落 set priority to Main 2020-04-09 23:34
老周部落 added label security 2020-04-09 23:34
老周部落 added label bug 2020-04-09 23:34
PHP
1
https://gitee.com/Discuz/DiscuzX.git
git@gitee.com:Discuz/DiscuzX.git
Discuz
DiscuzX
DiscuzX

Search

102255 3a0e046c 1850385 102255 7aaa926c 1850385