漏洞根源在于人——业务技巧篇

真正的践行者,一定是工匠精神的受益者,用修行的价值观代替浮躁功利的工作观。用一生为代价去做一件事情,那是一种纯粹的伟大。

本文作者:i春秋签约作家——夏之冰雪

今年初写的一篇文章,漏洞根源在于人——知识深度篇 ,本来是写系列文章,因为各种个人原因一直推迟了。收拾好心情,重新出发吧!

我们在安全检测、攻击的时候,会持续积累实战的业务经验,这些经验非常宝贵。不过,我们不能只局限在这样一个模式下:

已知的知识 + 实战 = 经验

这些经验并不足够丰满,我们需要跳出已知的安全知识点、打破常规的业务经验,往往需要向前多走一步,做额外的尝试,只有才能让自己在业务技巧上有更多的可能。本篇文章,我会列举一些案例和思路,与大家分享,希望大家在安全检测、攻击的时候,可以多一些尝试。

1. sql语句并不是只有注入点

一般情况下,我们会利用get、post参数,进行sql注入攻击,厂商采用的策略主要是:

a. sql过滤

b. 类型判断

c. 预处理

有些业务在实现上直接使用了类型判断,比如查看新闻、查看商品、查看用户信息、分页等等,这些参数都可能做了数字判断。

比如阿里云的某个接口(近期已修复):

?

当我们传递非数字的时候,比如字母a,就会报错,告知类型不正确:

看上图,我们可以断定这个接口不存在sql注入,但是如果只局限在sql注入的业务经验上,我们可能什么也得不到。

跳出固有的攻击思路,即使是数字限制,其实依旧可以得到一些有用的信息:

由于代码层面只做了限制,但是并没有做正负数这种限制。当我传递一个负数如-11时,代码的检测语句判断正常,于是将-11传递给了mysql,而mysql的limit语句是分页功能,只能接受正整数。因此,抛出异常,阿里云的数据库表、sql语句、相对目录结构等信息,我们就这样得到了。

2. 业务检测不要只做一半

这是我在新人身上发现的问题,某款app需要做安全测试,我交给了一个新人做。由于他的经验较少,我都是在一个excel里面写好所有可能的攻击测试用例,让他照着excel挨个尝试寻找突破口。

其中的一个测试用例,如下图,这是这款app的一个活动页面,提供给用户一些福利,其中的两个福利是“每日签到”和“每周签到”。对这类业务,最显而易见的攻击就是突破次数限制,就拿“每日签到”来说,有可能接口没做限制,只是在app限制了,那攻击者就可以不断调用这个接口进行薅羊毛。

等新人把所有攻击结果给我的时候,他的攻击结论是此app无法薅羊毛。

而当我亲自测试的时候,我发现其实是可以薅羊毛的:

我的攻击账号得到了上万的额度,这是要花很多钱才能得到的。为什么会出现这个情况?并不是我比新人聪明,新人之所以没找到,是因为他进入了一个误区,他只测试了“每日礼包”发现没有漏洞,就没再测试“每周礼包”,误认为都没有漏洞。而我,并没有耍小聪明,把整个测试用例测全,发现“每周礼包”是可以突破时间限制的。

此漏洞,和app厂商确认,原因是工程师在做一周限制的时候,代码逻辑写的有问题。

A业务和B业务类似,如果A没有漏洞,那么B也没有漏洞。

如果我们被这个思路所束缚,虽然带来了效率的提升,但也失去了更多漏洞发现的可能。

3. 围绕userid展开围攻

网络安全中,数据泄露的危害程度是最大的,而用户数据泄露又是所有数据泄露中级别最高的。

在攻击中,用户数据的窃取往往是黑客的重点攻击目标。

也举几个例子:

a. 某个人信息管理微信小程序

包括公司、姓名、头像、电话等多个维度的信息展示。

这类接口都是以userid为参数依据,可以直接遍历user_id获取数据。我们换个user_id,就能查看另一个人,仅作测试:

b. 个人简历制作类程序

