微信是最流行的 App 之一,特别是随着“二维码付款”成为潮流,越来越多的小伙伴早已习惯不带现金出门。
如果有人告诉你,现在不用你花一分钱,就能用[微信支付]买买买,这种天上掉馅饼的事,你会相信吗?
7 月 1 日,在老牌漏洞披露平台 Full Disclosure 出现了一封写给微信支付的公开信。
发件人是 Rose Jackcode,信的标题是《微信支付官方SDK的XXE安全漏洞(微信支付在商户页面遗留了一个后门)》。
▲发表在漏洞披露平台 Full Disclosure 上的公开信
发件人 Rose Jackcode 在信中称,他在微信支付官方 SDK(软件工具开发包)发现了一个安全漏洞,此漏洞可导致商家 服务器 被入侵,一旦攻击者获得商家的关键安全密钥,就可以通过发送伪造信息来欺骗商家而无需付费购买任何东西。
王牌对王牌
换句话说,黑客利用微信支付的这个漏洞,能实现 0 元无限买买买。
这并不是说说而已,这位网友还直接甩出了两张图,展示出漏洞利用的过程,中招者是 VIVO 和陌陌。
▲陌陌、VIVO 的微信支付漏洞利用过程
看不懂没关系,为了方便小伙伴理解,他们举了个小例子:
这个过程叫“商户回调接口”,而这个漏洞可以让微信支付产生“人家付款成功了”的错觉,从而让黑客实现 0 元购。
随后,微信支付技术安全团队已关注问题并及时排查,并进行更新,修复了已知的安全漏洞。
虽然微信支付安全漏洞已经被修复,但大家关注的热度依旧高涨。查看百度热搜指数发现,微信支付被爆漏洞这一话题依旧高居榜首。
一定不少小伙伴要吐槽了:“怎么又是修复好了才告诉我?有没有感觉错过了几百万哈….
大多数人可能并不关注怎么修复安全漏洞,而是较为关心对个体产生的影响。下面我们从技术人的角度谈谈这次微信支付曝出的漏洞。
技术角度解读微信支付曝出的漏洞
对于昨天(2018-07-04)微信支付的 SDK 曝出重大漏洞(XXE 漏洞),通过该漏洞,攻击者可以获取服务器中目录结构、文件内容,如代码、各种私钥等。
获取这些信息以后,攻击者便可以为所欲为,其中就包括众多媒体所宣传的“0 元也能买买买”。
漏洞报告地址:
XXE 漏洞
此次曝出的漏洞属于 XXE 漏洞,即 XML 外部实体注入(XML External Entity Injection)。
XML 文档除了可以包含声明和元素以外,还可以包含文档类型定义(即 DTD);如下图所示:
在 DTD 中,可以引进实体,在解析 XML 时,实体将会被替换成相应的引用内容。
该实体可以由外部引入(支持 http、ftp 等协议,后文以 http 为例说明),如果通过该外部实体进行攻击,就是 XXE 攻击。
可以说,XXE 漏洞之所以能够存在,本质上在于在解析 XML 的时候,可以与外部进行通信;当 XML 文档可以由攻击者任意构造时,攻击便成为可能。
在利用 XXE 漏洞可以做的事情当中,最常见最容易实现的,便是读取服务器的信息,包括目录结构、文件内容等;本次微信支付爆出的漏洞便属于这一种。
微信支付漏洞
本次漏洞影响的范围是:在微信支付异步回调接口中,使用微信支付 SDK 进行 XML 解析的应用。
注意这里的 SDK 是服务器端的 SDK,App 端使用 SDK 并不受影响。
SDK 下载地址如下(目前微信官方宣传漏洞已修复):
SDK 中导致漏洞的代码是 WXPayUtil 工具类中的 xmlToMap() 方法:
如上图所示,由于在解析 XML 时没有对外部实体的访问做任何限制,如果攻击者恶意构造 XML 请求,便可以对服务器进行攻击。下面通过实例介绍攻击的方法。
攻击复现
下面在本机环境下进行复现。
假设本地的 Web 服务器 127.0.0.1:8080 中存在 POST 接口:/wxpay/callback,该接口中接收 XML 字符串做参数,并调用前述的 WXPayUtil.xmlToMap(strXml) 对 XML 参数进行解析。
此外,/etc/password 中存储了重要的密码数据(如 password1234)。
攻击时构造的请求如下:
其中 XML 内容如下:
其中 /etc/password 为要窃取的对象,为攻击者服务器中的 dtd 文件,内容如下:
通过 xml+dtd 文件,攻击者便可以在服务器中会收到如下请求:。
这样,攻击者便得到了 /etc/password 文件的内容。
在本例中,攻击者窃取了 /etc/password 文件中的内容,实际上攻击者还可以获取服务器中的目录结构以及其他文件,只要启动 Web 应用的用户具有相应的读权限。
如果获取的信息比较复杂,如包含特殊符号,无法直接通过 http 的 URL 发送,则可以采用对文件内容进行 Base64 编码等方法解决。
解决该漏洞的原理非常简单,只要禁止解析 XML 时访问外部实体即可。
漏洞曝出以后,微信进行了紧急修复,一方面是更新了 SDK,并提醒开发者使用最新的 SDK。
SDK 中修复代码如下:
加入了如下两行代码:
此外,微信官方也给出了关于 XXE 漏洞的最佳安全实践,可以参考:
笔者本人使用上述方案中建议的如下代码修复了该漏洞:
危害不只是“0 元也能买买买”
在很多媒体的报道中,强调该漏洞的风险在于攻击者可以不支付也可以获得商品。
攻击者在通过上述漏洞获得微信支付的秘钥以后,有不止一种途径可以做到不支付就获得商品。
例如,攻击者首先在系统中下单,获得商户订单号;然后便可以调用微信支付的异步回调。
其中的签名参数便可以使用前面获取的秘钥对订单号等信息进行 MD5 获得;这样攻击者的异步回调就可以通过应用服务器的签名认证,从而获得商品。
不过,在很多有一定规模的购物网站(或其他有支付功能的网站),会有对账系统,如定时将系统中的订单状态与微信、支付宝的后台对比。
如果出现不一致可以及时报警并处理,因此该漏洞在这方面的影响可能并没有想象的那么大。
然而,除了“0 元也能买买买”,攻击者可以做的事情还有很多很多;理论上来说,攻击者可能获得应用服务器上的目录结构、代码、数据、配置文件等,可以根据需要进行进一步破坏。
漏洞不限于微信支付 SDK
虽然微信支付曝出该漏洞受到了广泛关注,但该漏洞绝不仅仅存在于微信支付中。
由于众多 XML 解析器默认不会禁用对外部实体的访问,因此应用的接口如果有以下几个特点就很容易掉进 XXE 漏洞的坑里:
XML 与 json
XML 与 JSON 是系统间交互常用的两种数据格式,虽然很多情况下二者可以互换,但是笔者认为,JSON 作为更加轻量级更加纯粹的数据格式,更适合于系统间的交互。
而 XML,作为更加重量级更加复杂的数据格式,其 DTD 支持自定义文档类型,在更加复杂的配置场景下有着更好的效果,典型的场景如 Spring 相关的配置。
题外话:微信支付的签名认证
在前面曾经提到,应用中存储的秘钥一旦泄露,攻击者便可以完全绕过签名认证,这是因为微信支付使用的是对称式的签名认证。
微信方和应用方,使用相同的秘钥对相同的明文进行 MD5 签名,只要应用方的秘钥泄露,签名认证就完全成了摆设。
在这方面支付宝的做法更规范也更安全:支付宝为应用生成公私钥对,公钥由应用方保存,私钥由支付宝保存;在回调时,支付宝使用私钥进行签名,应用方使用公钥进行验证。
这样只要支付宝保存的私钥不泄露,攻击者只有公钥则难以通过签名认证。
参考文献:
关于此次微信出现的支付漏洞你怎么看?扫描下方二维码,关注技术栈公众号。欢迎在技术栈微信公众号留言探讨。
怎么炒股票?
如何炒股:首先凭身份证到当地的证券登记公司(有的券商也代办)办理一个沪深交易所的股东账户卡,选择一家证券营业部开户,签订一份合同,领取资金账户卡,存入一定现金(支票)。 如何买卖股票 :必须指明买进或卖出股票的名称(或代码)、数量、价格。 并且这一委托只在下达委托的当日有效。 委托的内容包括你要买卖股票的简称(代码),数量及买进或卖出股票的价格。 股票的简称通常为四至三个汉字,股票的代码为六位数,委托买卖时股票的代码和简称一定要一致。 同时,买卖股票的数量也有一定的规定:即委托买人股票的数量必须是100的整倍数,但委托卖出股票的数量则可以不是100的整倍。 委托的方式有四种:柜台递单委托、电话自动委托、电脑自动委托和远程终端委托。 1. 柜台递单委托就是你带上自己的身份证和帐户卡,到你开设资金帐户的证券营业部柜台填写买进或卖出股票的委托书,然后由柜台的工作人员审核后执行。 2. 电脑自动委托就是你在证券营业部大厅里的电脑上亲自输入买进或卖出股票的代码、数量图鄹瘢傻缒岳粗葱心愕奈兄噶睢?3. 电话自动委托就是用电话拨通你开设资金帐户的证券营业部柜台的电话自动委托系统,用电话上的数字和符号键输入你想买进或卖出股票的代码、数量和价格从而完成委托。 4. 远程终端委托就是你通过与证券柜台电脑系统连网的远程终端或互联网下达买进或卖出指令。 除了柜台递单委托方式是由柜台的工作人员确认你的身份外,其余3种委托方式则是通过你的交易密码来确认你的身份,所以一定要好好保管你的交易密码,以免泄露,给你带来不必要的损失。 当确认你的身份后,便将委托传送到交易所电脑交易的撮合主机。 交易所的撮合主机对接收到的委托进行合法性的检测,然后按竞价规则,确定成交价,自动撮合成交,并立刻将结果传送给证券商,这样你就能知道你的委托是否已经成交。 不能成交的委托按价格优先,时间优先的原则排队,等候与其后进来的委托成交。 当天不能成交的委托自动失效,第二天用以上的方式重新委托。 上海、深圳证券交易所的交易时间是每周一至五,上午9:30至11:30,下午1:00至3:00。 法定假日除外。 网上交易:上述开户结束后,与营业部签订一个网上交易合同,下载一个该营业部的网上实时动态交易软件,就可以了。 具体细节在你办理此项手续的同时,营业部会给你一个文本,怎样操作一目了然,不明白的地方还可当面咨询。 以上是入市必须要办理的手续和要知道的事项,建议你到交易所去看几天,熟悉一下股票名称和代码,K线形态,买卖程序等等,一些常识性的问题随便问一下周围的股民,他们都会很耐心的给你解释的。 既然投资炒股,就该略微花些时间和成本,推荐你买本叫做《股市操作学》的书,作者叫张龄松,他在这本书里很详尽的说明了股市几十年的种种现象,相信会对你有所帮助的。 其实炒股很简单,不过炒好了可不容易,要多看、多听、多分析,真正能成为高手,还需时间的磨练。 1、现货仓单交易与期货、证劵、传统现货交易的区别现货仓单交易与期货交易的区别:1.期货采用保证金交易,期货交易时不需要交纳全额资金,仓单采用履约金交易,仓单交收时必须交纳全额资金。 2.期货交易按交割月进行交割,仓单交易可随时申请交收。 3.期货采用5%-10%交易保证金进行交易,仓单交易可根据不同品种采用全额履约金交易。 4.期货按月进行交割,所以期货的价格容易受机构或大户控盘操纵,价格波动频繁,导致市场风险较大,而仓单交易定位仓单随时交收,机构或大户难以操纵,交易风险较小。 2、仓单交易与证券交易的区别1)、保证金的意义不同证券保证金是投资者对经纪商支付的相应价款。 而仓单交易履约实际上是信用保证金,保障交易会员在买卖仓单到交收这段时间内的风险。 只有在实际货物交收时,才需要交付货款。 2)、所有权的转移不同证券交易一旦生效,立即办理交割手续,所有权随之发生转移;而仓单交易时,虽然买入或卖出仓单,但实际商品的所有?ú⑽绰砩戏⑸疲挥械绞导释瓿上只踅皇盏母飨钍中螅唐返乃腥ú磐耆啤?3)、市场信息来源不同证券市场是二级市场,其价格除了受供需关系的影响外,还受各上市公司的经营状况影响,信息会有其上市和证券商的主观意识及欺骗性,证券交易者在交易时所考虑的因素比较复杂,因而经常举棋不定。 而仓单交易市场属一级市场,其价格由供求关系决定,其商品价格信息具有公开性,可信度很高,因而商品的价格随时可以通过现金现货市场得到证实,交易者只关注其交易较为活跃的品种,认真分析其供求关系,就可作出交易决定。 4)、交易制度不同证券交易只能进行先买后卖的单向交易,交易者买入股票后,其价格下跌,交易者要么止损出场,要么被深度套牢。 而仓单交易中,交易者无货也能先卖出,因为其先卖出时,承担了交货责任,但在后来买入了同种商品同数量的货物仓单时就解除了他的交货责任,因此在仓单交易中,交易者一旦发生逆势交易时,不但可以立即止损出场,还可以顺势追入获取利益。 简言之,证券交易只能单向操作,仓单交易可双向操作,不论价格上涨下跌均有获利机会。 5)、T+0与T+1的区别证券交易采用T+1交易制度,当日买入后,要等到第二天才能进行交割。 如果买入当日为最低价格,当日上涨后不能卖出,尾市下跌,且跟随其后的日子连续下跌,则交易者将被深度套牢。 而仓单交易实行T+0交易制度,当日可灵活处理获取利润。 相对而言,仓单交易比证券交易获利机会更多,亏损套牢的时间更少。 3、仓单交易与传统现货交易的区别1)、资金配置不同传统交易必须有场地或购买费用、人工费用、运输费用、购销费用、税金及其他固定投入费用成本,然后才是流动资金;而仓单交易则是金额流动资金,发生交易时产生手续费,不发生交易则是金额流动备用资金,且资金进出自由,由投资人自身决定。 2)、交易对象不同传统现货交易买卖的直接对象是商品本身,有样品、有实物,看货定价;而仓单交易买卖的直接对象是商品的仓单,是商品的所有权而非商品本身,其商品本身为符合国市标准的且进入国市定点仓库的货物,交易者只考虑买卖的数量。 3)、交易成本不同传统现货交易其价格因地理环境、各地区局部供需关系等原因而存在地区差价。 如某人从甲地到乙地买入某地货物运回甲地,其间将会产生生活费用、运转费用、税金、场地租赁费用等购买成本;而仓单交易采用同货异地,同步集中竞价,最后在离购买者最近的定点仓库提货,这就大大降低其交易成本。 4)、资金结算不同传统现货交易一般情况是买卖双方签定购销合同,然后双方按合同逐步完成货物的交换和资金的结算;而仓单交易由于运用货物履约金制度,买卖双方均受其约束,交易完结的同时计算机网络系统就马上结清双方的资金。 5)、保障制度不同传统现货交易有《合同法》等法律为保护,合同不能兑现必然诉诸法律,由有关部门进行仲裁的方式来解决,最终双方是否按仲裁机关的条文执行还是未知数。 6)、商品范围不同传统现货交易的交易品种是一切进入流通领域的商品,而仓单交易的交易品种要受国市标准的限制。 仓单、股票、期货交易的比较比较范围 仓单交易 股票交易 期货交易交易对象 现货仓单 股票 远期合约交易时间 9:00-11:0013:00-15:00 9:30-11:3013:00-15:00 9:00-11:3013:30-15:00投资金额 按仓单价值10%交付履约金 按每股价值100%支付全额资金 按合约价值5-10%支付保证金交易手续费 1.5元/批(平均) 交易额的7.5‰ 约占交易额的3‰交割日限定 随时交割(T+0) 第二日交割(T+1) 按指定月份交割(T+0)操作手段 价格上涨或下跌均可获利 散户只能单向获利 价格上涨或下跌均可获利双向获利风险控制 涨、跌停板限制风 险 小 风险不明容易被套牢 无涨跌停,人为风险极大投资回报 每日最低回报为投资额的2.5%, 短线投资可获利3%-10% 极 大多则为30%1)市场规定履约金为1600元/批,1批=10吨,5万最大交易量为30批。 2)为更有效的利用资金,交易员拿出1/3入市,1/3追市,1/3作为后备资金。 3)一般每天市场行情波动在15点左右,具有一定的规律性和可控性。 4)获利:按照每天做30批计算,每匹净赚3个点,一日利润便有900元,每月按20个交易日计算,利润即为元,除去行情震荡不明朗观望时间外,保守估计每月可获利元。
股票,期货,黄金,外汇都有什么特点
都属于金融投资品种,
外汇保证金交易与其它金融产品的区别 股票 期货 外汇(保证金) 参与市场 地区市场:易操控 地区市场:易操控 国际市场:不易操控 交易时间 营业时间内 营业时间内 周一至周五24小时 结算周期 T+1 T+0 T+0 交易量 有限交易量 有限交易量 日交易量3万亿美元以上 交易方向 单向 双向 双向 波动振幅 有限制 有限制 无限制 交易品种 多 较多 少 需用资金 100% 5-20% 1% 流动性 有些情况下无法成交 高 高 风险控制 可控 可控 可控 交易费用 高 高 低 利润 低 中 高第一次买车,要买保险,需要买哪些险,大概需要多少
无论买什么车,购买汽车保险从来都是不可避免的,而在国内购买保险向来都让人搞不懂。 面对密密麻麻写满字的条款,为了人身和爱车的保障不得不硬着头皮研究,可是博大精深的中国文字在这个时候显现了巨大力量。 犯懒或者没研究明白的难免选择了不太适合自己的险种或者不够完善,理赔时才发现原来困难重重或者N多免赔条款,苦果只有自己咽下去。 其实购买车险说容易不简单,但说难其实也没那么可怕,本文我将给大家用简单的语言讲解一下购买车险的注意事项。 险种解析主险:1:机动车交通事故责任强制保险(交强险)属于新车必上险种,赔偿最高额度12.2万元。 不少人认为12.2万元的赔偿额度对于自己车辆来说足够了,其实在这12.2万元中只有2000元属于车损赔偿,另外一万元为医疗费用赔偿,11万元伤残赔偿,因此只有交强险保障是不够的。 2:机动车损失险(车损险)也就是车辆保险中最重要的主体部分,用于赔偿车辆损失。 但是在购买保险时要明确保险条款中的保险责任和责任免除部分。 举个例子,如果事故中受伤或者死亡的是被保险人自己或者家庭成员,这是不会理赔的;如果被保险人因为无证驾驶、酒后驾驶等违法行为发生事故也是不会赔偿的。 在己方无责但无法找到肇事方的情况下,和保险公司签订责任转移赔偿协议后,己方要承担30%的责任。 例如车停在路边被高空坠物砸中,且找不到责任人,己方就要自己承担30%责任。 3:商业第三者责任险(三者责任险)属于对交强险中伤残赔偿的补充,目前常见的保额为20万、30万和50万等,但是保费的差别并不多,也就一两百的差别。 这项保险对于私家车主至关重要,按照现行法律如果车辆对行人造成人身伤害事故,赔偿额度会依据当地平均工资置顶,最高20年工资,按照3000元工资标准最高赔偿达72万元,远远超过交强险赔偿额度,因此商业三者责任险就成为了人身伤害事故中一项重要保障。 4:全车盗抢险盗抢险是防止车辆被盗丢失而准备的险种。 如果您的车停车区域治安情况不佳,环境较混乱就很有必要购买这项保险。 另外,如果您的车是被盗风险较高的车型,例如雅阁、A6等车型保险费率会有适当上调,这需要您向保险公司详细咨询。 需要注意的是全车盗抢险只有在您的车辆整车被盗时,保险公司才会索赔,如果车辆部分部件被偷不属于赔偿范围(常见的例如轮胎被盗、雨刷器被盗等)5:车上人员责任险用于赔偿在事故中车上人员造成的人身意外伤害。 分为司机和乘客两种,可以单独保司机或者乘客。 这属于人身意外险的一种补充,并且和其他人身意外险不冲突,共同赔偿。 常见的保额有1万元、2万元和5万元。 附加险一般车辆保险的主险只提供最基础的保障,但是日常行车还会遇到很多其他问题,这就需要一些附加险种进行保障。 1:附加自燃损失险(自燃险)自燃损失险就是指车辆发生自然造成车辆损失的时候,对您进行补偿。 自燃是指车辆的电器、线路、供油系统、供气系统发生故障或者所载货物自身原因引起火燃烧造成本车损失。 保险专家提醒,一些增压车型或者散热有缺陷的车型在夏季自然风险较高,建议投保。 另外,根据条款,自燃赔偿实行20%的免赔率,也就是说保险公司只承担损失额度的80%。 所以避免车辆自燃才是硬道理。 注:汽车厂家对于没有改动过线路,又在质保期内发生自燃的车辆进行赔付,所以这部分车主无需投保自燃险。 2:附加车身划痕损失险(划痕险)划痕险是用来保护车辆车漆的,承保范围仅限于车身无明显碰撞的车漆损伤。 任何碰撞造成的损失则属于车损险范畴。 简而言之划痕险仅限于车漆部分,不包含任何需要钣金换件等损伤,保险金额有2000元、5000元、元或者元。 注:目前保险公司已经不再为三年以上的“老车”办理划痕险,另外目前车险保费的优惠幅度已经开始根据出现次数和金额挂钩,如果您已经连续几年未出现,那么也许自己花钱修补会更加划算。 3:附加玻璃单独破碎险(玻璃险)玻璃险是指风挡玻璃或者车窗玻璃单独破碎而进行赔偿,不包括事故中造成的车辆玻璃破损。 这款险可以选择国产玻璃和进口玻璃,车主可以自己选择。 需要提醒你的是,天窗玻璃并不属于玻璃破碎险范畴,而是属于车损。 4:发动机特别损失险(发动机进水险)也就是指在车辆涉水或者水中启动后造成的发动机故障保险。 车损险是不包括发动机进水故障赔偿的,这款附加险可以增加发动机保障。 如果没买这项附加险,进水后发动机大修的自己掏腰包可不是小数目,另外,还有20%的不计免赔率。 5:附加不计免赔率特约前面的多项保险中都提到了不计免赔率,它是指在出险理赔时,保险公司并不是100%赔偿你的所有损失。 例如发动机特别损失险不计免赔率为20%,就是指保险公司只赔偿发动机维修费用的80%,您自己要承担20%的维修费用。 不计免赔率特约就是指,您购买该项附加险后,所指定的保险项目的不计免赔部分也由保险公司来承担,自己不需要花一分钱。 往往很多人都忽略了,其实这是一项非常实用的附加险。 A、B、C条款目前国内有A、B、C三套保险条款,其实也就是保监会根据人保(A)、平安(B)、太平洋(C)三家的条款来制定的,其他保险公司根据自身情况选择其中一套。 三套条款主要内容一致,部分细节有细微差别。
发表评论