在未越狱的 iPhone 6 上盗取支付宝和微信支付的帐号密码? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
immjun
V2EX    程序员

在未越狱的 iPhone 6 上盗取支付宝和微信支付的帐号密码?

  •  
  •   immjun 2015 年 3 月 23 日 7337 次点击
    这是一个创建于 3952 天前的主题,其中的信息可能已经有所发展或是发生改变。
    iOS URL Scheme 劫持-在未越狱的 iPhone 6上盗取支付宝和微信支付的帐号密码
    http://drops.wooyun.org/papers/5309
    28 条回复    2015-03-24 12:11:04 +08:00
    sophymax
        1
    sophymax  
       2015 年 3 月 23 日   1
    iOS也别乱装东西了.... ,我自己的iOS设备也一直没任何支付类的app,不放心 。 不过 , 这个漏洞多年前就很多人发现了 , 只不过大家不把它当漏洞 , 当成了取巧的手段玩的正High , 对于一个这么容易的漏洞 , 微信和支付宝责任还是挺大的 , 费尽心机用各种伎俩(红包、话费等)让用户绑定支付方式 , 安全就应该保证 , 苹果留这个功能本意也不是让第三方app调用支付宝等来支付的 , 仅仅是为了方便而已 , 是这些公司自己想着各种取巧方法来让用户更快捷地花钱的
    kacong
        2
    kacong  
       2015 年 3 月 23 日
    oh, my 安全需要在心中,需要design thinking 安全是个系统工程。
    run2
        3
    run2  
       2015 年 3 月 23 日
    貌似group的Bundle ID是需要唯一的,这个可以拿来用.
    babyname
        4
    babyname  
       2015 年 3 月 23 日
    钓鱼。。
    首先你得将这个app通过审核,并且安装到用户的手机上。
    wzxjohn
        5
    wzxjohn  
       2015 年 3 月 23 日 via iPhone
    @babyname 作者已经给出了一大堆成功劫持的例子。。。
    typcn
        6
    typcn  
       2015 年 3 月 23 日
    @babyname 战旗不就过了?
    hjc4869
        7
    hjc4869  
       2015 年 3 月 23 日 via iPhone
    @babyname 商店不会审核scheme,也没有对盗用别人的scheme作出任何规范,更没有scheme保留机制,过审核不是问题。前提是你的app本身有能够过审核的足够的功能。
    xiaket
        8
    xiaket  
       2015 年 3 月 23 日
    个人感觉iOS系统对url scheme的管理还是太差了... 这儿在设计上应该分隔开.
    dingyaguang117
        9
    dingyaguang117  
       2015 年 3 月 23 日
    @sophymax 提升用户体验也无可厚非,当然要在保证安全的前提下
    GPU
        10
    GPU  
       2015 年 3 月 23 日
    非工程师不是看得很懂
    vincentxue
        11
    vincentxue  
       2015 年 3 月 23 日   1
    这是个很老的问题了,多年前 SO 上就有相关的讨论,也有很多的相关博文。

    说句装逼的话,从我以前了解 URL Scheme 之后我就想到这种情况的可能性,我当时验证的情况是多个同样的 URL Scheme App 同时安装的话,总是会打开最新安装的那个。刚才我又去试了试 iOS 7.1 和 8.1,也是同样的情况。

    然后我读了相关的文档才知道这种情况确实存在,但苹果已经告诉开发者要注意这个问题,当时文档上好像是说不确定会打开哪一个。

    苹果有专门的文档讲使用 URL Scheme,并且人家说了不保证 URL Scheme 唯一性。

    所以我个人认为这是一个故意的设计,压根就不是漏洞,如果是漏洞,怎么可能这么多年了还不修复,被劫持完全是开发者没有熟读开发文档造成的。


    附带几篇文章:

    http://www.dhanjani.com/blog/2010/11/insecure-handling-of-url-schemes-in-apples-ios.html

    https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/Inter-AppCommunication/Inter-AppCommunication.html#//apple_ref/doc/uid/TP40007072-CH6-SW1

    https://developer.apple.com/library/ios/documentation/Security/Conceptual/SecureCodingGuide/Articles/ValidatingInput.html#//apple_ref/doc/uid/TP40007246-SW5
    sumhat
        12
    sumhat  
       2015 年 3 月 23 日
    和乱装东西没关系,只要不使用 URL Scheme 就行了,全部扫码支付。
    shippo7
        13
    shippo7  
       2015 年 3 月 23 日   1
    实际用作攻击难度还是不小,毕竟先要引导用户去安装伪应用。但是厂商之间可以互相劫持 URL Scheme 耍流氓,用自家产品阻碍对方产品的使用。
    weisoo
        14
    weisoo  
       2015 年 3 月 23 日
    @vincentxue 仔细看完了这个漏洞的说明,以文章中说到的美团和支付宝的例子,美团和支付宝没有任何办法通过完善自己的程序来避免这种漏洞,除非不使用URL Scheme。这个不是美团和支付宝开发者能力问题。
    wzxjohn
        15
    wzxjohn  
       2015 年 3 月 23 日   1
    @weisoo 你看的真仔细啊。。。别人解决方案里连代码都给出来了的两个方案都被你无视了是么?
    2. 针对第三方应用

    既然苹果不发布补丁保护第三方应用。第三方应用就没有办法了么? 不是的,这里至少有两种方法可以检测自己应用的 URL Scheme 是否被 Hijack:

    后面的就不贴了自己去原帖看吧。。。
    aqqwiyth
        16
    aqqwiyth  
       2015 年 3 月 23 日
    我自己也鼓捣过URL Scheme尤其是在PC上就大量用了,但是视屏中有一段获取到帐号密码的我就不解了。
    如果劫持了URL Scheme那么应该从美团跳转不到支付宝才是
    wzxjohn
        17
    wzxjohn  
       2015 年 3 月 23 日
    @aqqwiyth 视频的意思你可以理解为做一个假的支付宝客户端,可以看成钓鱼。
    xwsoul
        18
    xwsoul  
       2015 年 3 月 23 日
    恭喜ios也多了一个坑....在我的心里和 安卓更进一步了...
    paradoxs
        19
    paradoxs  
       2015 年 3 月 23 日
    实际上是没什么危害的。
    没越狱,哪里来的FAKEalipay呢?
    sneezry
        20
    sneezry  
       2015 年 3 月 23 日 via iPad
    @paradoxs 少年,你发评论要仔细读文章啊,战旗他们离那个FakeAlipay就差读密码这一步了啊,想读分分钟就读了啊
    paradoxs
        21
    paradoxs  
       2015 年 3 月 23 日
    @sneezry
    1.实际上现在最新版本的IOS alipay,在美团跳转过去的时候,只需要输入6位的支付密码就可以完成付款。
    2.demo那个hijack视频,太过诡异了,跳转过去还要输入全部的账号密码,肯定是不行的,一下就被识破了。
    3.最关键的还是要用户手机里面有一个FAKEalipay,这个才是最关键的,这个条件非常非常的难以实现!
    Automan
        22
    Automan  
       2015 年 3 月 24 日
    按我的理解,跳转应该也是一个token啊,明文密码怎么可能传过去?
    hebeiround
        23
    hebeiround  
       2015 年 3 月 24 日 via iPhone
    也就是我我可以通过伪造URL Scheme可以欺骗美团告诉它我支付了,但事实上并没有支付。
    eternityz
        24
    eternityz  
       2015 年 3 月 24 日
    @hebeiround 支付结果的确认是需要服务器之间进行校验的 (至少我实现过的支付宝流程是这样)
    eternityz
        25
    eternityz  
       2015 年 3 月 24 日
    @paradoxs 不需要越狱,可能你从 app store 安装的某个类似小草壁纸这样的 app 就注册了 alipay 的 url scheme
    vincentxue
        26
    vincentxue  
       2015 年 3 月 24 日
    @hebeiround 我相信美团不会蠢到服务器不验证的。支付的最后一步就是回调应用服务器。

    hillw4h
        27
    hillw4h  
       2015 年 3 月 24 日
    @paradoxs 读书的时候老师就说了一定要审题,所以,建议你还需要再看两遍文章。
    fgwww
        28
    fgwww  
       2015 年 3 月 24 日
    @wzxjohn 两个解决方案都是不靠谱的。第一个是要进入应用自身才知道有被劫持,第二个是私有api,用私有api又上不了app store。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2722 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 36ms UTC 14:40 PVG 22:40 LAX 06:40 JFK 09:40
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86