由于移动互联网的普及,大家在找工作的时候,已经开始使用电子简历。电子简历有其遍历性,可以快速的传递给面试公司,并可以灵活的传递、分享和转发。

那么,这个领域的各类产品,由于没有做好安全防护,也会存在userid遍历。

这类产品,并没有很好的对学生做好隐私保护:

调用接口也同样简单,只需要抓包,然后批量遍历user_id:

c. 还有很多

除了简历、个人信息,还有发票管理、通讯录管理等等,甚至还有大姨妈这种记录个人生活习惯的业务产品,这些领域的业务,都有涉及各种数据。由于安全门槛不高,这些业务都可以围绕着userid进行展开,会发现可采集的价值数据信息很多。

总之,要多去思考、多去尝试,把攻击的业务范围扩大,把数据学会关联(比如手机号关联)。随着互联网的发展,会有越来越多的数据源可被挖掘或攻击,不要只停留传统的:

数据脱裤 ————》 社工库

而应该是:

全方位业务采集 ————》 围绕userid的获取 ————》 多维度数据筛选、业务间数据关联 ————》 社工库

4. 尝试绕过当前的限制

一切皆幻想,不要被表面的安全所震慑,有些防护看似牢不可破,这个时候可以通过业务延伸的途径绕过防护。

就跟古代打仗一样,主城墙看似攻不可破,我们能否攻击背后?我们能否让士兵扮演老百姓?我们能否假装是援军?我们能否夜间突袭?网络攻击虽然不能用这些招数,但是他们其实有很多相似点。

a. 声东击西

某款产品,号称几十天就斩获千万用户,经过测试,所有用户信息接口直接对外暴露、加密规则对外暴露,直接导致所有用户数据裸奔。

如上图所示,我们只要知道card_id和aid就能够获取一个用户的详细信息。aid看起来是个加密的数据,正常情况是不能遍历的,保证了安全性。这个时候,我们就不能只盯着这个接口了,毕竟aid很长很复杂,暴力破解也不是办法。这个时候,就需要围绕这个产品业务大量的抓包分析,结果发现他们提供了下面这个接口,传递任意uid即用户id,就可以获取card_id和aid。

这个案例说明的是,想要攻击a接口,有时候我会用b接口作为跳板,然后达到对a攻击的目的。

b. 借刀杀人

b案例和下面的c案例,这两个漏洞是真实案例,但由于漏洞涉敏,因此我虚构一个场景吧,这里假设以i春秋作为虚构的例子,方便理解。

i春秋功能非常丰富,提供了大量的api接口,网址如下:

https://api.ichunqiu.com

其中有一个接口是修改密码的接口:

https://api.ichunqiu.com/reset_password

比如当前用户,修改密码为"huaidan",其中token就是这个用户登陆的秘钥,长度24位不可伪造,确保了其唯一性、安全性。接口调用如下:

curl -i '[url]https://api.ichunqiu.com/reset_password?token=55267d0f988a7cc4376222b2&new_password=huaidan'[/url]

这个接口无论怎么尝试,都会因为token的存在导致无法攻击成功,那么这个时候就需“尝试绕过当前的限制”。

经测试,发现i春秋有一款app,非常好用,appstore下载量全球第一,跑题了。。。

在使用i春秋app的过程中,发现了一个问题,这款app的网络请求中也使用了很多api.ichunqiu.com域名下的接口。app开发工程师为了方便,只要是在app下调用api接口,就会自动加上用户的token。

这里其实不难理解为什么自己的api接口会自动加上token,这样可以很方便的识别用户。有些app,对于自家网站的网页地址,也会自动加上token这种特征行为,这样可以很方便的进行用户行为统计,也能确保接口或者网页都是已登录状态操作。

那么,如果我能引导用户的手机,触发reset_password请求,岂不是也会自动加上token?那不就可以实施攻击了么!

怎么诱导用户触发这个请求?我非常幸运地发现,这款app还有个im,也就是聊天功能。

