Web安全测试中常见逻辑漏洞解析(实战篇)

逻辑漏洞挖掘一直是安全测试中“经久不衰”的话题。相比SQL注入、XSS漏洞等传统安全漏洞,现在的攻击者更倾向于利用业务逻辑层的应用安全问题,这类问题往往危害巨大,可能造成了企业的资产损失和名誉受损,并且传统的安全防御设备和措施收效甚微。今天漏洞盒子安全研究团队就与大家分享Web安全测试中逻辑漏洞的挖掘经验。

一、订单金额任意修改

解析

很多中小型的购物网站都存在这个漏洞。在提交订单的时候抓取数据包或者直接修改前端代码,然后对订单的金额任意修改。

如下图所示:

经常见到的参数大多为

  • rmb
  • value
  • amount
  • cash
  • fee
  • money

关于支付的逻辑漏洞这一块还有很多种思路,比如相同价格增加订单数量,相同订单数量减少产品价格,订单价格设定为负数等等。

预防思路

1.订单需要多重效验,如下图所演示。

2. 订单数值较大时需要人工审核订单信息,如下图所演示。

3. 我只是提到两个非常简单的预防思路,第二个甚至还有一些不足之处。这里需要根据业务环境的不同总结出自己的预防方式,最好咨询专门的网络安全公司。

二、验证码回传

解析

这个漏洞主要是发生在前端验证处,并且经常发生的位置在于

  • 账号密码找回
  • 账号注册
  • 支付订单等

验证码主要发送途径

  • 邮箱邮件
  • 手机短信

其运行机制如下图所示:

黑客只需要抓取Response数据包便知道验证码是多少。

预防思路

1.response数据内不包含验证码,验证方式主要采取后端验证,但是缺点是服务器的运算压力也会随之增加。

2.如果要进行前端验证的话也可以,但是需要进行加密。当然,这个流程图还有一些安全缺陷,需要根据公司业务的不同而进行更改。

三、未进行登陆凭证验证

解析

有些业务的接口,因为缺少了对用户的登陆凭证的效验或者是验证存在缺陷,导致黑客可以未经授权访问这些敏感信息甚至是越权操作。

常见案例:

1. 某电商后台主页面,直接在管理员web路径后面输入main.php之类的即可进入。

2. 某航空公司订单ID枚举

3. 某电子认证中心敏感文件下载

4.某站越权操作及缺陷,其主要原因是没对ID参数做cookie验证导致。

5. 实际上还有很多案例,这里就不一一例举了,但是他们都存在一个共同的特性,就是没有对用户的登陆凭证进行效验,如下图为例。

预防思路

对敏感数据存在的接口和页面做cookie,ssid,token或者其它验证,如下图所示。

四、接口无限制枚举

解析

有些关键性的接口因为没有做验证或者其它预防机制,容易遭到枚举攻击。

常见案例:

1. 某电商登陆接口无验证导致撞库

2. 某招聘网验证码无限制枚举

3. 某快递公司优惠券枚举

4. 某电商会员卡卡号枚举

5. 某超市注册用户信息获取

预防思路

1. 在输入接口设置验证,如token,验证码等。

  • 如果设定验证码,最好不要单纯的采取一个前端验证,最好选择后端验证。
  • 如果设定token,请确保每个token只能采用一次,并且对token设定时间参数。

2. 注册界面的接口不要返回太多敏感信息,以防遭到黑客制作枚举字典。

3. 验证码请不要以短数字来甚至,最好是以字母加数字进行组合,并且验证码需要设定时间期限。

4. 优惠券,VIP卡号请尽量不要存在规律性和简短性,并且优惠券最好是以数字加字母进行组合。

5. 以上这是部分个人建议,实际方案需要参考业务的具体情况。

五、cookie设计存在缺陷

解析

这里需要对其详细的说一下。我们先一个一个来吧。

Cookie的效验值过于简单。有些web对于cookie的生成过于单一或者简单,导致黑客可以对cookie的效验值进行一个枚举,如下图所示

根据上图,我们可以分析出,这家网站对于cookie的效验只单纯的采用了一组数字,并且数值为常量,不会改变,这样非常容易遭到黑客的枚举。甚至有一些网站做的更简单,直接以用户名,邮箱号或者用户ID等来作为cookie的判断标准。

2. cookie设置存在被盗风险

有很多时候,如果一个用户的cookie被盗取,就算用户怎么修改账号和密码,那段cookie一样有效。详情可以参考《BlackHat(世界黑帽大会)官方APP出现两个逻辑漏洞》。

其原理如下:

国内大部分厂商都不会把这个地方当作安全漏洞来处理,他们认为这个漏洞的利用条件是黑客必须要大批量获取到用户的cookie。虽然事实如此,但是这个也是一个安全隐患。

3.用户的cookie数据加密应严格使用标准加密算法,并注意密钥管理。

