以下是discuz的一则提权漏洞网上摘取
4.修改普通用户为管理员用户
在“antian_members”表中将用户“cxb”的“adminid”值由“0”修改为“1”;将“groupid” 值由“12”修改为“1”,然后单击“MySQL-Front”上面的发布按鈕使修改生效至此已经将普通用户cxb变成管理员用户,在登录的网页中刷新一下再次查看用户个人信息,如图5所示用户“cxb”的用户组巳经升级为“Administrator”,可以行使管理员权限
图5 普通用户组已经升级为管理员组(四)管理员密码丢失解决方案
1.修改管理员密码为已知用户密码
查看myuc_members表中的数据,如图6所示先将admin的password值复制到本地进行备份,以待出现错误后进行恢复将已知用户的密码值(password中的值)复制到admin中替代原来的值。
归根结底是因为超级管理员、管理员、普通用户都是一张表,用role_id字段控制当然是十分方便,但是连discuz都有的提权漏洞分开表显然是遇到问题退缩的表现,开发效率也会受影响但是如果公用表,设计上该如何避免呢本来想到的是user表再新增一个字段冗余权限,进行二佽判断但是仍然可能会有漏洞,不知道高手是如何避免取取精!