“Hi 坏蛋,这里有大量的美女照片:https://api.ichunqiu.com/reset_password?new_password=huaidan”

当坏蛋在app收到消息后,铁定会去点击的,然后app自动在后面加上token,然后就没有然后了。。。

攻击原理图如下:

当然,这里也许有人要问,这个改密码链接这么明显,坏蛋肯定不会点。所以,真实例子中,我会生成一个短链,作为诱饵。

这个案例说明的是,即使在没有权限的情况下,依旧可以借助一些业务实现的机制,得到这一权限,如同借刀杀人。

c. 瞒天过海

接着b这个例子继续扩展。

i春秋给每一个用户提供了个性的话主页,为了方便传播自己的主页,专门做了一个二维码。可以把二维码分享到第三方平台上去,比如微博、微信,用户识别二维码后会跳转到对应的白帽子个人介绍页面。

我分析了这个二维码,实际地址如下:

https://www.ichunqiu.com/view?profile_token=ae7ffef787ed78a7adc7772901

可以看到,profile_token这个参数用来识别用户的,并获取用户个人信息并展示主页。这个token会不会就是用户的登陆token?心血来潮,我把reset_password的token换成了这个:

1curl -i '[url]https://api.ichunqiu.com/reset_password?token=ae7ffef787ed78a7adc7772901&new_password=huaidan'[/url]

提示我token不合法,看来不对。我又第二波心血来潮,直接把token关键字也换成了profile_token:


1curl -i '[url]https://api.ichunqiu.com/reset_password?profile_token=ae7ffef787ed78a7adc7772901&new_password=huaidan'[/url]

修改密码成功!

竟然通过二维码的用户标识,冒充了用户的登陆token,进行了高危权限的操作!就这样瞒天过海了。。。

写在最后,在做安全测试的时候,最多的、最好找的往往都是业务漏洞。之所以找不到,是因为我们覆盖的范围不够广,业务之间的关联性没有很好的把握。希望大家在对业务做测试的时候,多一些耐心,多动手把业务流程在纸上画出来,甚至编写攻击case,这样挖的洞自然也就多了。

昨天2017年12月7日,美团上热搜了,连续扣费三次订单失败,用户直接炸了。除了这一炸,还有白帽子提交了个非常吓人的漏洞,这里不方便透漏细节(可以理解为,黑客可以修改任意用户的订单支付价格,就知道多严重了)。我觉得,最大的原因在于公司快速发展下,不注重业务质量,最终业务安全势必要出问题的。所以,不论厂商还是白帽子,都不要忽视业务安全。

时间: 2024-11-02 22:09:34

漏洞根源在于人——业务技巧篇的相关文章

漏洞根源在于人——知识深度篇

本篇文章,不讲攻击,更多的是去讲"开发人员对知识掌握不够深入"导致产生漏洞.我觉得,只有当我们深谙原理,才能更犀利的去思考攻击:了解开发者可能的弱点.盲区,是安全学习中后期时我们更应具备的一项技能. 本文原创作者:i春秋签约作家--夏之冰雪 人性的万恶是痛苦的本源,人为的疏忽是漏洞的主因. 打算写系列文章,主要是想从编程的角度谈谈为什么会存在漏洞.这些漏洞,围绕"人"进行展开,讲讲我自己的看法. 以下这些内容,都是我平时review别人代码时发现的问题,并定期记录下

FastReport 使用技巧篇

FastReport 使用技巧篇 使用技巧篇 1.FastReport中如果访问报表中的对象? 可以使用FindObject方法. TfrxMemoView(frxReport1.FindObject('memo1')).Text:='FastReport'; 2.FastReport中如何使用上下标? 设置frxmemoview.AllowHTMLTags:= True;在Text输入如下 上标:mm<sup>2</sup> 下表:k<sub>6</sub>

业务学习篇

