FreeBuf|BBPress未经身份验证的提权漏洞分析( 二 )


functionbbp_validate_registration_role($to_validate=''){$retval=bbp_get_default_role;if(is_admin&&current_user_can('create_users')){$retval=$to_validate;}returnbbp_validate_signup_role($retval);}3.通过函数bbp_get_default_role可以获取默认的用户角色 , 详细代码如下所示:
functionbbp_get_default_role($default='bbp_participant'){returnapply_filters('bbp_get_default_role',get_option('_bbp_default_role',$default));}4.函数bbp_validate_registration_role在末尾调用了bbp_validate_signup_role($retval)函数 , 函数bbp_validate_signup_role($retval)主要是通过调用bbp_is_valid_role函数来验证用户角色是否合法 , 详细代码如下:
functionbbp_validate_signup_role($to_validate=''){$retval='';if(empty($to_validate)){bbp_add_error('bbp_signup_role_empty',__('ERROR:Emptyrole.','bbpress'));}if(!bbp_is_valid_role($to_validate)){bbp_add_error('bbp_signup_role_invalid',__('ERROR:Invalidrole.','bbpress'));}if(!bbp_has_errors){return(string)apply_filters('bbp_validate_signup_role',$retval,$to_validate);}5.函数bbp_is_valid_role的详细代码如下:
functionbbp_is_valid_role($role=''){$retval=false;if(!empty($role)&&is_string($role)){$roles=array_keys(bbp_get_dynamic_roles);if(!empty($roles)){$retval=in_array($role,$roles,true);}}return(bool)apply_filters('bbp_is_valid_role',$retval,$role);}总结关于BBPress<=2.6.4版本中的未经身份验证的权限提升漏洞的分析与修复就到这里 , 建议及时将BBPress升级到最新版本2.6.5 。
FreeBuf|BBPress未经身份验证的提权漏洞分析
文章图片