【发布时间】:2019-02-08 21:51:41
【问题描述】:
我正在尝试集思广益这种场景的潜在安全漏洞(顺便说一句,我已经提出了一个相关问题 several days ago,但是,从答案中,我意识到解释 EXACT 场景非常重要,因为很多由于这个原因,答案中的一些(有点)无关紧要。我还包括了迄今为止我发现的漏洞,以及如何缓解这些漏洞,因此我们将不胜感激。所以我们开始吧:
a) 整个系统将是一个“票务”系统,但不是普通票,而是“通行证”系统。含义:客户去订购一张“通行证”票,这使他可以在特定时间段内获得某些地方的某些特权(例如免费进入博物馆)。意思是,这是一张在 1-7 天(但不超过 7 天)后过期的票。
b) 用户的“流量”是:
- 用户访问网站,订购特定时间段的门票,这让他在特定地点(博物馆等)享有特权
- 成功下单后,网站会打印一个 6 个字母长的字符串(ID)。示例:
GFZ-GFY。有 26^6(约 3.08 亿)种潜在组合。当然,这些 ID 将存储在安全数据库中。 - 然后用户前往博物馆(或其他场所)并展示 6 个字母长的字符串。员工通过网络应用程序或向号码发送短信检查其有效性,立即获取有效性状态(在这两种情况下,代码将查询数据库以检查票的有效性)。
到目前为止,我发现了 2 个潜在问题:
a) 蛮力攻击
有 2 个“攻击面”会发生这种情况:
- 博物馆员工可以通过门控访问网络应用程序(以验证门票有效性)。我缓解这种情况的方法是将每个用户帐户的查找次数限制为每天 1000 次。
- 用户将能够检查其订单的状态。我将通过多种方式缓解这种情况:首先,该 URL 不是“公开的”,并且仅对购买门票的用户可用。其次,我将实施ReCaptcha v3,IP 禁止每小时超过 10 个不成功的请求。
- 一次“活动”票证的数量预计为 5000(在高峰期),正常情况下约为 500-1000,因此考虑到数以亿计的组合,这将需要付出巨大的努力攻击者暴力破解。
攻击者可以采取的第二种(也是更简单的)方法是简单地购买一张票并重新发布它,或者在线发布它以供任何人使用。我减轻这种情况的方法是:
- 博物馆对通行证的有效性进行核对后,如果再次核对,会提示:此通行证已在此地点核对,此时:[时间-日期]。
- 虽然我确实计划重复使用相同的代码,但我会确保两个周期之间至少有 90 天的时间。也许这样做有一些我不知道的漏洞。在“到期”日期后 90 天后,代码可能或可能不再使用。我要说的是,它将在可以使用的潜在(300+ 百万)代码的“池”中发布。也许这不是一个好主意?
- 将给客户(发送到一个地址,或指示取货)一张类似空白卡片的“票”,上面将写上代码(或者他必须用票上的笔)。这将使攻击更难进行,因为攻击者现在需要同时访问代码和可以打印具有相同材料的此类卡片的打印机。
您是否发现任何其他可以进行的潜在攻击?我目前的缓解方法有什么遗漏吗?
【问题讨论】:
标签: security authentication passwords privacy brute-force