逻辑越权
逻辑越权漏洞是一种可能导致未经授权的访问和操作的安全漏洞。它通常涉及到应用程序在访问控制方面的不足,导致攻击者能够绕过正常的权限验证,执行其本不应具备的操作
漏洞成因
-
不足的身份验证: 如果应用程序在验证用户身份时存在漏洞,攻击者可能能够伪装成其他用户。
-
弱授权机制: 如果应用程序的授权机制不够强大,攻击者可能能够绕过权限检查执行敏感操作。
-
依赖客户端输入: 如果应用程序过度依赖客户端提供的输入进行访问控制决策,而不进行服务器端验证,就容易受到逻辑越权攻击。
水平越权
可以操作其他同级别的用户
原理
通过抓包查看后端接收的提交方式,GET、POST、COOKIE,看里面是否有类似ID的变量值传参,修改ID就能进入对应的用户页面
垂直越权
可以获得比当前更高的权限
前端产生的威胁
通过获取到管理员修改页面时的数据包,再登录普通用户,替换掉数据包中对应管理员身份的数据包,实现普通用户模拟管理员操作网页
后台只判断页面有没有登录,并没有判断用户级别
后端产生的威胁
当普通用户与管理员在同一张数据库表中,会加上类似usertype
字段进行身份验证
在访问网站数据包中对用户编号、组编号、类型编号等进行修改,就是越权测试
实战中会遇到:
- 将编号一类的数据进行加密:需逆向分析js代码中的加密方式,破解后才能修改
- 数据包带有token值:是否支持重复发包,删除是否有影响
未授权访问
目前网站上最多的漏洞,通过无级别用户来达到获取非本权限所能获取到的信息
数据篡改
常见参数篡改
商品编号ID、购买价格、购买数量、支付方式、订单号、支付状态
篡改方法
修改数据包关键参数
-
支付金额、数量所对应的参数位置
改负数、判断溢出值+1
-
用户对冲
把自己对应数据包的值,修改成别人的值,造成用别人的积分换自己的物品
-
订单对冲
抓取两个物品支付时的数据包,将金额大关键位置的修改成金额小的
-
支付口对冲
修改支付跳转地址,改成自己的支付地址——(天方夜谭)
优惠卷复用
提交订单不付款,取消订单后在创建订单,锁住优惠卷,再支付订单1,前提是订单1还能支付——(条件苛刻)
签到奖励
判断系统对签到日期的监控,是否是监控本机上的日期,修改本机日期即可
找回密码–绕过手机验证码
情况一
手机获取验证码和修改密码在一个网页上
-
验证码回显
发送验证码时会在respond中找到验证码,直接修改指定验证码位置即可
-
跳过步骤
假设有三个步骤
- 发送验证码
- 验证
- 重置密码
抓取最后一步的数据包,尝试能否直接从1跳到3
情况二
先提交验证码再跳转到修改密码页面
-
获取输入验证码后返回的错误和正确时的状态值,在BP中设置抓取回显信息,修改状态值
BP抓取回显信息为:右键–>Do intercept–>Response to this request
要求:必须以前端接收为准,以服务器为准的话,改不改没意义
网站验证码
前端验证
验证码整套流程在JS中实现,可以在源代码发现
通过BP抓数据包就能绕过验证,因为验证是在前端进行的,抓包抓的是从前端出来的数据
后端验证
在对验证码验证过后
- 销毁验证过的验证码
- 加上过期时间—session生成后,默认过期时间24分钟
如果没有设置以上两种方式,那么验证码可以重复使用
URL重定向
当网站有出现跳转别的地址的时候,比如login登录页面,这时将该登录地址的html源码保存下来,并修改该网站的url跳转,跳转到自己的刚下载的html页面,从而实现钓鱼
构造钓鱼代码
从下载到的源码中查看获取用户名,密码表单的name值,将name值以request方式接受并输出到文件中
完整url
网站地址
http://x.x.x.x/?url=login.php //会跳转到login.php,将这个页面的源码下载
payload
http://x.x.x.x/?url=自己利用login.php源码构造好的钓鱼网页 //这样会在不知不觉中让用户输入密码并截获