对SRC逻辑漏洞挖掘的思考
- 1.限制购买逻辑漏洞
- 一人一单限制
- 差价活动购买限制
- 2.支付类逻辑漏洞
- 3.接口未授权逻辑漏洞
- 4.越权类逻辑漏洞
- 5.修改返回包进入后台
- 6.任意用户注册
- 7.重置任意用户
1.限制购买逻辑漏洞
一人一单限制
很多厂商都会搞一些活动,在享受优惠的时候,会标上用户只能购买一次或者只能充值一次vip的条件
程序员在开发的时候会忽悠掉用户可以在不支付前多次创建订单来突破这个限制
某智能云活动中对学生的优惠,学生可以特价购买一台服务器
此页面选择不同的配置同时创建订单(只要不要付款,可以无限创建账单而且成功购买)
差价活动购买限制
某会员充值界面,仅限一次购买
抓包得到订单路径:
这是订单路径
https://xxxxxxxx.com/xxxxxxxx/xx/SuperWap?qrcodeid=QR16352544942481583291107813
支付订单,发现支付完后订单不会消失
由于支付后会和微信签约自动续费会影响我们的测试,所以先关掉自动续费:
刷之前的订单支付路径,继续支付,可以无限使用首单优惠!
2.支付类逻辑漏洞
某度支付漏洞
订单后台逻辑是 总金额 = 单价 * 数量
,我们只需要修改单价即可
抓包修改单价发包:
购买成功!
总结,常见支付类漏洞:
- 无限创建首次优惠订单
- 修改支付的价格
- 修改订单数量
- 无限制试用
支付时进行抓包,找到支付关键的数据包可能一个支付操作有三四个数据包,我们要对数据包进行挑选。支付数据包中会包含很多的敏感信息(账号,金额,余额,优惠,订单ID)要尝试对数据包中的各个参数进行分析
3.接口未授权逻辑漏洞
某学校查询模块接口未做权限校验:
点击搜索🔍:
点击搜索会请求接口:
/smesis/xxx/xxxPagedataId=&pageNumber=0&pageSize=10&salePattern=Othe
可以通过接口查询全校教师、身份证、工号、手机号、出生年月:
4.越权类逻辑漏洞
越权漏洞是一种很常见的逻辑安全漏洞。 是由于服务器端对客户提出的数据操作请求过分信任,忽略了对该用户操作权限的判定,导致修改相关参数就可以拥有了其他账户的增、删、查、改功能,从而导致越权漏洞
1、隐藏的url实现权限管理
实现控制访问有些程序的管理员的管理页面只有管理员才显示,普通用户看不到,利用 URL 实现访问控制,但 URL 泄露或被恶意攻击者猜到后,这会导致越权攻击
2、引用对象直接查看
通过修改一下参数就可以产生水平越权,例如查看用户信息页面 URL 后加上自己的 id 便可查看,当修改为他人的 ID 号时会返回他人的信息,便产生了水平越权
3、多功能阶段
多阶段功能是一个功能有多个阶段的实现。例如修改密码,可能第一步是验证用户身份信息,号码验证码类的。当验证成功后,跳到第二步,输入新密码,很多程序会在这一步不再验证用户身份,导致恶意攻击者抓包直接修改参数值,导致可修改任意用户密码
4、静态文件
很多网站的下载功能,一些被下载的静态文件,例如 pdf、word、xls 等,可能只有付费用户或会员可下载,但当这些文件的 URL 地址泄露后,导致任何人可下载,如果知道 URL 命名规则,则会便利服务器的收费文档进行批量下载
5、平台配置错误
一些程序会通过控件来限制用户的访问,例如后台地址,普通用户不属于管理员组,则不能访问。但当配置平台或配置控件错误时,就会出现越权访问
某政府管理系统,普通用户弱口令: zhouli/123456
登录抓包,抓到这个接口/oupu_sx/role/perms/user/
,把这个13修改成356,即可垂直越权成管理员用户
一定要快,如果慢了会失败,失败的话重新登录重新改即可
5.修改返回包进入后台
某设备管理平台登录界面:
用户名和密码随便输入,然后用burpsuite抓包,修改response包:
Response头添加:(四个set-cookie)
Set-Cookie: 47.105.92.238081
Set-Cookie: 47.105.92.238081
Set-Cookie: 47.105.92.238081
Set-Cookie: 47.105.92.238081
内容修改为{"tag":1,"message":"success"}
放包即可绕过
登录成功,进入后台:
6.任意用户注册
短信验证码和手机号未绑定导致任意用户注册
A手机号码注册且发送的验证码可让B,C,D的手机号码使用且注册成功
得到注册验证码:
这里原手机号是A的,我把手机号替换成了B C D的
发现也可以注册:
7.重置任意用户
如果遇到重置密码是分几步走的(比如先验证验证码是否正确,然后再让你改密码), 这种可以注意验证验证码的响应数据包
像这里, 响应包没有出现任何可校验的信息,比如token,sign之类的, 百分之90存在重置任意用户的漏洞
输入别人账户,直接修改验证的响应包,进入页面重置即可: