业务逻辑漏洞探索之绕过验证

本文中提供的例子均来自网络已公开测试的例子,仅供参考。

本期带来绕过验证漏洞。为了保障业务系统的安全,几乎每个系统都会存在各种各样的验证功能。常见的几种验证功能就包括账号密码验证、验证码验证、JavaScript数据验证及服务端数据验证等等,但程序员在涉及验证方法时可能存在缺陷导致被绕过,于是斗哥总结了以下几种绕过验证的姿势和大家一起讨论讨论~

客户端校验绕过

客户端校验是常见的一种校验方式,也就是在客户端校验用户的输入,将校验结果作为参数发送至服务端,或利用前端语言限制用户的非法输入和操作。面对此类的校验方法可以通过修改前端语言或者在传输中对参数进行篡改来绕过验证。

举个栗子:

a). 某系统需要购买才能观看视频,不同的课程以ID划分。

b). 发现是否付费只靠前端js控制,更改courseID就可以看到不同的课程,recordURL就是视频播放的链接,无需登录即可播放。

c). 根据播放地址中的videoCode,可获取视频下载地址:

http://*.*.*.*/v3/resource/video/queryurl?jsoncallback=cb&quality=3&audioIndex=0&types=1&videoCode={videoCode}

所得urls为视频下载地址。

d). 通过脚本,可将全站视频下载下来。

客户端验证信息泄露

程序员在编写验证程序时有可能会将验证信息直接泄露到客户端,攻击者就可以通过分析服务端的返回数据直接获得关键的验证信息从而完成验证。

举个栗子:

某免费wifi连接时需要使用发送到手机的密码进行验证,抓取发送密码的数据包时,发现密码返回客户端,导致任意全网账号可以登录联网。

客户端流程控制绕过

程序员在编写验证程序时有可能会验证结果返回到客户端,由客户端根据服务端提供的验证结果进行下一步操作,攻击者可以通过篡改验证结果或直接执行下一步操作实现绕过。

举个栗子:

a). 某系统重置密码需要三个步骤,首先要输入图片验证码。

b). 然后需要通过短信验证码验证身份。

c).访问http://*.*.*.*/a/user/findPasswordSetp 直接跳到重置密码的页面。

d). 可成功修改密码密码。

操作目标篡改绕过

如果某操作采用了连续身份校验机制或身份校验过程与操作过程分离,可以尝试在身份验证过程中替换身份校验对象或操作对象实现绕过验证。

举个栗子:

a). 修改某系统的绑定手机。

b). 选择免费接收短信校验码修改。

c). 将修改的手机号改为自己的手机号码。

d). 通过修改的手机号码收到的校验码修改手机号。

e). 发现可以成功修改成新的手机号。

参数篡改

程序猿小哥哥在编写验证程序时有可能会对验证码字段进行正确性校验,但当验证码字段不存在或为空时就直接通过校验。

举个栗子:

a).某系统存在绕过验证漏洞,抓取登录的数据包。

b).删除验证码字段(securityCode)进行爆破。

c). 爆破成功,并可以使用爆破出来的账号密码进行登录。

辅助验证功能绕过

为了验证用户身份或者避免攻击者使用自动化工具进行批量操作,应用程序可能会采用辅助验证功能,常见的辅助验证功能包括图片验证码、短信验证码、邮箱验证,这些功能在设计时如果存在缺陷则可以被绕过,导致辅助验证功能失效。

举个栗子:

a). 访问某系统,一开始页面无验证码。

b). 输错一次之后,出现验证码。

c). 尝试进行爆破,抓取第一次无验证码的数据包,发现会提示需要验证码。

d). 多次尝试之后发现,验证码是通过cookie中的PHPSESSID来判断的。

e). 修改PHPSESSID后成功绕过验证码限制。

f). 成功爆出账号。

好啦,斗哥对于绕过验证的总结就到这里啦,对于绕过验证的修复斗哥有一点点建议:

1.所有验证在服务端进行,验证问题的答案不能以任何形式返回客户端中(如图片验证码答案、短信验证码、验证问题答案等)。

2.验证结果及下一步跳转操作由服务端直接进行。

3.应尽可能避免采用连续身份验证机制,无论采用何种验证机制,只有当所有的数据输入以后,才进行身份验证数据的验证。

原文发布于微信公众号 - 漏斗社区(newdooneSec)

原文发表时间:2018-11-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小夜博客

Linux最好用远程管理 xshell

7628
来自专栏企鹅号快讯

Tomcat的设置HTTP页面自动跳转到HTTPS

HTTP转换到HTTPS常见的解决方案是部署SSL证书来升级。只有正确部署了SSL证书才能使用安全的HTTPS。但有时候,客户端使用HTTP进行访问时,HTTP...

3605
来自专栏博客园

什么是JWT(JSON WEB TOKEN)

转自于:http://www.jianshu.com/p/576dbf44b2ae

2272
来自专栏编程坑太多

『高级篇』docker之kubernetes理解认证、授权(37)

为了解决上面说的问题,kubernetes并不需要自己想办法,毕竟是网络安全层面的问题,是每个服务都会遇到的问题,业内也有成熟的方案来解决。这里我们一起了解一下...

1182
来自专栏知晓程序

如何搭建微信小程序 HTTPS 服务器?只需三个步骤

8332
来自专栏自由而无用的灵魂的碎碎念

详解windows vista的bitlocker加密以及windows 7的bitlocker to go技术

之前,讨论了windows vista下的EFS加密技术,现在来讨论一下windows vista下特有的bitlocker加密和windows 7下的bitl...

1273
来自专栏我的博客

电子邮件系统原理以及相关协议

一个简单的邮件系统,应该包含三部分:首先是邮件服务器、用户代理、邮件传送协议。 邮件服务器:平时我们使用qq邮箱,新浪邮箱,网易邮箱,gmail等都是邮件服务器...

3333
来自专栏编程

7个来保护服务器的安全对策

设置基础架构时,启动和运行应用程序通常是您最关心的问题。但是,使您的应用程序正常运行而不解决基础架构的安全需求可能会导致灾难性的后果。

3690
来自专栏FreeBuf

ct-exposer:通过搜索CT日志发现子域

证书透明度(Certificate Transparency)是谷歌力推的一项拟在确保证书系统安全的透明审查技术。其目标是提供一个开放的审计和监控系统,可以让任...

1222
来自专栏Android 开发者

Android P 安全性更新

Android P 引入了若干可提升应用和运行应用的设备安全性的功能。 本页面介绍对第三方应用开发者最重要的变化,需要他们牢记在心。

1672

扫码关注云+社区

领取腾讯云代金券