陆文举:业务视角下的逻辑安全

本文根据陆文举(土夫子)老师在2018年5月12日【DTCC 2018】现场演讲《业务视角下的逻辑安全》内容整理而成。

讲师介绍:

 

陆文举(土夫子),会分期运维总监DSRC(滴滴安全应急响应中心)TOP白帽,拥有8年运维经验,3年安全经验,曾就职于58同城等多家上市公司,擅长业务逻辑安全。

分享大纲:

1. 未授权访问

2.信息泄露

3.越权遍历

4.支付

5.密码重置

6.API调用

7.总结

正文: 我今天和大家分享的主题是业务视角下的逻辑安全,互联网什么最值钱我们都知道,是数据,从大学生从FR到这个,比如你花几百块钱就可以在网上买到一个别人的信息,然后再到前段时间说的Face Book事件的发生,所以说我今天和大家从业务的角度分享一下逻辑安全。

在准备今天主题的时候,我一直在想一个安全的本质是什么,也就是说那比如像这个绑卡和支付之间能有什么,所以我归纳了两个业务是安全的基石,那么像绑卡里面的问题,比如说像恶意提现,像自助里面,订单里面的这种。

随着互联网的发展,越来越多的安全产品也出来了,包括早期的防火墙和IDS,或者IPS到后面的各种性能,云WAF或者各种成分,包括后来等等一系列安全产品。 

那么有了这些产品我们的业务就安全了吗?所以接下来我们从业务的角度来看一看,在这些安全产品之后,有了这些安全产品之后,还存在安全漏洞。

1.未授权访问 

第一个是未授权访问,什么是未授权访问?说白了在某个系统,不需要去做身份验证就可以看到这个系统,比如说我们这个像DPA用的这个,还有这个做日常维护的时候,它随时把功能,而且是不需要登录认证就可以看到数据的,这会面临什么问题呢?我们可以发出特殊的指令做一些特殊的操作,相当于就对这个客户端做一个内容。 

还有像Hadoop的管理页面,还有像做数据分析,比如说做这个东西的,那这些东西正常情况下你的端口现在是建立在内网上面的。 

这个也是,比如说这个上面出钱,这套系统比如说这个里面有几百块的订单,大家可以看到具体的订单号,还有应该做数据分析的,那像这个情况面临着什么样的情况,最简单就是操作被泄露,那为什么会导致这种原因呢?也就是说这个是由于我们的技术人员安全意识不当造成的,那像一些内容的系统,像这些的,这个最基本的。

2.信息泄露

接下来和大家分享第二个,信息泄露。我曾经在书上看到过这么一个段子,一帮美女都在洗澡,突然这帮美女就急急忙忙跑了过来,然后发现都是大爷,衣服都没有穿了。这个时候有个大爷冲着美女喊了一句,都捂住脸,下面都一样。然后这个段子说明什么,我们可以看一下租房的页面。 

我们可以看到在租房行业里面,中国行业里面发布找房信息之后,我们可以看到发布人的手机号都是泄露的,每家基本上都是这样,那么这会造成一个什么问题呢? 

我们会针对这种手机号看到两种漏洞。第一个针对A公司租房平台,它的手机号是大家看到了,那很简单,我们可以把它的手机号全部爬取下来,那对A公司的其他系统,比如说商家系统我们可以看到精准的用户,去破解其他系统。

那第二个就是说我们都知道行业里面的数据,比如说A公司做租房业务的,那B公司也做,我们可以把这个手机号爬取下来,对B公司做一些特殊的操作。这种情况下,操作软件都像早期网约车一样,我们知道早期的网约车看到都是真实的手机号,那看这个加一个点击滑块就可以看到手机号,另一个可以采取虚拟号的方式,比如说像现在就是看到假的手机号,不真实。

 

这是另外一个信息泄露的例子,那我们都知道,在互联网早期的时候,漏洞都是以单点形式存在的,随着技术的发展,现在这种已经很少了,不能说不见了。现在漏洞的形式都是基于多点存在。