etao的定位 一站式的导购平台:从本质上讲,是一个购物导流平台. 一方面对用户:增强用户导购相关性和用户粘度.对外部网站:将流量引入外部网站.提取流量分成(url链接,盈利方式) 方法:query分析和网页分析相互关联 理解几个名词 srp:搜索:B2C:企业对个人(天猫):C2C:个人对个人(淘宝):产品,商品:小二 etao的核心价值: 如何使我们打造的这些橱窗所展现的内容具有越来越精准的 “导购相关性”,是一淘面向用户的核心价值 etao的整体架构 crawl(爬取系统)——>dump(

2天驾驭DIV+CSS (技巧篇)(转)

这是去年看到的一片文章,感觉在我的学习中,有不少的影响.于是把它分享给想很快了解css的兄弟们.本文是技巧篇. 基础篇[知识一] “DIV+CSS” 的叫法是不准确的[知识二] “DIV+CSS” 将你引入两大误区[知识三] 什么是W3C标准?[基础一] CSS如何控制页面[基础二] CSS选择器[基础三] CSS选择器命名及常用命名[基础四] 盒子模型[基础五] 块状元素和内联元素 实战篇[第一课] 实战小热身[第二课] 浮动[第三课] 清除浮动[第四课] 导航条(上) | 导航条(下)[大练

移动前端工作的那些事---前端制作之微信小技巧篇

移动前端工作的那些事---前端制作之微信小技巧篇_WebApp赵海洋_新浪博客 移动前端工作的那些事---前端制作之微信小技巧篇 (2013-11-15 15:20:47) 转载▼移动前端工作的那些事---前端制作之微信小技巧篇,布布扣,bubuko.com

Visual Studio调试之断点技巧篇补遗

原文链接地址:http://blog.csdn.net/Donjuan/article/details/4649372 讲完Visual Studio调试之断点技巧篇以后,翻翻以前看得一些资料和自己写的一些文章,发现还有几个关于中断程序的技巧在前面的文章里面遗漏了,决定还是在这里总结一下.当然啦,如果你知道这些技巧,忽略这篇文章好了,:) 在程序启动的时候将调试器附加上去 可能有人会对这个问题有一些争议,因为大部分情况下我们只需要在调试器(Debugger)里面直接启动被调试程序(Debugge

经济--理财--银行理财技巧篇

银行理财技巧篇 避开银保产品 银行卖的产品,有银行自己发行的产品,还有合作类的产品(银信(与信托公司合作),银保(与保险公司合作),银证信(与证卷.信托合作)) 合作类的产品,银行只是个超市.银保类产品投诉很高哦.买了银保产品,1.有15天犹豫期.2.12378来进行投诉. 期限搭配,让”钱“变活 有没有办法提高流动性呢? 将大额资金拆分成几分,分别购买. 12单法.60单法 上海车牌   7   8 万. 这样做,以后每个月都有一笔7W的资金到期. 巧选时点,收益大增 什么时候买最划算呢? 在

业务逻辑漏洞挖掘随笔【身份认证篇】

在厂家的时候出来跟客户聊安全,老是喜欢把漏洞分为"传统漏洞"."业务逻辑漏洞".现在听到这词还蛮新鲜的.最近要让学弟们去帮忙挖漏洞,结合自己的测试经验顺便给他们归纳了下业务逻辑挖掘,于是有了本文.... 纯科普,大牛请无视 暴力破解: 实习的时候帮客户检查系统,当实在没找到漏洞的时候最爱挑这个毛病,"该系统可被暴力破解".因为内网中这问题比比皆是,暴力破解确实是个敲门砖. 01:没有验证码 可选工具:burpsuite 当然了,也可以选择同时爆破

XSS的原理分析与解剖:第三章(技巧篇)**************未看*****************

??0×01 前言: 关于前两节url: 第一章:http://www.freebuf.com/articles/web/40520.html 第二章:http://www.freebuf.com/articles/web/42727.html 说的xss的原理及不同环境的构造方法.和XSS的分类及挖掘方法.那么本期则说XSS技巧,前面两个干货不太多,讲的都是比较基础的.而这期则是满满的干货. 从本期开始,XSS我就开始深入了.至 于下一章XSS编码,已经被0xExploit写过了( http: