0x1 前言 网站或者app的交互,始于用户账号登录,才会进入更多的业务功能程序逻辑的运用层。那么第一步的安全防御是开始,所以想要做好安全,那要抓好第一步,才会有下一步安全防御迭代。从0到1的一个过程....
安全龙和很多服务商厂家合作过程中,帮他们找了不少漏洞;用他们服务,给他们付费,乐在其中帮他们免费找漏洞。我们感觉还是很有意思的~
0x2 一个百万用户级别的项目,第一步就不安全了 今年三月,我们用起了一家以往合作的很久的一个产品,在登录账号的时候,我们忘记密码了,找回密码过程中,顺便测试了下,发现其这个一个百万用户项目、从某公司、商户用户都存在:爆破验证码 任意重置用户密码,这种低级的基础安全问题。
事隔3个月,想起了我们在知乎平台发布了关于这块一些安全思考文章,还做了2个关于《通用API接口签名加密通讯安全参考》攻防实验。
所以整理了下这块内容做分享。也好久没发文了,你以为我们不存在了吗?安全龙还在的,在开发2款牛批的产品。
*上一条关于培训系统合作与讲师入驻的推文撤回,是因为用户数据展示还没达一百万,就撤回了,既然培训这块开放系统功能,做网络安全培训服务平台,让讲师入驻,那么就得有个强大的用户流量输出,道理很简单。
漏洞复现与发现很简单:
一、抓提交找回密码验证post表单
二、使用burpsite中的intruder模块进行短信验证码爆破
漏洞出现原因也很简单:
1、没做接口访问授权保护
2、在忘记密码修改提交表单中capcha=yfwy图像验证码第一验证通过后,没做后续的错误异常处理。 3、没对修改密码提交的错误次数进行异常处理。
0x3 对于这块可行性的安全与防御实践
0x3.1 提交请求验证、发送验证码,使用sign签名验证
*根据安全龙主站的安全标准对每个提交请求都需要对服务端客户端的签名进行验证,在代理拦截客户端进行修改requst参数,发送给服务端,服务端将返回false。这是杜绝短信接口防刷及防撞最有效的方法。
关于接口sign签名攻防实验推荐: 类似安全龙主站的API接口签名加密通讯安全参考,有效防止前端提交的表单被抓包篡改、自动化爆破,适用WEB\APP接口签名通讯加密,在app开发实践中效果更感人。 通用API接口签名加密通讯安全参考本实验通过我们已经推出的“通用API接口签名加密通讯安全指南”,进行深度安全实践,在ThinkPHP5框架有真实场景实现API接口签名加密通讯! TP5框架接口签名加密通讯安全指南
0x3.2 策略 巩固短信接口防刷及防撞
*以下根据安全龙主站策略标准 1、IP:在短信接口限制配置,运用又限制,一天内只能获取50条短信验证码; 2、手机:在短信接口限制配置,运用又限制,一天内只能获取50条短信验证码; 3、短信验证码失效300秒 4、提交表单请求验证邮箱短信验证码错误5次,当前验证码失效!
0x3.3 验证码策略 基础做法:在0x3.1与0x3.2,加入一层图形验证码,那么这块的安全就更进一级。在我们安全龙对图形验证码功能实现中,我们采用base存进redis与客户端做验证,验证通过后就删掉该键值的大致逻辑。 深度做法:在0x3.1与0x3.2,加入第三方智能表单验证,例如:国外Google reCAPTCHA人机验证、国内极光验证、腾讯验证等...
|