业务逻辑问题是一种设计缺陷。逻辑缺陷表现为设计者或开发者在思考过程中做出的特殊假设存在明显或隐含的错误。精明的攻击者会特别注意目标应用程序采用的逻辑方式,设法了解设计者与开发者做出的可能假设,然后考虑如何攻破这些假设。黑客挖掘逻辑漏洞有两个重点,就是业务流程和HTTP/HTTPS请求篡改。

逻辑错误分类:

1.欺骗密码找回功能
程序根据一个验证码来确定是用户本人,但是攻击者可以暴力破解验证码。
2.规避交易限制
攻击者篡改数据报,使得购买的商品为负数,或者商品价格为负数。
3.越权缺陷
攻击者更改数据包中指示用户的id,来访问他人敏感信息或者冒充他人发布信息。
4.cookies和session的问题
攻击者在知道用户ID的前提下,然后构造一个cookies或让session值为true就可以绕过这样的认证。
5.顺序执行缺陷(强制浏览)
攻击者在网购的过程中绕过支付过程,直接从放入购物车步骤进入填写收货地址的步骤,这样的话就可以0元购物了。

实例1:电视台网站的Web2.0

在北加州,某电视台的网站为了Web2.0化,开发了一个新的功能:允许网友们提供当地的天气信息,该信息将在电视新闻中滚动播出。为了防止垃圾信息,网友们提供的信息是经过人工审核后才播出的。
但是这套系统在设计时还允许网友们对信息进行编辑。此处存在一个逻辑漏洞:审核通过后的信息,如果被用户重新编辑了,不会再次进行审核,也会直接发送到电视新闻的滚动条中。于是不少人利用这一逻辑漏洞,在电视新闻中发送各种垃圾信息。

实例2:在线竞拍

某家在线购物网站为了对抗密码暴力破解,规定短时间内帐户登录失败5次,就将锁定帐户一个小时。该网站的业务中,提供了一个在线竞拍的功能,用户可以给喜欢的商品出价,后来者必须给出一个更高的价格。在拍卖时间截止后,商品将为出价高者所得。某黑客在给商品出价后,在网站上继续观察谁出了一个更高的价格,当他发现有人出价更高时,就去恶意登录这个用户的帐户:当登录失败次数达到5次,该帐户就被系统锁定了。订单系统和帐户安全系统是相关联的,当订单系统发现帐户被锁定后,该用户的出价也同时作废。这样,黑客就能以极低的价格,获取他所想竞拍的物品。