比如说我们做活动,当然这两个图都是同一个动作,比如我们泄露的订单这个,那么单独来看,其实影响不大,比如说没有手机号,那我们可以通过挖掘,通过一系列的挖掘,发现B泄露订单号和手机号,那么可以A点做一个整合,可以得到想要的数据,比如说包括手机号这种,接下来和大家分享越权遍历。

3、越权遍历

先说一下什么是越权遍历,我们说在收集数据的时候,不仅能看到自己的信息,还能看到别人的信息,这就是越权,那么造成这种的原因是什么呢?比如说像这个开发者,在开发程序的时候,他只做了一个当发生A的时候,会做B的判断,当发生C的时候会做出D的判断,但是他没有判断当发生X的时候会做出什么样的判断。

那么越权遍历会把这个分为水平越权和垂直越权,可能这样比较抽象,因为好多功能同时,比如说这个水平,所以说我就归纳为两点,比如说我就归纳越权可以理解成前台越权和后台越权就可以了。 

那么什么是前台越权?比如说我在订外卖或者打车,那么我们的APP就是前台的东西,这个很容易理解,那再像司机在这个接订单的时候,还有像公司利民的管理系统,公司有的运营系统,这种东西就属于后台,接下来我们看前台的一个案例,这也是一个租房信息的一个案例。

 

用户在查询自己订单的时候,我们可以看到通过ID会有一个合同,但是我们可以通过对ID进行遍历,遍历通过别人,比如我们是遍历一起的合同规则,这是一个前面的案例。 

    那比如说像这个接下来说后台的,这个就相对好一点了,中国好多公司安全注册的时候,接触过好多公司的这个版本,基本上,不能说百分之百有这个越权和遍历,但是至少90%的系统是存在的,我们举一个例子,正常情况下一个后台,一个公司的管理后台,这边有10个板块,还有其他的板块,不能这个不同样的角色,但是我们一个普通的用户做一些特殊的操作,就相当于他是永远有效的权利了,就把里面的数据全部拿走了,这是无线的用户。

    商家在接订单的时候,我们通过抓包的形式去抓到图像,随着自己的订单通过ID,然后我们可以为这个ID进行一系列的,结果就是我们可以把所有的这个ID这个订单全部点击出来,可以看到用户的手机号等信息。

那么造成这个原因是什么?我们开发者在写代码的时候,没有做建权,其实这个防护第一个是建权,第二个就是说我们可以把这个ID做的足够大,让他无法看到,或者对这个ID进行加密,比如说是MD加这个,做到安全。我让这个ID做这个加密方,只是一个编码而已,那就没有效果。

4.支付

那么接下来我讲支付,这个从早期都知道,国内炒的最热的是特斯拉,我不知道有没有知道这个例子的。然后再到后来的网易车早期出现的时候,比如说你从这打包,你只要支付把钱给他就可以了,再到前段时间山东某公司出现的这么一个情况,比如说充一元钱披露了1800万,所以说这是一个案例。 

接下来是一个讨论的案例,这个是汽车的一个案例,像这个的,当时我们在支付的过程中,可以把金额改成一分,或者0.01,然后可以看到这个是支付成功的。 

那为什么会造成这种现象呢?是因为大部分程序在这个支付完做二次交付的时候,这个没做。就是这个在安全侧,它就算成功了没有做二次验证。

5.密码重置

那怎么去防护呢?像这种敏感的支付操作,其实保护好签名就可以了,一旦你的签名被篡改你就不能操作了。那么接下来和大家分享一下密码重置。密码重置早期的就是基于邮箱的或者基于一些密保问答形式重置密码,那现在随着移动互联网发展,好多这个产品在设了以后,都是用这个手机验证码的形式去登录,因为这样比较方便,那么这样有什么问题呢?那我可以看一下这个。 

这是一个登录的时候看到的,这会造成一个什么呢?这会造成很简单的一个操作。

那么又由于手机验证码是四位的,四位数字的,那我可以找一下,通过看到这样一个漏洞,那么我们可以撞出1万以内的账号,因为它前面会提醒用户存在或不存在,这是第一步。

 

那么第二步我们可以对着1万的账号发送验证码。第三步我们可以随便拿一个手机号,随便拿一个四位的验证码都可以登录某一个账户的信息了。

那么造成这个的原因是什么呢?第一,现在有很多公司用户基数比较大,也体现了行业。那像四位验证码同一时间内是有重复使用的,那么我们需要对这个验证码做的第一个是时效,比如说时效是一分钟或者三分钟。还有我们短信验证码发送的时候,我们可以做一个风控的操作,比如说同一个IP一天只能发送1000次或者500次,这个一般是能满足需求的。

6.API调用

接下来我们讲一下API调用。现在好多不是那么单一,特别是现在有很多的口令,比如说像客服管理系统等等,系统之间是相互用的,比如说我们无论是用户还是说自己内部的好多人都需要调那个统一认证系统,像客服系统,你的客服在处理用户问题的时候,可以去调你的合同管理或者调你的一些其他的东西,那么相互调动的时候,它产生的一系列问题,现在有很多的东西都是以开关的形式去做这个验证的。我们可以参加这个IP,这个是统一认证的例子。 

那也就是统一认证它接受请求的时候,它这几个业务调动的时候存在这几个方式,比如说某一个参数里面,第一代表的内部员工,二代表的是商家。 

再比如说一个参数里面,1代表的是内部系统,2代表的商家,3代表的是其他服务。

    那么另一个就是说在登录方式,某一个参数代表的是密码,某一个是短信的登录。接下来我们就可以看这个系统,其实这个系统是这样的,刚开始我发信的是也就是说这个系统只能通过用户名和短信验证码的方式去登录,但是由于我对这块业务比较熟悉,或者对业务和业务标准之间的参数比较熟悉,那我会通过一系列的,我们可以把这个业务线改成,比如说用户线改成商家的。登录方式我们可以把短信密码改成密码的方式就可以了。

破解完之后,因为破解的是很容易的,所以存在这样的问题,那么像这块漏洞我们怎么防护呢,也是像刚才说的那样,也就是说你发生篡改的时候,你的每一步操作有合法的签名就可以了。

7.总结

最后我们做一个总结,好多公司或者不少的从业者,并不知道自己的系统是否安全。归纳为第一条就是安全的本质是否可控,为什么这么说?我们举一个例子:好多公司发生漏洞的一些病毒性的内容。那我们可以考虑第一个是否安全,如果不安全没问题,我们可以往下讲,那么数据泄露了多少?如果你的数据比如说全泄露了,那最后是否可控?比如说像你的数据库是以什么方式,还是说某一家技术公司追到的时候,用户名密码全被拖走了?这是这么一个例子。

第二个就是站在业务的角度去思考?就是说安全这个东西,它和业务是有冲突的,比如说你做的这个体验,可能会影响这个业务的用户体验,所以说有好多时候我们站在业务的角度去思考。 

接下来我和大家分享三个小例子:第一个是生活服务检测,好多人都知道数据库和业务袋,这个是通过SQL对自己的业务做一个扫描,比如说我们可以挖掘用户的扫描请求,或者拿到自己的然后通过批纳出来就好了,这是关于扫描检测的。

 

第二个是拖库监控,有好多人数据被拖库不知道,所以说我们可以通过这样的一个小的技巧然后做一个监控,比如说我们可以在这个数据库里面建一个空表,正常情况下你的空表是没有业务去浏览的,当一旦发现这个空表被别人读取的时候,我们可以通过监控号或者其他的来进行监控。

 

第三块是讲数据库加密存储。可能现在在座的数据存储的不多了,但是我们可以通过更好的一些方法做一些加密,比如说第一个加盐法,那这种怎么弄,我们可以通过加盐加一下时间或者一些特殊的方式去做一个加密,像这种支付数据库被偷掉也不会有什么用。

第二个就是混淆法,混淆法是什么?就是你的数据在存储的时候,A用户的密码对应B的用户,因为你的策略入侵者是不知道的,所以说这就会给他造成一个难度。

好,今天我的演讲就到这里,谢谢大家!

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/31510736/viewspace-2199993/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/31510736/viewspace-2199993/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值