葫芦七查 

首发公开专业的软件查询平台

专业多场景软件查询
影子资产无处可藏

关于“葫芦七查”?

专业查软件 就上葫芦七查 https://www.hulu7cha.com

本期内容:8篇越权技巧

推荐用户:开发商、供应商、监管单位、招标单位、程序运维人员、网络安全人员等

安全声明:本文分享文章不涉及漏洞详情、安全预警等,仅作技术分享。以下相关技巧仅可用作相关单位工作人员对管理或授权系统使用,若利用进行其他非法用途,自行承担相应法律后果。


小程序场景 对应的技巧

hulu7ch

第一期 内容一览

场景1:鉴权参为常规数值——递减数值;

场景2:多数为空的数值——intruder遍历;

场景3:无序序列的数值——取特殊值;

场景4:时间序列的数值——更改日期;

场景5:路径中存在数值——更改路径数值;

场景6:任意参数值通用1——参数值置空;【*】

场景7:POST请求数据的数据包——切换GET请求;【*】

场景8:任意参数值通用2——改为默认值;【*】

(注:每天将更新8篇,关注“葫芦七查”不迷路)


案例1

递减数值

场景

鉴权参为常规数值——递减数值

输出

形成原因: 

鉴权参数(如随机数)被设计为可递减的数值,攻击者通过递减参数值绕过鉴权逻辑(如重放攻击或越权访问)。

安全自查:递减数值(若为有序递增序列,此时你的参数值是最后一个,往前递减)

修复方法: 

1、后端校验参数有效性:增加时间窗口校验(如令牌有效期≤5分钟),拒绝过期或递减后的数值。 

2、使用不可预测的令牌:采用UUID或加密签名替代纯数字参数,避免数值规律性。 

3、限制参数修改权限:前端禁止用户直接修改鉴权参数,后端对参数签名进行二次验证。 


案例2

intruder遍历

场景

大多数据为空的数值——intruder遍历;

输出

形成原因: 

鉴权参数(如随机数)被设计为可递减的数值,攻击者通过递减参数值绕过鉴权逻辑(如重放攻击或越权访问)。



安全自查:若手动测试返回数据为空,可能是因为当前id没有数据,需要使用intruder进行尝试遍历。

修复方法: 

1、后端校验参数有效性:增加时间窗口校验(如令牌有效期≤5分钟),拒绝过期或递减后的数值。 

2、使用不可预测的令牌:采用UUID或加密签名替代纯数字参数,避免数值规律性。 

3、限制参数修改权限:前端禁止用户直接修改鉴权参数,后端对参数签名进行二次验证。 


案例3

取特殊值

场景

无序序列的数值——取特殊值

输出

形成原因:

在程序初始情况下发现用常规数值存在安全问题,于是从某个数据起开始使用无序序列,但未对初始数据进行校正。

安全自查:将参数值取特殊值,如1,10,100等

修复方法: 

1、引入有序标识:使用数据库自增ID或时间戳+随机数组合生成唯一且有序的序列。 

2、哈希映射:将无序数值通过哈希算法映射为固定长度的唯一标识(如MD5或SHA-256)。 

3、业务逻辑分离:将无序数值仅作为辅助字段,核心业务依赖有序主键。 


首发:128种专业技巧助你一网打尽小程序安全隐患(越权-上)【葫芦七查】

案例4

更改日期

场景

时间序列的数值——更改日期;

输出

形成原因: 

由于业务逻辑的特殊性,需要将编号设置为特定的格式,以便数据的处理的分析。


安全自查,观察参数值中是否存在特殊的序列(很多时候特殊序列藏在无序的一大串字符串中,需要去观察是否有2025xxxx,2024xxxx类似数字)

修复方法: 

权限校验:后端验证用户ID与当前登录用户是否匹配,拒绝非法参数。 


案例5

更改路径数值

场景

路径中存在数值——更改路径数值;

输出

形成原因: 

URL路径中包含可变数值(如用户ID或资源ID),攻击者通过修改路径参数越权访问其他资源(如/user/123.html→/user/456.html等情况)

安全自查:对路径中的参数值进行安全检验(有时候会在路径的中间用数值,或者用200.html等形式)

修复方法: 

1、权限校验:后端验证用户ID与当前登录用户是否匹配,拒绝非法路径参数。 

2、路径参数白名单:仅允许特定格式的数值(如数字范围或正则表达式匹配)。 

3、隐藏敏感路径:通过路由配置隐藏敏感接口,避免直接暴露路径参数。 


案例6

参数值置空

场景

任意参数值通用——参数值置空;【*】

输出

形成原因:

接口参数未做非空校验,攻击者将参数值置空(如param=)导致程序空指针异常或逻辑漏洞。

安全自查:将参数值置空(检验是否会返回所有数据,有时候置空只返回一条,然后每次请求都会返回不同的一条数据)

修复方法: 

1、默认值机制:为参数设置默认值(如空字符串或0),避免空值触发异常。 

2、参数校验框架:使用如Hibernate Validator对参数进行@NotNull或@NotEmpty校验。 

3、异常捕获:在代码中增加try-catch块,捕获空值异常并返回友好提示。 


案例7

切换GET请求

场景

POST请求数据的数据包——切换GET请求;【*】

输出

形成原因: 

POST请求被错误地转换为GET请求(如前端代码错误或代理服务器配置问题),导致敏感数据暴露在URL中。

安全自查:获取数据的接口切换请求方法,copy url使用浏览器直接请求为GET请求方法,比切换请求头可能快一点

修复方法: 

1、检查请求方法:后端强制校验请求方法(如if (request.getMethod() != POST)),拒绝非POST请求。 

2、HTTPS加密:确保敏感数据通过HTTPS传输,避免GET请求参数泄露。 

3、日志脱敏:对GET请求参数进行敏感信息脱敏(如密码替换为***)。 


案例8

改为默认值

场景

任意参数值通用2——改为默认值; 【*】

输出

形成原因: 

参数未正确传递或格式错误时,系统未处理导致默认值覆盖有效数据(如默认值覆盖用户自定义值)。

安全自查:改用默认值检验是否存在越权,常见的默认值有undefined等等

修复方法: 

1、权限校验:后端验证用户ID与当前登录用户是否匹配,拒绝非法参数。 

2、参数白名单:仅允许特定格式的数值(如数字范围或正则表达式匹配)。 

#artContent h1{font-size:16px;font-weight: 400;}#artContent p img{float:none !important;}#artContent table{width:100% !important;}