经过对startbbs源代码白盒分析,发现了关键部分(添加管理员+修改任意用户密码)的token设计存在缺陷。
为了防止是token随机生成,我还特地去官网再下了几次源码回来。得到的结果都一样;
token值如下:
token值遍布以下文件当中:
最新下载的源码包:
token值对比,依然是一样的:
估计是开发人员偷懒了吧。
既然知道是这么样的结果,对源码分析就不难构造添加管理员的代码了:
访问poc之前,我的用户组是(2)普通会员
访问poc之后:
用户已经从普通会员转换成管理员了;
poc:
值得一提的是form表单提交地址和用户id一定得提前获取,所幸的是这两点我们都可以轻易获得。
form表单提交地址:index.php/admin/users/edit/4 4就是你的用户id了。
用户id可以访问前台的个人主页得到: