用户
搜索
  • TA的每日心情
    开心
    2018-3-30 08:47
  • 签到天数: 98 天

    连续签到: 1 天

    [LV.6]常住居民II

    i春秋作家

    Rank: 7Rank: 7Rank: 7

    27

    主题

    347

    帖子

    3342

    魔法币
    收听
    2
    粉丝
    48
    注册时间
    2016-12-19

    i春秋签约作者

    发表于 2017-12-8 18:09:38 229117
    真正的践行者,一定是工匠精神的受益者,用修行的价值观代替浮躁功利的工作观。用一生为代价去做一件事情,那是一种纯粹的伟大。


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

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

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

    title.png


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

    一般情况下,我们会利用get、post参数,进行sql注入攻击,厂商采用的策略主要是:
    a. sql过滤
    b. 类型判断
    c. 预处理

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

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

    0.png

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

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

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

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


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


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

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

    3.png


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

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



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

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

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

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

    3. 围绕userid展开围攻


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

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

    也举几个例子:
    a. 某个人信息管理微信小程序
    包括公司、姓名、头像、电话等多个维度的信息展示。

    6.png





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


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

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

    7.png


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

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

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

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

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

    4. 尝试绕过当前的限制

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

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

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

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

    sql_in_11.png

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

    b. 借刀杀人

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

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

    其中有一个接口是修改密码的接口:
    https://api.ichunqiu.com/reset_password

    比如当前用户,修改密码为"huaidan",其中token就是这个用户登陆的秘钥,长度24位不可伪造,确保了其唯一性、安全性。接口调用如下:
    [Bash shell] 纯文本查看 复制代码
    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,然后就没有然后了。。。

    攻击原理图如下:
    10.png

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

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

    c. 瞒天过海

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

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

    我分析了这个二维码,实际地址如下:
    https://www.ichunqiu.com/view?profile_token=ae7ffef787ed78a7adc7772901

    可以看到,profile_token这个参数用来识别用户的,并获取用户个人信息并展示主页。这个token会不会就是用户的登陆token?心血来潮,我把reset_password的token换成了这个:
    [Bash shell] 纯文本查看 复制代码
    curl -i '[url]https://api.ichunqiu.com/reset_password?token=ae7ffef787ed78a7adc7772901&new_password=huaidan'[/url]


    提示我token不合法,看来不对。我又第二波心血来潮,直接把token关键字也换成了profile_token:
    [Bash shell] 纯文本查看 复制代码
    curl -i '[url]https://api.ichunqiu.com/reset_password?profile_token=ae7ffef787ed78a7adc7772901&new_password=huaidan'[/url]


    修改密码成功!

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







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

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





    评分

    参与人数 1魔法币 +5 收起 理由
    icqtest + 5 鼓励转贴优秀软件安全工具和文档!.

    查看全部评分

    本帖被以下淘专辑推荐:

    zhusilun 发表于 2017-12-11 11:27
    表哥专业搞接口呀,弱弱的问句,如何找到这些接口url

    比如 burp抓包,不断地测试各种业务功能,需要耐心,点击一个按钮就要看一下发了哪些请求,对于可能有价值的,先记录下来,加个备注。等测试一轮下来,再对所有url地址进行整理,筛选出有价值的。
    有些接口还可能会过期,或者特定的上下文才能出发,这些还需要重新再测试业务,直到搞清楚。
    使用道具 举报 回复
    你好,请问下,文章中这里“有可能接口没做限制,只是在app限制了,那攻击者就可以不断调用这个接口进行薅羊毛”,这里怎么理解呢,app限制和接口没限制指什么呢,可以举下例子吗
    使用道具 举报 回复
    talis1n 发表于 2018-1-12 17:11
    你好,这里有个地方看不懂,为何别人触发了之后就能绕过token

    思路类似csrf,需要用户本人自己触发
    使用道具 举报 回复
    发表于 2017-12-11 10:43:01
    谢谢分享,一直都喜欢挖业务逻辑漏洞,就是您说覆盖面不广,很多时候挖不出来。
    使用道具 举报 回复
    膜拜冰雪大表哥 作为菜鸡的我 何时才能 向你一样完美完成渗透
    使用道具 举报 回复
    你好,这里有个地方看不懂,为何别人触发了之后就能绕过token
    使用道具 举报 回复
    666,不过我觉得美女照片的话,坏蛋肯定会疯狂点击的
    使用道具 举报 回复
    表哥专业搞接口呀,弱弱的问句,如何找到这些接口url
    使用道具 举报 回复
    发表于 2017-12-11 09:57:58
    这个很6。
    小白~~~
    使用道具 举报 回复
    真的很6,逻辑漏洞挺有意思的,但是需要耐心和细心
    使用道具 举报 回复
    发表于 2017-12-11 11:10:44
    看到了喜欢的app安全方面的知识,受教了
    破解的目的是为了更好的开发
    使用道具 举报 回复
    发表于 2017-12-11 11:11:36
    学习
    使用道具 举报 回复
    很有意思的讲解
    使用道具 举报 回复
    发表于 2017-12-11 12:50:43
    厉害啊  那个二维码长知识了
    使用道具 举报 回复
    浅显易懂,感谢大佬
    使用道具 举报 回复
    发表于 2017-12-11 13:50:33
    很有意思的案例 学习了
    使用道具 举报 回复
    发表于 2017-12-11 16:48:32
    支持支持!
    使用道具 举报 回复
    发表于 2017-12-11 17:00:51
    求大佬的excel
    使用道具 举报 回复
    12下一页
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册