十大漏洞之逻辑漏洞

十大漏洞之逻辑漏洞在十大漏洞中,逻辑漏洞被称为“不安全的对象引用,和功能级访问控制缺失”。现如今,越权和逻辑漏洞占用比例比较高,包括任意查询用户信息,重置任意用户密码,验证码爆破等。逻辑漏洞:常见的逻辑漏洞:交易支付,密码修改,密码找回,越权修改,越权查询,,突破限制等各种逻辑漏洞不安全的对象引用指的是平行权限的访问控制缺失A,B同为普通用户,他们之间彼此之间的个人资料应该相互保密的,A的资…

大家好,又见面了,我是你们的朋友全栈君。

在十大漏洞中,逻辑漏洞被称为“不安全的对象引用,和功能级访问控制缺失”。现如今,越权和逻辑漏洞占用比例比较高,包括任意查询用户信息,重置任意用户密码,验证码爆破等。

逻辑漏洞:

常见的逻辑漏洞:

交易支付,密码修改,密码找回,越权修改,越权查询,,突破限制等各种逻辑漏洞

不安全的对象引用指的是平行权限的访问控制缺失

A,B同为普通用户,他们之间彼此之间的个人资料应该相互保密的,

A的资料如果被B用户利用程序访问控制的缺失而已查看,这就是平行权限的关系。

功能级别访问控制缺失指的是垂直权限的访问控制缺失

A是普通用户,B是管理员,B的页面登录访问需要密码和token.

A账号能直接输入管理页面URL的方式绕过管理员登录限制查看管理员页面,这个时候A,B就是垂直关系。

逻辑漏洞的挖掘:

基本步骤:

1,先尝试正确操作流程,记录不同找回方式的所有数据包

2,分析数据包,找到有效数据部分

3,推测数据构造方法

4,构造数据包验证猜测

比如说,加入购物车,我是不是可以修改购买的数量,修改成负数,商品的价格是不是可以修改;

确认购物车信息时,是不是可以修改商品的数量为负数,是不是可以突破打折的限制;

输入运费,可不可以被修改;

确认订单后,能不能直接修改支付金额,可否不支付直接跳转到交易成功;

逻辑漏洞的利用:

用户凭证暴力破解:

四位或者六位的纯数字,无需验证码,直接burp爆破;

四位或者六位的纯数字,需要验证码,但是验证码没有及时撤销,也可以直接burp爆破;

四位或者六位的纯数字,需要验证码,但是验证码没有及时撤销,也可以直接burp爆破;

如果验证不是很验过,burp抓包,在后面手机号后面添加特殊字符绕过第一次防御

防御—-对它提交的次数做一个过滤

防御—-只要尝试超过三次,就加入黑名单

返回凭证:

burp抓包的时候,url返回验证码及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,找回逻辑错误:

若恶意用户A用15123333333找回密码,此时收到验证码但不使用

此时恶意用户A再用受害者B的手机号找回密码

用户A在B的验证表单填入自己收到的验证码,发送

此时跳转的修改密码页面修改的就是用户B的密码

9,无需旧密码验证:

修改密码,发现不需要输入原来的旧密码,直接设置新的密码,

这个时候就直接存在了csrf漏洞,构造链接,直接就修改了

php?token=2&username=test&password=tst

支付漏洞:攻击者通过修改交易金额、交易数量等从而利用漏洞,如Burp修改交易金额、使交易数量为负数或无限大等。

1、支付过程中可直接修改数据包中的支付金额

金额后端没有做校验,传递过程中也没有做签名,导致可以随意篡改金额提交。

2、没有对购买数量进行负数限制,购买数量无限大,

无限大时则程序可能处理出错,从而实现0金额支付

3、请求重放,实现”一次购买对此收货”

4、其他参数干扰

在支付时直接修改数据包中的支付金额,实现小金额购买大金额商品

修改购买数量,使之为负数,可购买负数量商品,从而扣除负积分,即增加积分,

或使购买数量无限大,无限大时则程序可能处理出错,从而实现0金额支付

请求重放,在购买成功后重放请求,可实现”一次购买对此收货”

基本案例:案例1

会员注册用户:

test

test

验证码0566

登录密码没有验证码,可以直接暴力破解用户名和密码

