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

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

简要:

越权漏洞是比较常见的漏洞类型,越权漏洞能够理解为,一个正常的用户A一般只可以对本身的一些信息进行增删改查,可是因为程序员的一时疏忽,对信息进行增删改查的时候没有进行一个判断,判断所须要操做的信息是否属于对应的用户,致使用户A能够操做其余人的信息。​php

逻辑漏洞挖掘一直是安全测试中“经久不衰”的话题。相比SQL注入、XSS漏洞等传统安全漏洞,如今的攻击者更倾向于利用业务逻辑层的应用安全问题,这类问题每每危害巨大,可能形成了企业的资产损失和名誉受损,而且传统的安全防护设备和措施收效甚微。Web安全测试中逻辑漏洞的挖掘经验:html

一:订单金额任意修改

解析

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

以下图所示:程序员

常常见到的参数大多为:web

rmb 、value 、amount 、cash 、fee 、money 等算法

关于支付的逻辑漏洞这一块还有不少种思路,好比相同价格增长订单数量,相同订单数量减小产品价格,订单价格设定为负数等等。后端

预防思路

1.订单须要多重较验,以下图所演示:安全

2. 订单数值较大时须要人工审核订单信息,以下图所演示。服务器

二:验证码回传

解析

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

帐号密码找回 、帐号注册 、支付订单等

验证码主要发送途径

邮箱邮件 、手机短信

其运行机制以下图所示:

黑客只须要抓取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卡号请尽可能不要存在规律性和简短性,而且优惠券最好是以数字加字母进行组合。

等。

五: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能够长时间生效。

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

解析

1.auth设计缺陷

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

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作加密处理。

总结

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

若是对逻辑漏洞感兴趣的能够查看如下的扩展阅读:

《业务安全漏洞挖掘概括总结》

《应用程序逻辑错误总结》

《密码找回功能缺陷》

《支付漏洞的常见类型 [最新修改]》

《个人越权之道》

《个人通行你的证》

 

*原博文地址:http://blog.csdn.net/hydrakingbo/article/details/52388183

*文章原创做者: ArthurKiller @漏洞盒子安全研究团队,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)

相关文章
相关标签/搜索