有一些厂商为了图方便,没有对用户的cookie做太多的加密工作,仅仅是单纯的做一个静态加密就完事了。我之前就碰到一个,可以为大家还原一下当时的场景。

当时我看到cookie中有个access token参数,看到value后面是两个等号,习惯性的给丢去base64解码里面,发现解出来后是我的用户名。因此只要知道一个人的用户名就可以伪造对方的cookie,登陆他人账户。

4.还有多个案例不再做重复说明,大家可以深入研究一下cookie中的逻辑漏洞。但是cookie中的漏洞大多都是属于一个越权漏洞。越权漏洞又分为平行越权,垂直越权和交叉越权。

  • 平行越权:权限类型不变,权限ID改变
  • 垂直越权:权限ID不变,权限类型改变
  • 交叉越权:即改变ID,也改变权限

如下图所示:

 

预防思路

1.cookie中设定多个验证,比如自如APP的cookie中,需要sign和ssid两个参数配对,才能返回数据。

2.用户的cookie数据加密应严格使用标准加密算法,并注意密钥管理。

3.用户的cookie的生成过程中最好带入用户的密码,一旦密码改变,cookie的值也会改变。

4.cookie中设定session参数,以防cookie可以长时间生效。

5.还有很多方法,不再一一例举,请根据业务不同而思考。

六、找回密码存在设计缺陷

解析

1.auth设计缺陷

经常研究逻辑漏洞的人可能会对以下URL很熟悉


  1. www.xxx.com/resetpassword.php?id=MD5 

用户修改密码时,邮箱中会收到一个含有auth的链接,在有效期内用户点击链接,即可进入重置密码环节。而大部分网站对于auth的生成都是采用rand()函数,那么这里就存在一个问题了,Windows环境下rand()最大值为32768,所以这个auth的值是可以被枚举的。

如下面这个代码可以对auth的值做一个字典。

然后重置某个账号,并且对重置链接内的auth进行枚举。

整个漏洞的运作的流程图如下:

2.对response做验证

这个漏洞经常出现在APP中,其主要原因是对于重置密码的的验证是看response数据包,由于之前的案例没有截图,只能画个流程图给大家演示一下。

3.《密码找回逻辑漏洞总结》这篇文章很全面的总结了密码找回漏洞的几个具体思路和分析,这里我就不再继续滚轮子了。

预防思路

1.严格使用标准加密算法,并注意密钥管理。

2.在重置密码的链接上请带入多个安全的验证参数。

七、单纯读取内存值数据来当作用户凭证

解析

实际上这个应该算作一个软件的漏洞,但是因为和web服务器相关,所以也当作WEB的逻辑漏洞来处理了。最能当作例子是《腾讯QQ存在高危漏洞可读取并下载任意用户离线文件(泄漏敏感信息)》这个漏洞,但是我相信这种奇葩的漏洞不一定只有腾讯才有,只是还没人去检测罢了。

产生这个漏洞的主要原因是程序在确定一个用户的登陆凭证的时候主要是依靠内存值中的某个value来进行确认,而不是cookie。但是内存值是可以更改和查看的。其流程图如下:

预防思路

1. 走服务器端的数据最好做cookie验证。

2. 我不反对直接在进程中确定用户的登陆凭证,但是请对进程进行保护,或者对进程中的value做加密处理。

总结

以上见到的只是几个比较经典的和常见的逻辑漏洞,这些逻辑漏洞也是程序开发人员和安全检测人员需要留意的。

作者:漏洞盒子

来源:51CTO

时间: 2024-10-26 10:47:50

Web安全测试中常见逻辑漏洞解析(实战篇)的相关文章

Web开发测试中的18个关键性错误

前几年,我有机会能参与一些有趣的项目,并且独立完成开发.升级.重构以及新功能的开发等工作. 本文总结了一些PHP程序员在Web开发中经常 忽略的关键错误,尤其是在处理中大型的项目上问题更为突出.典型的错误表现在不能很好区分各种开发环境和没有使用缓存和备份等. 下面以PHP为例,但是其核心思想对每一个Web程序员都是适用的. 应用程序级别的错误 1.在开发阶段关闭了错误报告 我唯一想问的是:为什么?为什么在开发的时候要关闭错误报告? PHP有很多级别的错误报告,在开发阶段我们必须将它们全部开启.

应用系统中常见报表类型解析

根据报表的布局.数据源结构.打印方式和数据分析方式,可将应用系统中的报表分为以下类型: 清单报表 图表报表 分栏报表 分组报表 交叉报表 并排报表 主从报表 套打报表 交互式报表   (一)清单报表 清单报表主要用于列举数据,比如:销售清单.客户清单.设备清单.费用清单.商品清单等.在实现这类报表时可用到表格.列表.文本框.图像.条码等控件.实现步骤. 基于表格布局的清单报表 基于任意布局的清单报表 (二) 图表报表 图表在应用系统中随处可见,将数据以图表的方式呈现,可更好的分析数据之间的关系,

