FreeBuf|BBPress未经身份验证的提权漏洞分析( 二 )
functionbbp_validate_registration_role($to_validate=''){$retval=bbp_get_default_role;if(is_admin&¤t_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|Deceptikons:潜伏十年的“黑客雇佣军团”浮出水面
- FreeBuf|HTTP/3协议的安全优势与挑战
- FreeBuf|卫星黑客利器:OpenATS新版本更新
- FreeBuf|Digital-Signature-Hijack:一款针对数字签名劫持的PowerShell脚本
- FreeBuf|用BurpSuit的Burpy插件搞定WEB端中的JS加密算法
- FreeBuf|工控渗透框架:PLC密码检测
- FreeBuf|管中窥豹之工控设备解密
- FreeBuf|Ursnif银行木马跻身全球威胁前五名