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

src挖掘-记一次有趣的逻辑漏洞分享

漏洞挖掘-记一次有趣的逻辑漏洞挖掘

  • 前言
  • 简述
  • 1、信息收集
  • 2、找功能点
  • 3、挖掘漏洞
    • 案例一:任意用户注册漏洞
    • 案例二-垂直越权导致管理员密码重置获得管理员后台权限
    • 漏洞总结

前言

此文章是小白的学习笔记,请不要利用文章内相关知识点进行非法渗透,仅做学习经验思路参考使用,产生的一切后果与文章作者无关。实战案例已上交src平台,实战案例已经进行打码处理,请遵守网络安全法律法规,禁止未授权测试。若有侵权请联系我删除,感谢!

简述

某天心血来潮想挖挖逻辑漏洞,想挖一下登录框处的逻辑漏洞,就简单的信息收集。随便找的一个登录框网站进行挖掘,最后发现注册点、找回密码处存在逻辑缺陷,可以通过一个手机号注册另一个手机号、可以修改userid值进行垂直越权进行任意密码重置获得后台权限。

1、信息收集

登录框漏洞挖掘信息收集思路
fofa语法

host="com" && body="login/findpwd"

在这里插入图片描述

host="com" && body="登录"

在这里插入图片描述

host="com" && body="注册"

在这里插入图片描述

通过浏览器

site:com intext:注册

site:com body:注册

site:com title:注册

通过钟馗之眼、360等等

2、找功能点

潦草的进行信息收集找到一个登录框功能点,发现有注册和找回的逻辑功能点,这种类型的功能点一般有任意用户注册就有极大可能有任意用户密码重置
在这里插入图片描述

在这里插入图片描述

3、挖掘漏洞

案例一:任意用户注册漏洞

  • 简述
    任意用户注册漏洞,由于开发人员没有严格校验注册,或者是逻辑上有缺陷,导致攻击者可以进行任意用户注册。

  • 漏洞思路

    由于此注册处没有校验手机号与验证码,导致我们可以利用自己的手机号正常注册。获取到验证码后把注册手机号修改成任意用户即可。
    我们通过自己的手机号正常注册得到验证码(155254)然后抓包修改自己的手机号为测试手机号发现成功注册

在这里插入图片描述
发现注册成功
在这里插入图片描述

案例二-垂直越权导致管理员密码重置获得管理员后台权限

  • 漏洞思路

受到此网站有任意用户注册的启发,由于没有校验验证码与手机号是否匹配导致任意用户注册,那么我想此网站会不会存在任意用户密码重置漏洞呢
在我正确走流程找回密码的时候,仔细抓取数据包,发现修改密码的数据包与验证码是分开的,那么我就在想,是不是修改密码和获取验证码流程是独立的呢,也就是修改密码没有与手机号相互校验。我单独抓取修改密码的数据包发现可以无限制提交,那么确定修改密码是独立流程,没有校验用户身份。

这里的思路是

正确走流程找回密码>验证码正确填>由于修改密码流程没有进行用户校验,抓取修改密码的数据包>修改参数即可任意用户密码重置

输入已经注册好的手机号158********
在这里插入图片描述
获取验证码601959
在这里插入图片描述
在这里插入图片描述
发现修改密码数据包中并没有用户校验,数据包中没有验证码参数,那么此处修改密码就是和获取验证码流程独立了,也就是说刚刚获取验证码是纸老虎。找回密码处校验用户与修改密码流程没有层层校验,导致逻辑缺陷。
修改密码数据包有三个参数,为重置密码、用户名、用户userid。此处的关键参数为userid,而且id是可遍历参数,一般来说userid为1就是管理员的id,我们碰碰运气把loginname参数改成管理员账户admin,userid改为1。发现密码重置成功,通过修改密码处更改userid造成垂直越权获得后台管理员权限,后台敏感信息太多就不截图了
在这里插入图片描述
在这里插入图片描述

漏洞总结

这里运气好,猜到admin的userid是1,修改了管理员密码,然后成功进入管理员后台。泄露大量信息,也知道所有用户的用户名和id,也可以进行任意用户密码重置了。其实此网站有此漏洞主要原因就是找回密码流程没有相互校验,校验手机验证码与修改密码流程独立,并且在数据包有可遍历参数userid。还有就是注册流程只校验手机号与验证码是否正确,没有校验手机号与验证码是否匹配,导致可以用自己手机号注册任意手机号。
修复建议
1、校验手机号与验证码是否匹配,不能只判断验证码是否正确。
2、增强验证码复杂度
3、修改密码和验证码校验不要完全独立,严格相互验证重置密码几个步骤。

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

相关文章:

  • 【C++】STL | list (链表)详解及重要函数的实现
  • 警惕智能手机的“隐形眼”:如何保护我们的数字隐私堡垒
  • 人工智能算法工程师(高级)课程12-自然语言处理之NLP的语言模型-ELMo,transformer,BERT与代码详解
  • PicGo + gitee 免费搭建个人图床
  • 组合数的低复杂度运算
  • 小型并网式光伏气象站:光伏电站的智能守护者
  • JavaScript 中的回调函数(callback)
  • 计算机毕业设计hadoop+spark+hive漫画推荐系统 动漫视频推荐系统 漫画分析可视化大屏 漫画爬虫 漫画推荐系统 漫画爬虫 知识图谱 大数据
  • 解决pycharm日志总是弹出“无法运行Git,未安装Git”的问题
  • threejs 节点材质系统 绑定attribute
  • Rabbitmq的几种工作模式
  • 如何在 Debian 上安装运行极狐GitLab Runner?【二】
  • 简单的docker学习 第13章 CI/CD与Jenkins(下)
  • 基于STM32设计的智能鱼缸_带鱼儿数量视觉识别(华为云IOT)(202)
  • 立体连接模式下的传播与沟通:AI智能名片小程序的创新应用与深度剖析
  • 基于Python的Scrapy爬虫的个性化书籍推荐系统【Django框架、超详细系统设计原型】
  • 二叉树bst
  • elasticsearch的使用(二)
  • YOLOv8由pt文件中读取模型信息
  • js遍历效率
  • QModbus例程分析
  • Vue万字学习笔记(入门1)
  • Cesium手动建模模型用Cesiumlab转3D Tiles模型位置不对,调整模型位置至指定经纬度
  • 学习C语言第23天(程序环境和预处理)
  • Ubuntu22.04安装
  • 从入门到自动化:一篇文章掌握Python的80%
  • 开源的主流机器学习框架
  • RabbitMQ:发送者的可靠性之配置发送者重试机制
  • 基于深度学习的大规模MIMO信道状态信息反馈
  • 在Docker中部署Rasa NLU服务