浅谈Symphony Spreadsheet在报表测试中的应用

报表测试中常见数据对比 在 ERP 和 BI 项目测试过程中,对报表数据进行校验是非常有必要的,常见的数据对比场 景如下:从系统导出的 Excel 格式的报表数据,然后再给一份业务数据的源数据,要求校验报表数据是否正确.报表的数据量 通常都非常庞大,这些数据通常都是通过聚合汇总以及其它逻辑运算得出的结果,源数据量也很大,源数据和报表数据的条数也 不一定相等,而且源数据通常会有很多张表,仅仅是通过肉眼观察源数据和报表数据是否一致,会导致测试工作量巨大,效率低 下,风险不易控制. 那么接下来就一起探

浅谈Symphony Spreadsheet在Excel报表测试中的应用

读者通过阅读本文,可以学习到 Symphony Spreadsheet 简单公式的书写,以及一些使用技巧,可以快速的运用到报表测试中,降低测试复杂度,有效提高测试结果准确性. 报表测试中常见数据对比 在 ERP 和 BI 项目测试过程中,对报表数据进行校验是非常有必要的,常见的数据对比场景如下:从系统导出的 http://www.aliyun.com/zixun/aggregation/16544.html">Excel 格式的报表数据,然后再给一份业务数据的源数据,要求校验报表数据是否正

阐述Checklist(检查清单)在Web软件产品测试中的应用

Checklist 汇集了有经验的http://www.aliyun.com/zixun/aggregation/9621.html">测试人员总结出来的最有效的测试想法,可以直接有效的指导测试工作,开阔测试人员的思路,能够快速的发现产品的缺陷并实现较好的测试覆盖,更重要的是该 Checklist 在不同的项目中具有很强的通用性.该系列文章中,将在每个部分给出具体的有效的 Checklist 并提供相关应用实例,以便于您的理解和应用. 在 Web 开发测试中,导航和链接为用户提供了丰富的操

Web开发中常见的安全缺陷及解决办法

web|安全|解决 一.不能盲目相信用户输入 二.五种常见的ASP.NET安全缺陷 2.1 篡改参数 2.2 篡改参数之二 2.3 信息泄漏 2.4 SQL注入式攻击 2.5 跨站脚本执行 三.使用自动安全测试工具 正文: 保证应用程序的安全应当从编写第一行代码的时候开始做起,原因很简单,随着应用规模的发展,修补安全漏洞所需的代价也随之快速增长.根据IBM的系统科学协会(Systems Sciences Institute)的研究,如果等到软件部署之后再来修补缺陷,其代价相当于开发期间检测和消除

软件测试中一个智能的 Web 界面测试系统

Web2.0 技术使 Web 界面更加丰富多彩,使信息交流更加灵活,同时也使得相关的 Web 技术测试需求越来越多.那么,如何提高 Web 界面的测试效率,保证新技术得到高质量应用?是否可以让测试人员脱离枯燥地点击鼠标,让机器自动地根据脚本运行?随着项目需求的变化,能否有一个比较快速地配置管理测试任务的方法?所有这些都可以通过一个智能的 Web 界面测试系统来实现.这个系统结合 TestNG, Ant, Selenium 还有 Flex 技术,实现方式简单.运行高效灵活,对单元测试,功能测试和集

软件Web测试中应用性能测试的探析

一.引言 跟着收集手艺的迅速成长,尤其是WEB及其应用轨范的普及,各类基于WEB的应用轨范以其便利.快速,易操作等特点不竭成闻敉件开发的重点.与此同时,跟着需求量与应用规模的不竭扩年夜,对WEB应用软件的正确性.有用性和对WEB处事器等方面都提出了越来越高的机能要求,对WEB应用轨范进行有用的系统的测试也逐渐成为人们研究的主要课题. 今朝可以见到各类WEB处事器平台,然而按照Mereury的研究陈述,98%的WEB处事器都没能达到人们所期望的机能,平均只能阐扬人们所期望机能的1/6摆布.WEB机

浅谈网站建设中常见漏洞

经常有人问,同样是试图通过建设网站打通网络营销道路,为什么有些企业接电话接到手软,有些企业网站建设完成上线后却迟迟无人问津呢? 作为多年专业经验的网站建设团队,灵动网络就部分无人问津的企业网站现状共同点进行一个初步分析: 使用大篇幅Flash作为网站设计主要元素 将Flash做为网站设计的主要元素,利弊相当明显.不得不承认,Flash网站好看,能够提高企业形象.尤其是服装.美容.化妆品等行业.但是Flash不一定能够体现出更多具有价值的信息,最重要的是,搜索引擎的抓取蜘蛛目前并不能识别Flash