挖洞思路 | 账号攻击的几种常见手法

我在日常渗透时遇到个同时存在这几类问题的网站 https://www.xxxx.com/,该网站为某电商平台,合理结合几类问题,当时已拿到管理员权限,漏洞现已提交并确认修复,思路分享给大家。

开始之前,说个习惯,很多网站分了 PC 版本和手机版本,手机版常为功能裁减,相应安全防御也较弱,“柿子专挑软的捏”,所以,我会先尽可能找出该网站的手机版。具体而言,我习惯先用手机直接访问,服务端自动将跳转至手机版,提取手机版的访问地址;如果觉得手机上输入 URL 麻烦,你可以安装 firefox 的 useragent-switcher(https://mybrowseraddon.com/useragent-switcher.html)扩展,模拟手机终端进行访问;当然,其他手段也可考虑,你可以通过子域名枚举工具 Sublist3r(https://github.com/aboul3la/Sublist3r)找到类似 https://m.xxxx.com/ 的手机版本,也可以通过路径枚举工具 dirsearch(https://github.com/maurosoria/dirsearch)找到类似 https://www.xxxx.com/wap 的手机版本,还可以通过 google hacking (inurl:xxxx.com 移动端)找到类似 https://www.xxxx.com/mobile。


账号可枚举

在登录页面 https://www.xxxx.com/Wap/User/login 输入账号、密码:

图片

提交后拦截请求,若账号不存在则服务端应答为:

图片

若账号存在则服务端应答为:

图片

分析发现,虽然应答很类似,但还是有区别,有效账号比无效账号多了个“您”,或者,从应答体的长度也能判断出该账号是否有效。同时,服务端未限制高频访问,所以,可枚举有效账号。

将 mobile 参数值定为枚举变量、以常见国人姓名拼音 top500 和常见后台账号作为字典,在枚举结果中用,应答包长度为 561 的均为有效账号:

图片

其中,既有 chenying、chenyun 这类普通账号,也有 admin、ceshi 这类后台账号,结果存为 username.txt:

图片


密码可暴破

服务端有密码试错上限的机制,错误 5 次则一小时内禁止登录:

图片

查看登录请求:

图片

logintime 参数名和参数值引起我注意,刚好也是试错上限 5,尝试将值其改为 4 后,服务器又正常响应,或者,删除整改 logintime 后,也可绕过试错限制。

现在,用删除 logintime 后的请求包,将 mobile 定义为枚举变量 1、以前面生成的 username.txt 为字典,将 password 定义为枚举变量 2、以常见弱口令 top1000 为字典,进行密码暴破:

图片

其中,应答包长度为 380 的均为有效密码,存为 logined.txt:

图片


任意账号注册

在注册页面 https://www.xxxx.com/Wap/User/register 输入未注册过的手机号点击“获取验证码”后、输入收到的短信验证码后提交,进入密码设置页面:

图片

输入密码后拦截请求:

图片

简单分析发现,register_mobile 为注册的用户名,只要该参数值未注册过,通过这个请求包可绕过短信验证成功创建任意账号。

比如,系统本来只允许用手机号当用户名进行注册,利用该漏洞,可以创建账号 yangyangwithgnu/abcd1234,登录确认:

图片


任意账号密码找回

密码找回页面 https://www.xxxx.com/Wap/User/forgetpass 用攻击者账号 13908080808 进入密码找回全流程,输入短信验证码后提交:

yangyangwithgn

进入新密码页面,输入后提交,拦截请求如下:

图片

其中,PHPSESSID=p6nujg7itekpau6p1e9ibbpe86、register_mobile=13908080808 这两个参数引起了我的注意。这个请求,用于重置账号 13908080808 密码,那么服务端如何知道该重置 13908080808 而不是 13908080807、13908080809 呢?刚才说的几个参数中肯定有一个用于该目的。逐一尝试发现,PHPSESSID 就是它,另外,boss_language 和 register_mobile 可删除,不影响结果。

这让我闻到浓郁的 cookie 混淆的味道。大致攻击思路:首先,用攻击者账号 13908080808 进入密码找回流程,查收重置验证码、通过校验;然后,输入新密码后提交,拦截中断该请求,暂不发至服务端,这时,PHPSESSID 关联的是 13908080808 账号;接着,关闭浏览器的 burp 代理,新开重置流程的首页,在页面中输入普通账号 13908090133 后获取短信验证码,这时,PHPSESSID 已关联成 13908090133 了;最后,放行之前中断的请求,放至服务端,逻辑上,可以成功重置 13908090133 的密码。

用上述思路尝试将 13908090133 密码重置为 PenTest1024,前端显示重置成功。尝试用 13908090133/PenTest1024 登录,成功进入系统:

图片

同理可重置管理员账号,为避免影响业务,不再实际操作。


防御措施

通常来说,密码找回逻辑中含有用户标识(用户名、用户 ID、cookie)、接收端(手机、邮箱)、凭证(验证码、token)、当前步骤等四个要素,这四个要素必须完整关联,否则可能导致任意账号密码找回漏洞。另外,服务端应限制枚举等恶意请求。

原文于:https://www.freebuf.com/vuls/164066.html原文作者:yangyangwithgnu

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot 反射调用ServiceImpl时报错:java.lang.NullPointerExceptio、,mapper为null【解决方法】

springboot 反射调用ServiceImpl时报错:java.lang.NullPointerException、mapper为null【解决方法】 问题描述问题分析解决方案创建SpringBootBeanUtil编写调用方法 executeMethod调用 总结 问题描述 在使用Spring Boot时,我们希望能够通过反射动态调用…

如何使用Excel搭建一套低值易耗品管理系统

低值易耗品是企业日常运营中不可或缺的一部分,虽然其单个价值不高,但因其使用频繁且数量众多,对其的管理同样重要。利用Excel搭建一套低值易耗品管理系统,不仅成本低廉,而且易于操作和维护。本文将指导您如何使用Excel…

GD32零基础教程第二节(点亮一个LED灯)

文章目录 前言一、GPIO介绍1.GPIO是什么2.GPIO命名规则 三、LED灯本质及原理图1.LED本质2.LED原理图分析 四、实验代码编写1.配置GPIO为输出模式的步骤2.设置GPIO电平状态函数3.具体代码编写 总结 前言 本篇文章将带大家开始学习国产芯片GD32,这套文章将涵盖基础篇…

如何洞悉六西格玛培训公司课程设置的全面性?

近年来,市面上的六西格玛培训公司琳琅满目,课程设置更是五花八门。如何判断一个六西格玛培训公司的课程设置是否全面,成为了许多企业和个人关注的焦点。本文,深圳天行健六西格玛培训公司有建议如下: 一、了解六西格玛的…

有趣的css - 暗黑模式切换按钮

大家好,我是 Just,这里是「设计师工作日常」,今天分享的是一个丝滑的暗黑模式切换按钮。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样式页面渲染…

一年期单域名SSL证书怎么申请?

申请一年期单域名SSL证书的步骤如下: 1. 选择SSL证书提供商: 选择一家信誉良好、受浏览器广泛信任的SSL证书颁发机构(CA),如JoySSL等。可以根据价格、支持服务、证书类型等因素进行比较。 单域名SSL证书-JoySSLhttps:…

ThinkPHP审计(1) 不安全的SQL注入PHP反序列化链子phar利用简单的CMS审计实例

ThinkPHP代码审计(1) 不安全的SQL注入&PHP反序列化链子phar利用&简单的CMS审计实例 文章目录 ThinkPHP代码审计(1) 不安全的SQL注入&PHP反序列化链子phar利用&简单的CMS审计实例一.Thinkphp5不安全的SQL写法二.Thinkphp3 SQL注入三.Thinkphp链5.1.x结合phar实现…

TouchGFX之容器

容器是TouchGFX中的一种组件,可以包含子节点(比如控件和其他容器)。 在TouchGFX Designer中,可以在Widgets(控件)选项卡中的containers(容器)类别下找到容器,向容器中添…

正大国际:国内做外盘qi货的人多吗?

整个中国,期货也就五百万个账户,活跃的也就两百万个,股票账户三亿多个 所以说在国内做期货的是真的少,大部分人聊天知道股票,期货听都没听过 这所有的国内期货账户中,小散户是寥寥无几的,基本…

content warning内容警告中文汉化快捷教程分享

content warning(内容警告)是近期steam上非常受欢迎的一款恐怖题材多人联机游戏,自4月1日上线后,一直保持较高的玩家人数,steam好评率也稳定维持在93%,可以说是4月初发售游戏中的最大黑马。本作首发虽然支持中文,不过游戏内的中文阅读体验并不完整,经常会出现中英文字幕混杂等情…

IoTeX的旅程并非孤军奋战

自2017年起,IoTeX便作为一个雄心勃勃的开源项目,踏上了一条为机器打造开放经济的道路。这个宏伟的目标背后,是一个去中心化的平台愿景,一个能够让人类和机器在有保障的信任、自由意志及精心设计的经济激励下相互协作的开放生态系统…

前端学习<四>JavaScript基础——10-运算符

我们在前面讲过变量,本文讲一下运算符和表达式。 运算符的定义和分类 运算符的定义 运算符:也叫操作符,是一种符号。通过运算符可以对一个或多个值进行运算,并获取运算结果。 表达式:数字、运算符、变量的组合&…

华为 2024 届校园招聘-硬件通⽤/单板开发——第十套

华为 2024 届校园招聘-硬件通⽤/单板开发——第十套 部分题目分享,完整版带答案(共十套)获取(WX:didadidadidida313,加我备注:CSDN huawei硬件单板题目,谢绝白嫖哈) 1、I2 C 总线…

代码随想录算法训练营Day14|二叉树理论基础和递归遍历

代码随想录卡哥视频 理论基础 需要了解 二叉树的种类,存储方式,遍历方式 以及二叉树的定义 文章讲解:代码随想录 递归遍历 (必须掌握) 二叉树的三种递归遍历掌握其规律后,其实很简单 题目链接/文章讲解/…

如何制作软件安装包第二步

目录 0.文章目的1.第二次打开发现之前生成的2.重新引导引入文件--制作安装包3.输入安装包基本信息4.确认安装路径5.选择制作完成的exe执行文件6.加入jre运行环境--这步很重要,否则项目运行不起来7.填写安装包名称8.添加版权信息文件(可选操作&#xff09…

android-自定义TextView在文字内容末尾添加图片icon、可以添加间距

样式示意图 自定义属性 style.xml <declare-styleable name"IconLabelTextView"><attr name"iconSrc" format"reference"/><attr name"iconPaddingStart" format"dimension"/><attr name"iconPad…

PKI:构建数字安全基石的关键技术

在数字化时代&#xff0c;网络安全已成为我们日常生活和工作的重要组成部分。为了确保数据的完整性、机密性和身份的真实性&#xff0c;公钥基础设施&#xff08;Public Key Infrastructure&#xff0c;简称PKI&#xff09;技术应运而生&#xff0c;为构建数字安全基石提供了重…

无人机控制框架的设计

无人机控制框架的设计主要包括以下几个模块&#xff1a;传感器模块、控制模块、通信模块和执行器模块。 传感器模块&#xff1a;负责获取无人机当前的状态信息&#xff0c;包括位置、姿态、速度等。常用的传感器包括GPS、陀螺仪、加速度计、气压计等。 控制模块&#xff1a;根…

Mysql底层原理二:Buffer Pool

1.数据区 就是描述信息缓存页这块&#xff0c;用来存放从磁盘加载的数据页&#xff08;看上图 索引页和数据页是分开的&#xff09; 2. free链表 用来标识数据区哪些数据页是可用的 3. flush链表 update的时候&#xff0c;如果数据在数据区可以找到&#xff0c;那就直接内…

Novel Influence Maximization Algorithm for Social Network Behavior Management

Abstract: 通过影响力最大化的过程来识别对社交网络中的产品采用或信息利用做出重大贡献的用户。社交网络的指数增长给这些网络的分析带来了一些挑战。现有文献非常重视对结构属性进行建模&#xff0c;而忽略了用户与其社会行为之间的关系。对于社会行为&#xff0c;本文将影响…