Ry4nnnn
- 关注

未经保护的admin页面
访问/robots.txt:
拼接,即可直接访问管理员页面:
未经保护的admin页面(URL不可预测)
查看页面源代码,发现/admin-4mbdyv:
该url即为管理页面:
通过请求参数控制用户角色
登录wiener账户后,访问admin:
401未授权,只有admin才能访问。注意在cookie字段中有admin=false,将false改为true再次访问:
成功访问管理界面。再次发包:
成功删除。
用户角色可在用户配置文件中修改
登录后,修改邮箱,发现在提交修改的返回包中存在roleid,值为1:
重新修改邮箱,尝试修改服务器返回包,将roleid改为2:
再次访问/admin,失败:
在更改邮箱的请求包中添加roleid:2
成功访问/admin。
通过请求参数控制用户ID
用wiener登录后,会得到wiener的API key。
将请求包中的id改为carlos,即可获取carlos的API key:
用户ID由请求参数控制(用户ID不可预测)
重复上面的步骤,发现userid变成了随机数:
在post中找一个carlos发布的,点击查看其id:
修改id,获取carlos的API key.
请求参数控制用户ID(重定向时数据泄露)
将id改为carlos即可,可以在302跳转页面中看到carlos的API key:
请求参数控制用户ID(密码泄露)
登录wiener账户,发现存在密码:
id改为administrator,将password的type改为text:
成功。
不安全的直接对象引用
点击live chat,view transcript:
发现下载的文件命名为数字.txt,并且递增。
爆破文件名:
成功得到密码。
可绕过的基于 URL 的访问控制
直接访问/admin:
权限不足。
将url改为/,添加X-Original-URL头:
request in browser获取删除的接口,放到X-Original-Url中,成功删除:
可绕过的基于方法的访问控制
使用administrator账号登录:
点击admin panel,并且将carlos升级,查看数据包:
在无痕窗口登录wiener账号,将wiener的cookie替换到上述请求中:
401未授权。
将方法改为GET,修改username为wiener:
成功。
多步骤流程,一步无访问控制
和前一个模块相同,不过无需更改请求方法,直接替换cookie即可:
基于referer的访问控制
这里提升权限的请求如下:
如果直接将url复制到wiener的账户访问,会提示401未授权,因为做了referer校验。
同样替换cookie即可解决:
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)