因为服务端没有及时销毁,就可以使用burp批量注册

每个参数多可能存在逻辑漏洞,修改参数,看能不能提交成功。

burp发送到爆破,变量,username,password,email

然后加载3个字典,批量注册了,有木有,发现响应都是200,证明存在这个漏洞

这个时候所有的用户都可以登陆

修改密码:

1234567

1234567

拦截数据包,查看参数值,发现当我们把用户修改成别人的,然后可以修改成功,这个时候越权漏洞就产生了。

投票系统:

我们抓包,删除cookie信息,或者是ip地址判断的

然后使用burp跑字典

案例二

后台地址,访问,提示不能直接访问,查看源代码,发现后台是referer判断,

这个容易绕过,burp抓包,然后进到了后台页面,

然后找到数据备份,找到referer,

然后普通用户,添加referer伪造地址,

接着看到了script限制,我们使用chrome,不允许script,然后重新访问

就直接突破了,这个不能使用firebox

参数越权

地址管理处,修改任意收获信息,造成敏感信息泄露

地址管理—修改—burp抓到数据包get链接—有一个address_id,是收货人的地址对应的id–将参数替换成任意值—这个时候发现收货人的地址发生改变了,修改了收货人的信息了。

建议是,对用户修改以及查看地址进行权限校验,避免越权操作,如果越权,直接错误页面你,或者账户退出

注册一个账号,邮箱需要激活才能登陆—点击重新发送-burp抓包,在uid处,修改参数值,可以发送邮箱炸弹。

修复建议:

对激活邮件限制发送次数

越权其他用户信息:

登录抓取cookie信息,有手机号码在Cookie

这个时候,我们修改cookie中的手机号,查看其他用户的信息

参数越权:

直接访问一个页面,能看到其他用户的订单号

注册工程中,返回全部用户的注册信息

当我用别人邮箱注册的时候,爆出来了别人的信息,

我们只需要别人的用户,就可以了

服务费的绕过:

点击还款,然后get抓包,修改参数,为0或者1,就直接绕过,还款成功。

积分数值允许喂负数

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/139843.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • javaquartz定时任务设置时间,赶紧收藏起来![通俗易懂]

    javaquartz定时任务设置时间,赶紧收藏起来![通俗易懂]Mybatis入门1、什么是Mybatis?MyBatis本是apache的一个开源项目iBatis,2010年这个项目由apachesoftwarefoundation迁移到了googlecode,并且改名为MyBatis。2013年11月迁移到Github。MyBatis是一款优秀的持久层框架,它支持定制化SQL、存储过程以及高级映射。MyBatis避免了几乎所有的JDBC代码和手动设置参数以及获取结果集。MyBatis可以使用简单的XML或注解来配置和映射原生信息,

  • requests爬取百度音乐

    requests爬取百度音乐

    2021年11月19日
  • 掉坑了!GROUP_CONCAT函数引发的线上问题

    怕什么真理无穷,进一步有近一步的欢喜本文分享一篇在工作遇到的一个问题,关于MySQL GROUP_CONCAT函数导致的问题。希望能帮忙到你。开头聊几句一年又一年,2020这一年眼看就要…

  • springboot全局字符编码设置(解决乱码问题)

    springboot全局字符编码设置(解决乱码问题)有时候我们会发现这种问题,明明已经设置了字符编码过滤器但是还会有乱码的情况出现,这个问题令我们很是头疼,我之前也遇到过这种情况。那怎么解决呢?springboot编码格式设置有三种方式,不管使用哪种方式,总有一款适合你。1、在application.properties中设置#编码格式spring.http.encoding.force=truespring.http.encod…

  • java 日期格式化– SimpleDateFormat 的使用。字符串转日期,日期转字符串

    java 日期格式化– SimpleDateFormat 的使用。字符串转日期,日期转字符串日期和时间格式由日期和时间模式字符串指定。在日期和时间模式字符串中,未加引号的字母’A’到’Z’和’a’到’z’被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号(‘)引起来,以免进行解释。所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串白话文的讲:这些A——Z,a——z这些字母(不被单引号包围的)会被特殊处理替换为对应的日期时间,其他的字…

  • linux fork函数浅析

    linux fork函数浅析

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号