Skip to content

Commit 2160529

Browse files
committed
jndi-bypass
1 parent 2d02cfc commit 2160529

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,37 @@
11
# 绕过过高版本Jdk的限制进行Jndi注入利用
2+
3+
## 0x00限制成因
4+
5+
除了RMI服务之外,JNDI还可以对接LDAP服务,LDAP也能返回JNDI Reference对象,利用过程与上面RMI Reference基本一致,只是lookup()中的URL为一个LDAP地址:ldap://xxx/xxx,由攻击者控制的LDAP服务端返回一个恶意的JNDI Reference对象。并且LDAP服务的Reference远程加载Factory类不受上一点中 com.sun.jndi.rmi.object.trustURLCodebase、com.sun.jndi.cosnaming.object.trustURLCodebase等属性的限制,所以适用范围更广。
6+
7+
### 1. trustURLCodebase = false (CVE-2018-3149)
8+
2018年10月,高版本JDK在RMI和LDAP的trustURLCodebase都做了限制,从默认允许远程加载ObjectFactory变成了不允许。
9+
- RMI是在JDK 6u132, 7u122, 8u113版本开始做了限制。
10+
- LDAP是JDK 11.0.1, 8u191, 7u201, 6u211版本开始做了限制。
11+
12+
### 2. JEP290防护机制 (Filter Incoming Serialization Data)
13+
适用范围:
14+
JEP 290 在 JDK 9 中加入,但在 JDK 6,7,8 一些高版本中也添加了,JDK 8u121, 7u131, 6u141。
15+
内容:
16+
防护机制规范原文:[JEP 290: Filter Incoming Serialization Data](https://openjdk.org/jeps/290)
17+
18+
- 提供一个限制反序列化类的机制,白名单或者黑名单
19+
- 限制反序列化的深度和复杂度
20+
- 为RMI远程调用对象提供了一个验证类的机制
21+
- 定义一个可配置的过滤机制,比如可以通过配置properties文件的形式来定义过滤器
22+
23+
## 0x01 漏洞利用
24+
不让远程加载类,那就需要利用本地类反序列化或者调用工厂类执行执行方法来到到目的。
25+
- 找到一个受害者本地CLASSPATH中的类作为恶意的Reference Factory工厂类,并利用这个本地的Factory类执行命令。
26+
公开常用的利用方法是通过Tomcat的`org.apache.naming.factory.BeanFactory` 工厂类去调用 `javax.el.ELProcessor#eval`方法或`groovy.lang.GroovyShell#evaluate`方法
27+
- 利用LDAP直接返回一个恶意的序列化对象,JNDI注入依然会对该对象进行反序列化操作,利用反序列化Gadget完成命令执行。
28+
通过LDAP的 `javaSerializedData`反序列化gadget
29+
30+
详细利用方法见:[探索高版本 JDK 下 JNDI 漏洞的利用方法](https://tttang.com/archive/1405/)
31+
32+
## Ref
33+
- [探索高版本 JDK 下 JNDI 漏洞的利用方法](https://tttang.com/archive/1405/)
34+
- [JNDI:JNDI-LDAP 注入及高版本JDK限制](https://m0d9.me/2020/07/23/JNDI-LDAP%20%E6%B3%A8%E5%85%A5%E5%8F%8A%E9%AB%98%E7%89%88%E6%9C%ACJDK%E9%99%90%E5%88%B6%E2%80%94%E2%80%94%E4%B8%8A/)
35+
-[如何绕过高版本 JDK 的限制进行 JNDI 注入利用](https://paper.seebug.org/942/)
36+
- [jdk21下的jndi注入](https://xz.aliyun.com/t/15265?time__1311=GqjxnD0D2AGQqGNeWxUxQTTxfx%3D3%3DkeW4D)
37+
- [漫谈 JEP 290](https://xz.aliyun.com/t/10170)

0 commit comments

Comments
 (0)