逻辑漏洞
0x00.之前总结的
1.订单处修改id导致用户信息泄露
问题参数:订单或用户Id没有被加密(抓包修改id查看返回页面是否存在敏感信息,也可以批量爆破)
2.找回密码处任意用户密码重置漏洞(手机号)/任意手机号注册
输入手机号,下一步,抓包,查看返回值中是否存在验证码;或者尝试换手机号得到验证码之后验证是否可行;修改返回包状态码
3.手机号验证处存在短信轰炸
输入手机号,点击发送验证码,抓包,修改其他手机号,如果发送成功,则可批量发送短信
4.邮箱验证处存在邮箱轰炸
输入邮箱号,点击发送验证码,抓包,修改其他邮箱号,如果发送成功,则可批量发送邮件
5.订单支付漏洞
提交订单时,修改订单的数量id,例如将1改为-1,或者找到价格参数进行修改
6.找回密码处任意用户密码重置漏洞(邮箱号)
点击找回密码,发送邮箱验证码,抓包,修改邮箱账号
7.登录处撞库
登录处随便输入用户名,抓包爆破常用用户名,查看存在账号的长度和不存在的账号的长度
8。登录处撞库获取账号及密码
输入弱口令,随便输入用户名,抓包,对用户名进行撞库,匹配成功的即可获得账号密码
0x02.乌云案例总结
PS:此处并无先后顺序,完全凭乌云案例的先后顺序总结😁
1.越权
- 漏洞点:发送礼物处,遍历白帽子whitehatid来索要联系方式
- 漏洞点:利用支付超时导致上万用户敏感信息泄漏;通过修改orderId=9272363&order_userId=5311555中的orderId及order_userId的值(要同时修改,即同时增1或减1),达到遍历用户敏感信息的操作
- 漏洞点:收获地址保存处;修改地址后,点击保存,抓包,修改addressid达到遍历用户地址信息的操作
- 漏洞点:登陆后获取用户信息处;抓包,修改userId遍历用户敏感信息
- 漏洞点:预约成功后,遍历orderId获得用户信息
- 漏洞点:加入车队处可查看车队内部人员信息,遍历车队id
- 漏洞点:购物车结算时,抓包,修改userid查看他人地址信息
- 漏洞点:套餐修改处,修改uid为他人id即可修改别人的套餐
- 漏洞点:查看订单处,修改orderId遍历其他用户信息
- 漏洞点:查看个人信息处,遍历userId,或者做删除或添加操作时,遍历userId
- 漏洞点:删除操作,遍历id或用户名
- 漏洞点:查看报告处,遍历报告id
- 漏洞点:注册用户,抓包,修改id为1,即管理员id
- 漏洞点:购买你的权限不能购买的东西,查看不能买的id,在购买能购买的东西时修改为不能买的id
- 漏洞点:论坛注册可注册admin,间接接管了admin账号
2.重置任意用户密码
- 抓包时,会将隐藏4位数的手机号变为直接显示的手机号作为参数(泄露用户手机号),在js代码中发现验证后跳转的页面,直接进行拼接绕过验证修改密码
- 在验证手机号或邮箱时,前端显示验证码
- 在验证过程中将参数中目标的手机号修改为自己的,就会将验证码发到自己手机上,从而任意修改用户密码
- 由于验证码的时效性过长,或者未限制验证次数,所以通过爆破验证码来任意重置用户密码
- 先输入目标手机号,点击发送验证码,得到cookie中加密的手机号,再用自己的手机号正常走一遍流程,到最后一步确认修改密码的时候,抓包,将cookie中加密的手机号换为目标手机号。
- 修改密码验证邮箱时,抓包,将目标邮箱更换为自己的邮箱,再将收到的验证码进行密码重置
- 修改修改密码失败时的返回包中的状态码或数据 staus=1 —— staus=0;success:false ——> success:true
- 前边格式正常走,到确认修改密码的时候,将卡号修改为其他用户的
- 修改过程中填入用户名,通过修改url里的参数来实现跳步骤绕过验证,如:step=1 ——> step=4
- 将设置密码的url中的id修改为其他用户手机号
- 情况为:userId=xxx&newpwd=xxxx&renewpwd=xxx,遍历userId批量修改其他用户密码
- 正常操作,验证时抓包,将正确的返回包中的数据保存,修改他人账号时,将之前返回包的数据复制过来修改个别参数
- 修改自己账号的正常操作,验证完成后跳转到重置密码页面,之后打开第二个页面输入目标的手机号或邮箱账号,不发送验证码,任意输入验证码,抓包,将返回包的状态值修改为验证通过的值
- 修改第一次验证身份的返回包数据,并修改第二次保存密码时的返回包的数据
- 在修改密码的时候,将请求包中的username修改为其他用户
- 前提是修改密码需要验证密保邮箱账号,从返回包中得到敏感信息,从而修改密码
- 微信公众号,输入用户名后进入验证页面,查看源代码,将条件改为永真,绕过验证修改密码
- 前提是重置密码链接会发到邮箱里,然后通过base64解密发现由时间戳和邮箱组成,所以可以修改其他用户的账号,然后生成时间戳并爆破
- 重置密码请求发到邮箱后,将url中邮箱地址替换成其他用户邮箱修改
3.支付逻辑
- 选择两件物品放入购物车,结算时修改num=1,1为1,-1使得两件物品价格相减
- 点击支付,抓包,将参数中的价格参数修改为0.1
- 点击支付,抓包,将参数中的价格参数修改为负数,会给自己账户返钱
- 修改返回包中的价格参数,放包
- 修改支付失败时返回包中的参数
- 加入购物车后,修改数量,减为-1,即0元购物
- 先充值100,到银行充值页面后,直接关闭页面再回来,点充值成功,在充值页面点击继续支付,将重置金额修改为0.1,点击支付
- 购物车选择两件物品,一件物品数量修改为-1,结算时价格只算了那个未修改的,而修改为-1的也被结算,但价格不需要支付
- 选择支付方式时,修改参数中价格的值为0.1
- 复制支付成功的链接,将未支付的订单号复制在链接后面,直接访问
- 通过修改订单页面中不可修改的订单价格,即F12修改其属性即价格value(仅根据前端价格判断)
- 修改运费价格,可减少或修改为负数
- 修改其使用时间为-1年,金额也会为-100000
- 修改前端value的值为负数
- 将前台的加密数据解密并修改对应的参数值,例如阿里云服务器可将5M的更换为200M并以5M的价钱买下
4.撞库
利用弱口令去爆破手机号或用户名,或爆破弱口令
5.任意用户登录
- 修改返回包中字典的参数
- 修改返回包中的参数 例:staus=1 ——> staus=0
- 爆破验证码
- 通过文件共享看到每个用户的凭证id,发现cookie也是id
6.恶意刷钱
凭订单号抽取奖金,通过订单号orderId遍历,获取到很多订单号,通过遍历的方式去刷取奖金
凭手机验证领取保险,因为手机验证码前台显示,所以可用其他人的手机号无限给自己上保险
通过修改参数中的手机号格式,来刷取优惠卷,如:原:1381234;可改为:861381234;+861381234;1381234!;1381234asdasd;或”1381234,1391111”;”1381234;139**1111”
兑换现金红包时,修改url里的金额参数及数量参数
可结合任意注册来刷取邀请所得奖金
积分购物,将数量调至负数
7.短信轰炸
发送验证码时,抓包,短时间内无限放包
8.任意注册
爆破验证码
修改返回包状态码
还可以通过修改返回包状态码来恶意注册已经注册过的账号
注册时,输入收到的验证码,然后点击提交时,将电话号码修改为其他的
0x03.楼兰博客案例总结
- 重置密码请求发到邮箱后,将url中的随机值置空,并修改uid的值(修改并执行成功的前提是未发起申请)
- csrf+信息泄露:csrf绑定邮箱,信息泄露增加链接可信度
- session覆盖:修改自己账号的正常操作,验证完成后跳转到重置密码页面,之后打开第二个页面输入目标的手机号或邮箱账号,不发送验证码,任意输入验证码,抓包,将返回包的状态值修改为验证通过的值
- 前面步骤正常走,到确认重置密码的地方,点击确认,抓包,将id修改为目标id
- 跳过验证身份的步骤,直接跳到重置密码的步骤上
- 重置用户一的密码时,在最后新密码发送至邮箱时,抓包,将id修改为用户二的,用户二重置的新密码就发到了用户