微信支付被爆0元漏洞,如何修複

  1. 新聞資訊
  2. 技術百科
行業動态 公司新聞 案例分享 技術百科

微信支付被爆0元漏洞,如何修複

來(Come)源:奇站網絡 浏覽量:2701 發布日期:

7月3日,微信支付爆出(out)存在(exist)嚴重安全漏洞,可能導緻商戶服務器被入侵。

問題重現

  1. public static void test() {
  2. String xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\"?><!DOCTYPE xdsec[<!ELEMENT methodname ANY><!ENTITY xxe SYSTEM \"file:///c:/windows/win.ini\">]><methodcall><methodname>&xxe;</methodname></methodcall>";
  3. try {
  4. System.out.println(xmlStr);
  5. System.out.println("+++++++++++++++++");
  6. Map<String, String> hm = WxPayTool.xmlToMap(xmlStr);
  7. System.out.println("+++++++++++++++++");
  8. System.out.println(hm);
  9. } catch (Exception e) {
  10. e.printStackTrace();
  11. }
  12. }

xmlToMap方法對應sdk中xmlToMap方法。
運行測試代碼,可以(by)發現本地(land)文件被輸出(out)。

上面隻是(yes)問題的(of)簡單定位,雖然攻擊者不(No)太可能知道微信通知的(of)url,而且實際項目中一(one)般不(No)會将内容直接輸出(out),但是(yes)攻擊者仍然可以(by)執行其他(he)命名或者通過其他(he)方式獲取到(arrive)服務器上文件或目錄,因此應當盡快修複該問題。

修複方案

  1. DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
  2. documentBuilderFactory.setFeature("http://apache.org/xml/features/disallow-doctype-decl",true); //防止可能的(of)SSRF
  3. documentBuilderFactory.setXIncludeAware(false);
  4. documentBuilderFactory.setExpandEntityReferences(false);
  5. documentBuilderFactory.setFeature("http://xml.org/sax/features/external-parameter-entities", false);
  6. documentBuilderFactory.setFeature("http://xml.org/sax/features/external-general-entities", false);
  7. DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
  8. InputStream stream = new ByteArrayInputStream(xmlString.getBytes("UTF-8"));
标簽:

廈門極極網絡科技有限公司

電話:13313868605

QQ:3413772931

地(land)址:廈門集美區軟件園三期


                    掃一(one)掃加我(I)咨詢