危害不只是-可怕!微信支付被曝漏洞-!-0元也能买买买 (危害是可能)

教程大全 2025-07-21 02:55:43 浏览

微信是最流行的 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 签名,只要应用方的秘钥泄露,签名认证就完全成了摆设。

在这方面支付宝的做法更规范也更安全:支付宝为应用生成公私钥对,公钥由应用方保存,私钥由支付宝保存;在回调时,支付宝使用私钥进行签名,应用方使用公钥进行验证。

这样只要支付宝保存的私钥不泄露,攻击者只有公钥则难以通过签名认证。

参考文献:

关于此次微信出现的支付漏洞你怎么看?扫描下方二维码,关注技术栈公众号。欢迎在技术栈微信公众号留言探讨。


期货是什么类?

期货的炒作方式与股市十分相似,但又有十分明显的区别。 一、以小搏大 股票是全额交易,即有多少钱只能买多少股票,而期货是保证金制,即只需缴纳成交额的5%至10%,就可进行100%的交易。 比如投资者有一万元,只能买一万元的股票,而投资期货按10%的保证金计算,就可以签订(买卖)10万元的商品期货合约,这就是以小搏大,节省了资金。 二、双向交易 股票是单向交易,只能先买股票,才能卖出;而期货即可以先买进也可以先卖出,这就是双向交易,熊市也可以赚钱。 三、期货交易的一般是大宗商品,基本面较透明,签订(买卖)的合约数量理论上是无限的,走势较平稳,不易操纵。 股票的数量是有限的,基本面不透明,容易受到恶庄家操纵。 四、期货的涨跌幅较小,一般是3%-6%,单方向连续三个停板时,交易所可以安排想止损的客户平仓。 股票的涨跌停板的幅度是10%,有连续10几个跌停板出不来的时候。 五、 期货由于实行保证金制、追加保证金制和到期强行平仓的限制,从而使其更具有高收益、高风险的特点。 如果满仓操作,期货可以使你一夜暴富,也可能使你顷刻间赔光(爆仓),所以风险很大,但是可以控制(持仓量),投资者要慎重投资,切记不能满仓操作。 做股票基本没有赔光的。 六.期货是T+0交易,每天可以交易数个来回,建仓后,马上就可以平仓。 手续费比股票低(约万分之一至万分之五).股票是T+1交易,当天买入的只能第二个交易日抛出,手续费约为千分之四。

怎么炒股票?

如何炒股:首先凭身份证到当地的证券登记公司(有的券商也代办)办理一个沪深交易所的股东账户卡,选择一家证券营业部开户,签订一份合同,领取资金账户卡,存入一定现金(支票)。 如何买卖股票 :必须指明买进或卖出股票的名称(或代码)、数量、价格。 并且这一委托只在下达委托的当日有效。 委托的内容包括你要买卖股票的简称(代码),数量及买进或卖出股票的价格。 股票的简称通常为四至三个汉字,股票的代码为六位数,委托买卖时股票的代码和简称一定要一致。 同时,买卖股票的数量也有一定的规定:即委托买人股票的数量必须是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个交易日计算,利润即为元,除去行情震荡不明朗观望时间外,保守估计每月可获利元。

有一本书,兄弟俩都想买.哥哥缺5元,弟弟只缺1分.若两人合买一本,钱仍然不够.你知道这本书的价格吗?

由题意可知:因为哥哥缺5元弟弟缺1分,那么,弟弟的钱=哥哥的钱-0.01元=5-0.01=4.99元,因为弟弟的钱为4.99,所以书的钱为4.99+0.01=5元,因为哥哥缺5元,所以哥哥的钱数为5-5=0元.答:这本书的价格是5元,哥哥有0元,弟弟有4.99元.

本文版权声明本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请联系本站客服,一经查实,本站将立刻删除。

发表评论

热门推荐