实战|任意用户漏洞挖掘分享

news2024/11/14 18:02:30

吉祥知识星球icon-default.png?t=N7T8http://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247485367&idx=1&sn=837891059c360ad60db7e9ac980a3321&chksm=c0e47eebf793f7fdb8fcd7eed8ce29160cf79ba303b59858ba3a6660c6dac536774afb2a6330&scene=21#wechat_redirect

《网安面试指南》icon-default.png?t=N7T8http://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247484339&idx=1&sn=356300f169de74e7a778b04bfbbbd0ab&chksm=c0e47aeff793f3f9a5f7abcfa57695e8944e52bca2de2c7a3eb1aecb3c1e6b9cb6abe509d51f&scene=21#wechat_redirect

《Java代码审计》icon-default.png?t=N7T8http://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247484219&idx=1&sn=73564e316a4c9794019f15dd6b3ba9f6&chksm=c0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene=21#wechat_redirect

《Web安全》icon-default.png?t=N7T8http://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247484238&idx=1&sn=ca66551c31e37b8d726f151265fc9211&chksm=c0e47a12f793f3049fefde6e9ebe9ec4e2c7626b8594511bd314783719c216bd9929962a71e6&scene=21#wechat_redirect

《应急响应》icon-default.png?t=N7T8http://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247484262&idx=1&sn=8500d284ffa923638199071032877536&chksm=c0e47a3af793f32c1c20dcb55c28942b59cbae12ce7169c63d6229d66238fb39a8094a2c13a1&scene=21#wechat_redirect

《护网资料库》icon-default.png?t=N7T8http://mp.weixin.qq.com/s?__biz=MzkwNjY1Mzc0Nw==&mid=2247484307&idx=1&sn=9e8e24e703e877301d43fcef94e36d0e&chksm=c0e47acff793f3d9a868af859fae561999930ebbe01fcea8a1a5eb99fe84d54655c4e661be53&scene=21#wechat_redirect

登录框checklist

遇到登录框必检查的checklist:

  • 用户枚举:未统一返回内容

  • 弱口令:通过信息收集暴力破解

  • 空口令:将密码置空发送数据包

  • 登录认证绕过:通过fuzz找特殊接口

  • 暴力破解风险:网站无验证码,或不设置页面重定向跳转且密码为明文或弱加密

  • 验证码复用:验证码不失效

  • 测试数据:特殊手机号(13333333333...)及验证码(000000-999999)

  • 验证码绕过:修改登录的返回包等

  • 短信验证码可暴力破解

  • 短信验证码可预测

  • 短信炸弹

  • 恶意锁定问题

  • 账号密码明文传输

  • SQL注入:万能密码等

  • SSO认证缺陷:越权登录他人账号

  • 任意用户漏洞

  • ……

总之就是存在登录框的地方,什么漏洞都是可能存在的,这也是在面试当中经常会被问到的。今天的案例是与任意用户相关的,着重点就放在任意用户登录上。

案例1:用户枚举演变任意用户

初探

这是一个工作时的APP目标,打开APP后,但大致功能如下(图文无关)

图片

最开始是最原始的用户枚举,选择账号登录,输入任意账号密码,如果账号存在会返回密码错误,账号不存在则返回其他内容

图片

后面想测试登录处有无短信炸弹、暴力破解等漏洞,这里的手机号参数是经过DES加密的,通过反编译安装包,成功拿到秘钥

图片

尝试了在手机参数中加入空格,+点等特殊符号,都是不能通过后端对手机号格式的验证

图片

第一个周就这样浅浅的水一下,交了一个用户枚举

图片

再探

又是朴实无华的一个周,依旧来到了登录框处进行对抗 经过一番尝试,在登录的手机号处添加了一个空格加密再进行DES加密后得到最终发送的参数,发送数据包,登录成功!!!

图片

但是我心中还是有疑问的,为啥上周这个方法都还不行,这周用同样的方法就登录成功了,也和其他同事讨论了一下出现该问题的原因,因为之前他们用同样的方法是无法登录的

图片

缘由

