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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值