当前位置: 首页 > news >正文

有缺陷的访问控制

HijackSessionAssignment

在 HijackSessionAuthenticationProvider 类中,ID 的生成由以下代码控制:

private static long id = new Random().nextLong() & Long.MAX_VALUE;
// ...
private static final Supplier<String> GENERATE_SESSION_ID = () -> ++id + "-" + Instant.now().toEpochMilli();
  • 使用 Random().nextLong() 生成初始随机数,并通过 & Long.MAX_VALUE 确保为正数
  • 每次生成新 ID 时使用 ++id 递增
  • 附加当前时间的毫秒数(Instant.now().toEpochMilli())

@Overridepublic Authentication authenticate(Authentication authentication) {if (authentication == null) {return AUTHENTICATION_SUPPLIER.get();}// 检查1:如果提供了ID且该ID在有效会话列表中if (StringUtils.isNotEmpty(authentication.getId())&& sessions.contains(authentication.getId())) {authentication.setAuthenticated(true);return authentication;}
// 检查2:如果ID为空则生成新IDif (StringUtils.isEmpty(authentication.getId())) {authentication.setId(GENERATE_SESSION_ID.get());}authorizedUserAutoLogin();// 25%概率自动授权新会话return authentication;}protected void authorizedUserAutoLogin() {if (!PROBABILITY_DOUBLE_PREDICATE.test(ThreadLocalRandom.current().nextDouble())) {Authentication authentication = AUTHENTICATION_SUPPLIER.get();authentication.setAuthenticated(true);addSession(authentication.getId());}}

总而言之,这道 题就是有百分之二十五的概率自动授权新对话,把它加入有效会话列表,而题目过关要求是输入的cookie值在有效会话列表中,所以根据会话id递增的规律,可以爆破解题。

先不设置cookie值,查看返回的cookie值

5307212479590026264-1750838353211

5307212479590026265-1750838369939

5307212479590026266-1750838383003

5307212479590026268-1750838396384

发现丢失了67号,所以以这个开始爆破

不安全的直接对象引用

直接对象引用是指应用程序使用客户端提供的输入参数来访问数据或对象的一种设计方式。

如使用GET方法的直接对象引用通常表现为以下形式:

https://some.company.tld/dor?id=12345
https://some.company.tld/images?img=12345  
https://some.company.tld/dor/12345

IDORLogin

输入tom和cat就行

这里利用hashmap的方式存储数据

IDORDiffAttributes

抓包获取属性列就行

IDORViewOwnProfile

/IDOR/profile/{userId},userId可以由前面抓包的时候看到,也可以爆破

IDORViewOtherProfile

查看其他人的profile,根据id号爆破

源码就是直接匹配了388这个id号

Missing Function Level Access Control

功能级访问控制缺失

MissingFunctionACHiddenMenus

隐藏的菜单项

MissingFunctionACYourHash

访问上题得到的/access-control/users路由,并添加Content-Type: application/json,返回hash数据

源码就是比对Jerry的Userhash

http://www.lryc.cn/news/583716.html

相关文章:

  • 语音转文字「本地化」新解!Whisper Web+cpolar实现零服务器部署与远程操作
  • 【实战】Dify从0到100进阶--文档解读(1)开源许可和大模型适配
  • defer学习指南
  • 【C++详解】STL-list模拟实现(深度剖析list迭代器,类模板未实例化取嵌套类型问题)
  • K线连续涨跌统计与分析工具
  • 《C++初阶之内存管理》【内存分布 + operator new/delete + 定位new】
  • 《Spring 中上下文传递的那些事儿》Part 7:异步任务上下文丢失问题详解
  • 论文精读(一)| 量子计算系统软件研究综述
  • Java SE--继承
  • TCP/IP常用协议
  • java 语法类新特性总结
  • AI技术如何重塑你的工作与行业?——实战案例解析与效率提升路径
  • Airtest 的 Poco 框架中,offspring()
  • 深度学习12(卷积神经网络)
  • mysql 可用性的保障机制:主讲主从复制机制
  • 力扣网编程150题:加油站(贪心解法)
  • 基于SpringBoot+Vue的疫情问卷调查与返校信息管理系统】前后端分离
  • JSP数据交互
  • Java结构型模式---装饰者模式
  • C++11 future、promise实现原理
  • 嵌入式调试LOG日志输出(以STM32为例)
  • 深度学习模型表征提取全解析
  • Spring Cloud Gateway 的路由和断言是什么关系?
  • 【TCP/IP】3. IP 地址
  • 【工具变量】上市公司企业金融强监管数据、资管新规数据(2001-2024年)
  • C++11 std::move与std::move_backward深度解析
  • 【PyTorch】PyTorch中torch.nn模块的全连接层
  • LeetCode经典题解:1、两数之和(Two Sum)
  • 小程序软装: 组件库开发
  • Python Day8