概念

- 水平越权:同级别的用户之间权限的跨越
- 垂直越权:低级别用户到高级别用户权限的跨越
- 未授权访问:通过无级别用户能访问到需验证应用(页面本身一般是看不到的)
实验
水平越权 – 猜测爆破参数值
靶场:https://portswigger.net/web-security/access-control/lab-user-id-controlled-by-request-parameter
由请求参数控制的用户ID
在数据包中修改某个控制用户的参数值,造成越权


如果id=1则尝试修改为id=2看是否造成越权,根据数据包中的参数及其值尝试改动
水平越权 – 抓包或源码寻找id号泄露
由请求参数控制的用户ID
有关控制用户的参数被加密或者是随机字符,无法猜测和爆破,尝试用数据包或源码泄露的其他账户的id值替换越权



这里看用户对应功能,是管理员则为垂直越权
垂直越权 – 修改参数id造成越权
靶场:https://portswigger.net/web-security/access-control/lab-user-role-can-be-modified-in-user-profile



原理:
在数据库中有对应的字段的值来判断不同用户
如admin_ok = 0 & usertype = 1为普通用户admin_ok = 1 & usertype = 3为管理员用户
案例中role=1为普通用户,role=2为管理员用户
在普通用户修改某些数据时,尝试将这类字段值尝试带入数据包其中,让服务器进行修改,造成垂直越权
垂直越权 – 修改参数id造成密码泄露
垂直越权进入管理员密码修改页面,并且造成密码泄露


未授权访问 — 地址泄露、无身份校验
某些页面本来不应该让人直接访问,并且此页面并没有做任何身份校验机制,通过泄露的地址进行访问,并且操作其相关功能,造成未授权访问
通过js、源码中泄露的路由地址或数据包回显的某些值,进行访问


垂直越权 – 脆弱验证
靶场:https://portswigger.net/web-security/access-control/lab-user-role-controlled-by-request-parameter
直接访问/admin无法访问


检测项目
https://github.com/smxiazi/xia_Yue
https://github.com/Ed1s0nZ/PrivHunterAI
https://github.com/WuliRuler/AutorizePro
挖掘总结
关注到URL及参数数据,找到所有和用户相关的参数名和参数值提交测试
涉及到JS中提取URL或数据,在返回包中提取参数名和参数值,FUZZ技术等
fuzz:修改相关参数值进行爆破遍历
修复
- 代码中将当前页面用户标识直接写死,不接收和修改
- 数据包中压根不显示id标识
本节知识点
WEB攻防-业务逻辑-越权&访问控制&未授权
WEB攻防-业务逻辑-检测项目&挖掘思路报告
