Java中利用EXCEL进行XXE攻击

  • Java中常见解析Excel引入的XXE组件复现与分析
    新建excel文件 修改后缀为.zip
    在zip文件中,修改[Content_Types].xml,在其中加入XXE验证POC
    重新修改后缀为 .xlsx

  • 结果发现
    直接通过 SAXReader 来解析xml文档,导致xxe漏洞的产生

  • 修复方案
    是在此处增加了一个SAXHelper类来进行防御处理
    Apache POI,受影响版本:poi-ooxml-3.10-FINAL 及其以下版本
    由于Excel文件实际上是一个压缩包格式文件,其中的xml文档如果被恶意构造加载外部实体参数,就会导致XXE漏洞。
    我们从excel文件中读取到的 xml 文件传入 document() 方法,导致触发漏洞跟进 document() 方法,发现是直接通过 dom 方式解析 xml 文件导致了xxe漏洞
    而修复方式采用的直接禁用外部实体引用。

/**
* 增加防止部实体注入逻辑
* @param reader
* @throws SAXException
* @see [类、类#方法、类#成员]
*/

 public static void setReaderFeature(SAXReader reader)
        throws SAXException
    {
        
        reader.setFeature("http://apache.org/xml/features/disallow-doctype-decl", true);
        
        reader.setFeature("http://javax.xml.XMLConstants/feature/secure-proc

你可能感兴趣的:(网络攻击,网络攻击)