Skip to content

Latest commit

 

History

History
44 lines (29 loc) · 1.51 KB

jndi.md

File metadata and controls

44 lines (29 loc) · 1.51 KB

JNDI

0x00 Introduction

JNDI(Java Naming and Directory Interface)是一个应用程序设计的API,为开发人员提供了查找和访问各种命名和目录服务的通用、统一的接口,类似JDBC都是构建在抽象层上。 现在JNDI已经成为J2EE的标准之一,所有的J2EE容器都必须提供一个JNDI的服务。

JNDI支持的服务主要有:DNS、LDAP、CORBA、RMI等。

0x01 JNDI

推荐阅读:

0x02 危险函数

javax.naming.InitialContextlookup()方法。 jndi客户端示例:

package com.rmi.demo;

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

public class jndi {
    public static void main(String[] args) throws NamingException {
        String uri = "rmi://127.0.0.1:1099/Exploit";    // 指定查找的 uri 变量
        InitialContext initialContext = new InitialContext();// 得到初始目录环境的一个引用
        initialContext.lookup(uri); // 获取指定的远程对象

    }
}

0x03 限制绕过

JDK 11.0.1、8u191、7u201、6u211,trustURLCodebase default false,限制了远程加载codebase。

bypass:触发本地Gadget.

Ref