十大漏洞之-逻辑漏洞
[TOC]
在十大漏洞中,逻辑漏洞被称为“不安全的对象引用,和功能级访问控制缺失”。现如今,越权和逻辑漏洞占用比例比较高,包括任意查询用户信息,重置任意用户密码,验证码爆破等。
逻辑漏洞:
常见逻辑漏洞:
交易支付,密码修改,密码找回,越权修改,越权查询,突破限制等各种逻辑漏洞
不安全的对象引用指:平行权限的控制缺失
A,B同为普通用户,他们之间彼此之间的个人资料应该相互保密的。\n\nA的资料如果被B用户利用程序访问控制的缺失而已查看,这就是平行权限的关系。
功能级别访问控制缺失:垂直权限的访问缺失
A是普通用户,B是管理员,B的页面登录访问需要密码和token.\n\nA账号能直接输入管理页面URL的方式绕过管理员登录限制查看管理员页面,这个时候A,B就是垂直关系。
逻辑漏洞的挖掘:
基本步骤:
1,先尝试正确操作流程,记录不同找回方式的所有数据包
2,分析数据包,找到有效数据部分
3,推测数据构造方法
4,构造数据包验证猜测
例子:
1、比如说,加入购物车,我是不是可以修改购买的数量,修改成负数,商品的价格是不是可以修改;
2、确认购物车信息时,是不是可以修改商品的数量为负数,是不是可以突破打折的限制;
3、输入运费,可不可以被修改;
4、确认订单后,能不能直接修改支付金额,可否不支付直接跳转到交易成功;
逻辑漏洞利用:
用户凭证暴力破解:
- 四位或者六位的纯数字,无需验证码,直接burp爆破;
- 四位或者六位的纯数字,需要验证码,但是验证码没有及时撤销,也可以直接burp爆破;
如果验证不是很验过,burp抓包,在后面手机号后面添加特殊字符绕过第一次防御
防御 --- 对它提交的次数做过滤\n\n防御----只要尝试超过三次,就加入黑名单
返回凭证:
检测Burp返回的数据包,是否包含验证码,token,时间戳的md5,修改token为1或0,绕过凭证;
密码找回漏洞:
基本步骤
- 先尝试正确的密码找回流程,记录不同找回方式的所有数据包
- 分析数据包,找到有效数据部分
- 推测数据构造方法
- 构造数据包验证猜测
简单案例:
1.邮箱验证
- 一般是点击邮件中的链接后会转跳到修密码的页面,这就需要分析链接的token构造了;
可以考虑是时间戳md5、用户名或邮箱和随机字符串md5等,一般是类似如下链接:
php?u=xiaoming&token=MTIzQHFxLmNvbQ== php?id=374&token=2ad64bf14c714dbce88c7993663da7da
- 当构造相应链接时就可以重置任意用户的密码
2.手机验证码:
- 短信找回一般就是4位或6位验证码,暴力猜测吧或(返回包)
3.无需验证,直接修改:
- 在修改密码时跳过选择找回方式,直接访问修改密码的页面进行修改
4.本地验证:
- 随意输入一个验证码,开Burp抓包,forward,抓返回包,返回包里可能有一个token字段,
- 若token的值为1则跳转到修改密码页面,所以只要修改返回包即可
5.服务端将验证码返回给浏览器:
- 在点击获取验证码时,服务器会将验证码发送给浏览器,抓包即可
6.验证码直接出现在url中:
- 当点击获取验证码时发出的请求链接中直接有code,或者直接在源代码里面。
7.密保问题找回:
- 回答密保问题,有时一些答案就在html源码里
8.找回逻辑错误:
1.若恶意用户A用15123333333找回密码,此时收到验证码但不使用
2.恶意用户A再用受害者B的手机号找回密码
3.用户A在B的验证表单填入自己收到的验证码,发送
4.此时跳转的修改密码页面修改的就是用户B的密码
9.无需旧密码验证:
- 修改密码,发现不需要输入原来的旧密码,直接设置新的密码,
这个时候就直接存在了csrf漏洞,构造链接,直接就修改了
php?token=2&username=test&password=tst
支付漏洞:
攻击者通过修改交易金额、交易数量等从而利用漏洞,如Burp修改交易金额、使交易数量为负数或无限大等。
1、支付过程中可直接修改数据包中的支付金额
- 金额后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额提交。
2、没有对购买数量进行负数限制,购买数量无限大
- 无限大时则程序可能处理出错,从而实现0金额支付
3、请求重放,实现”一次购买对此收货”
4、其他参数干扰
- 在支付时直接修改数据包中的支付金额,实现小金额购买大金额商品
- 修改购买数量,使之为负数,可购买负数量商品,从而扣除负积分,即增加积分,
- 或使购买数量无限大,无限大时则程序可能处理出错,从而实现0金额支付
- 请求重放,在购买成功后重放请求,可实现"一次购买对此收货"
基本案例:
案例1:
会员注册用户:
test<br>test<br>验证码0566\n\n登录密码没有验证码,可以直接暴力破解用户名和密码\n\n因为服务端没有及时销毁,就可以使用burp批量注册\n\n每个参数多可能存在逻辑漏洞,修改参数,看能不能提交成功。\n\nburp发送到爆破,变量,username,password,email\n\n然后加载3个字典,批量注册了,有木有,发现响应都是200,证明存在这个漏洞\n\n这个时候所有的用户都可以登陆
修改密码:
1234567<br>1234567\n\n拦截数据包,查看参数值,发现当我们把用户修改成别人的,然后可以修改成功,这个时候越权漏洞就产生了。
注册-判断用户:
注册用户时,页面jquery后台交互验证用户是否存在,查看返回包\n\n存在用户信息
投票系统:
我们抓包,删除cookie信息,或者是ip地址判断的\n\n然后使用burp跑字典
案例2
后台地址,访问,提示不能直接访问,查看源代码,发现后台是referer判断,
这个容易绕过,burp抓包,然后进到了后台页面,
然后找到数据备份,找到referer,
然后普通用户,添加referer伪造地址,
接着看到了script限制,我们使用chrome,不允许script,然后重新访问
就直接突破了,这个不能使用firebox
参数越权:
地址管理处,修改任意收货信息(用户ID),造成敏感信息泄露
地址管理---修改---burp抓到数据包get链接---有一个address_id,是收货人的地址对应的id--将参数替换成任意值---这个时候发现收货人的地址发生改变了,修改了收货人的信息了。
建议是,对用户修改以及查看地址进行权限校验,避免越权操作,如果越权,直接错误页面你,或者账户退出
注册一个账号,邮箱需要激活才能登陆---点击重新发送-burp抓包,在uid处,修改参数值,可以发送邮箱炸弹。
修复建议:
对激活邮件限制发送次数
越权其他用户
登录抓取cookie信息,有手机号码在Cookie
这个时候,我们修改cookie中的手机号,查看其他用户的信息
服务费的绕过:
点击还款,然后get抓包,修改参数,为0或者1,就直接绕过,还款成功。\n\n积分数值允许喂负数
还不快抢沙发