为什么在第一周测试的时候该方法无法任意用户登录的,第二周就能登录原因?通过和开发沟通,大致得知了原因,不过师傅们也可以先脑补下是因为什么原因,修复用户枚举后的部分代码如下:(已脱敏简化

@RequestMapping(value = "/login.ajax")
@ResponseBody
@InterfaceLogAnno("/user/login.ajax")
public JsonIndivUserLoginResp login(HttpServletRequest request, HttpServletResponse response) {
 ……
 //密码登录
 if (!StringUtils.isEmpty(mobilePhone) && StringUtil.isMobileNo(mobilePhone) && !StringUtils.isEmpty(password)) {
  
  //密码登陆逻辑判断 这部分代码没什么问题
  ……
 }
 
 //验证码登录
 if (!StringUtils.isEmpty(mobilePhone) && StringUtil.isMobileNo(mobilePhone) &&
    !StringUtils.isEmpty(verifyCode) && verifyCode.length() == CODE_LENGTH) {
  //验证码登录逻辑判断 这部分代码没什么问题
  ……
 }
 
 /**
  * 登录就给最新的token
  */
 newToken = createToken(mobilePhone, deviceID, queryResult, token);
}

应该有代码基础的师傅,看见这部分代码,就能看出问题所在了,不管是密码登录还是验证码登录都需要if语句里面的条件都为真才会走到对应的逻辑进行判断,但当我们请求的手机号参数不符合规范时,StringUtil.isMobileNo(mobilePhone)返回的是false,即不会走密码登录和验证码登录的逻辑就直接来到了获取token的地方

图片

最后的修复是在代码开始的部分判断了手机号格式,不符合就进行返回

@RequestMapping(value = "/login.ajax")
@ResponseBody
@InterfaceLogAnno("/user/login.ajax")
public JsonIndivUserLoginResp login(HttpServletRequest request, HttpServletResponse response) {
 //校验注册信息-用户名和密码格式校验
 if (StringUtils.isEmpty(mobilePhone) || !StringUtil.isMobileNo(mobilePhone)) {
  logger.info("------------------手机号无效----------------------");
  return new JsonIndivUserRegisterResp(Constant.JSON_HTTP_USER_PWD_STATUS_FAILED, "用户名或密码错误!");
 }
 ……
}

这种方式还是不够优雅,不过就开发“能跑就行”的原则来说,这样就够了

案例2:偶然的任意用户

这是一个众测项目,拿到资产已经很晚了,用户枚举短信轰炸这种水洞要嘛是重复,要嘛就是不接收,也是一个登陆框开局

图片

(要说明一下虽然这是按照step1-step3步骤重置密码的,但这个地方是不能跨越步骤的)

在首页的登录忘记密码处,直接常规的用两个手机帐号A、B,用B手机号接收验证码去重置A手机号,这样确实很简单,所以直接重置失败!!!

图片

后面在一次偶然中,我发送了两次手机验证码,即A手机号发送,B手机号也发送,再用B手机号去接收验证码重置A手机号

图片

这次只能猜测大致的原因是在后端验证时,验证码和手机号只做了弱绑定,即分开验证手机号和验证码是否存在缓存当中。

本文引用:三十的安全屋

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2097355.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

变压器电压调节

电压调节是衡量变压器在不同负载条件下维持恒定次级电压的能力的标准,因为输出次级电压可能不是我们所期望的。 当变压器的初级绕组通电时,它会产生次级电压和电流,其量由变压器匝数比 (TR) 决定。如果单相变压器的降压匝数比为 2:1&#xf…

【论文阅读】一种针对多核神经网络处理器的窃取攻击(2020)

摘要 攻击者可以通过侧信道信息(Side-channel)完成模型窃取攻击[17]. [17] Hua W Z, Zhang Z R, Suh G E. Reverse Engineering Convolutional Neural Networks through Side-channel Information Leaks[C]. 2018 55th ACM/ESDA/IEEE Design Automation Conference (DAC), 2018…

Large Language Models(LLMs) Concepts

1、Introduction to Large Language Models(LLM) 1.1、Definition of LLMs Large: Training data and resources.Language: Human-like text.Models: Learn complex patterns using text data. The LLM is considered the defining moment in the history of AI. Some appl…

HMI触屏网关-VISION如何与Modbus TCP从机通信

上文:HMI触屏网关-VISION如何与Modbus RTU从机通信-CSDN博客 1. 硬件连接 Modbus TCP协议采用网口通信的方式,因此,只需要保证网关的LAN口IP和Modbus TCP从机的IP在同一网段即可。 Modbus TCP从机参数说明: 2. VISION创建Modbu…

怎么将ts格式转mp4?必须掌握的4种视频转换方法

当今,视频格式转换变得愈发重要。当我们面对不太常见的ts格式,想要将其转换为更通用的mp4时,掌握正确的转换方法尤为关键。今天,我们将分享4种实现ts格式转mp4的必备方法。每一种方法都有其独特优势,满足不同需求。 我…

027、架构_资源_GTM

系统级GTM:默认的GTM,当创建分片集群时,如果不创建实例级GTM,则会用系统级GTM 本章节主要介绍GTM 集群的新增、删除、配置、绑定等管理操作。 新增GTM集群 摘要新增GTM集群,与租户相绑定,可查看绑定租户与配置集群参数设置,租户可重绑定其他正常可用的GTM集群。 步骤1.…

windows 编译libx264报错问题之解决

编译过程参考:Win10环境下 编译 和 运行 x264_x.264下载使用教程-CSDN博客 一、gcc not found 在https://www.msys2.org/ 下载Mingw后,安装 pacman -S mingw-w64-x86_64-gcc 安装完成后,执行gcc -v提示找不到gcc 解决办法: …

迎接开学第一天!请查收这份2024开学必备好物清单!

新的学期正悄然来临,开学第一天校园里即将迎来一张张充满朝气的面孔。无论是重返课堂的老生还是满怀期待的新生,开学季总是充满了新的希望与挑战。为了帮助学生们更好地适应即将到来的学习生活,我们精心准备了这份2024开学必备好物清单。从提…

Java提高篇——Java 异常处理

阅读目录 异常的概念异常的体系结构Java 异常的处理机制异常处理的基本语法异常链自定义异常总结 回到顶部 异常的概念 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。 比如说,你的代码少了一个分号&…

FreeRTOS指南 -- 基础知识

裸机 / OS 裸机编程:单任务系统的方式,框架是在main( )函数中循环的处理,实时性差,在大循环中再紧急的函数没轮到只能等着,虽然在中断中处理一些紧急任务,但是在大型嵌入式系统中,这样的单任务系…

深入探索MySQL数据库结构设计:实战案例解析,打造高效、可扩展的数据存储方案

作者简介:我是团团儿,是一名专注于云计算领域的专业创作者,感谢大家的关注 座右铭: 云端筑梦,数据为翼,探索无限可能,引领云计算新纪元 个人主页:团儿.-CSDN博客 前言:…

BERT 高频面试题八股文——基础知识篇

基础知识 1. 问:请简述自然语言处理(NLP)的主要研究目标是什么? 答:NLP的主要研究目标是使计算机能够理解、解释和生成人类语言。 2. 问:什么是BERT模型,它为什么重要? 答:BERT是一种预训练…

超级会员卡积分收银系统源码,一站式解决方案,可以收银的小程序 带完整的安装代码包以及搭建部署教程

系统概述 超级会员卡积分收银系统源码,是一款专为零售行业设计的综合性管理软件系统。该系统以高效的收银功能为核心,结合会员管理、积分系统、商品管理、库存监控、报表分析等多个功能模块,旨在帮助商家实现线上线下一体化经营,…

海康二次开发学习笔记7-流程相关操作

流程相关操作 流程的相关操作包括选择路径,导入流程,导出流程,运行流程等. 在开始前,扩展优化一下写法,供其他地方重复调用. /// <summary>/// 消息显示区显示消息/// </summary>/// <param name"msg"></param>public void AddMsg(string …

【windows】windows 如何实现 ps aux | grep xxx -c 统计某个进程数的功能?

windows 如何实现 ps aux | grep xxx -c 统计某个进程数的功能&#xff1f; 在Windows中&#xff0c;要实现类似Linux中ps aux | grep xxx -c的功能&#xff0c;即统计某个特定进程的数量&#xff0c;可以使用PowerShell或命令提示符&#xff08;cmd.exe&#xff09;来实现。 …

osgearth添加地形夸张系数VerticalScale时报E0393:不允许指针指向不完整的类类型的解决方法

如下图1所示: 图1 error C2027: 使用了未定义类型“osgEarth::TerrainEngineNode” E0393:不允许指针指向不完整的类类型“osgEarth::TerrainEngineNode”

SSM一篇就懂

01、初始Spring 什么是Spring&#xff0c;它有什么特点&#xff1f; Spring是一个容器框架&#xff0c;主要负责维护bean与bean之间的关系和生命周期。它具有以下特点&#xff1a; 控制反转&#xff08;IoC&#xff09;&#xff1a;通过依赖注入&#xff08;DI&#xff09;&…

自动化获取诊断信息(H3C网络设备)

介绍 在设备遇到个人无法处理的问题时&#xff0c;需要下载诊断信息发送给400处理哦&#xff0c;而通过传统的方式获取诊断信息需要通过多个步骤来获取&#xff0c;步骤繁琐&#xff0c;在设备数量过多的情况下&#xff0c;严重影响工作效率&#xff0c;而通过python自动化的方…

提交MR这个词儿您知道是什么意思吗?

作为测试的同学&#xff0c;是不是经常会听研发同学说提交MR呢&#xff1f;那么究竟什么是提交MR呢&#xff1f;在这篇文章中会告诉大家&#xff01; 在Git中&#xff0c;提交MR&#xff08;Merge Request&#xff0c;合并请求&#xff09;是在进行协作开发的一种常见方式&…

UPDF 编辑器怎么样,值得购买吗?

如今 PDF 工具可谓是五花八门&#xff0c;但不少工具在滥竽充数&#xff0c;软件里塞满广告&#xff0c;界面也是十几年前的风格。 近一两年火起来的 UPDF 编辑器&#xff0c;凭借体积轻巧、视效轻盈、体验轻快、多平台等特点&#xff0c;在同类产品中脱颖而出&#xff0c;成为…