Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
WLT3Serial — 针对WebLogic T3(以及T3S)监听器的原生Java反序列化利用。 | Kitploit
工具/GitHubGitHub/bort-millipede/wlt3serial
Payload生成漏洞分析漏洞利用Web应用程序漏洞利用渗透测试Archived
GitHubbort-millipede/wlt3serial

WLT3Serial

针对WebLogic T3(以及T3S)监听器的原生Java反序列化利用。

查看仓库
34106年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

WLT3Serial

针对WebLogic T3(及T3S)监听器的原生Java反序列化利用工具(概述见此处)。需要第三方依赖ysoserial和wlthint3client。

与JavaUnserializeExploits weblogic.py和loubia相比的优缺点

优点:

  • 原生使用Java处理T3/T3S通信(针对大多数利用方式),而非使用Python脚本的一次性数据包捕获,因此应能适用于所有WebLogic服务器版本。
  • 每次执行时通过ysoserial直接生成对象载荷,而非一次性生成的对象载荷,因此支持最新版ysoserial中的所有对象载荷类型。
  • 解析(并按需显示)执行期间抛出的所有异常,并根据这些异常清晰说明执行的假定总体结果。包括通知用户利用是否成功、SSL/TLS通信是否失败,或目标WebLogic服务器似乎已打补丁。
  • 提供多种载荷投递方式(类似JavaUnserialize weblogic.py/loubia和ysoserial.exploit.RMIRegistryExploit)。

缺点:

  • 依赖一个.jar文件(wlthint3client.jar),由于Oracle许可条款,我无法分发该文件,只能通过Oracle用户名/密码下载。因此,我只能分发一个“精简版”发布jar,用户仍需从Oracle获取所需的wlthint3client.jar文件。
  • 由于JVM在初始化期间加载类的方式问题,不再支持使用完整的全功能可执行WLT3Serial jar文件(WLT3Serial-full-[VERSION].jar)。因此,WLT3Serial需要多个文件(见下文)才能正常运行并发挥全部功能。

构建

需要Oracle Java 7或8。未在其他Java供应商(如OpenJDK或IBM JRE)上测试,因此不保证对它们的支持。可能能用Java 9或10构建,但不保证支持。

WLT3Serial通过Gradle构建自动化系统构建。应使用Gradle 4进行构建,尽管其他版本已部分测试(见开发部分)。

第三方依赖:

  • ysoserial - 用于生成对象反序列化载荷;需要v0.0.5或更高版本(如果用户未提前提供,Gradle将自动下载)。
  • wlthint3client - 用于原生处理T3/T3S连接;必须由用户提供(由于Oracle许可条款):可作为wls1036_dev.zip文件的一部分下载(需要Oracle用户名/密码),该文件位于此页面(“Oracle WebLogic Server 10.3.6”部分下的“适用于Mac OSX、Windows和Linux的Zip发行版”),文件路径为/wlserver/server/lib/wlthint3client.jar。

步骤:

  1. 克隆WLT3Serial仓库。 git clone https://github.com/Bort-Millipede/WLT3Serial.git
  2. 打开终端并导航到克隆的仓库。
  3. 执行以下命令创建初步构建目录: gradle clean prepare
  4. 将下载的wlthint3client.jar文件放入build/libs/目录。
  5. (可选)如果使用偏好的ysoserial版本(v0.0.5或更高),将ysoserial.jar文件放入build/libs/目录。
  6. 要构建WLT3Serial jar文件(位于build/libs/WLT3Serial-[VERSION].jar),执行以下命令: gradle build -x test

用法

需要Oracle Java 7或8。未在其他Java供应商(如OpenJDK或IBM JRE)上测试,因此不保证对它们的支持。可能能用Java 9或10,但不保证支持。

如果使用Property(默认)、Bind或WLBind利用方式,应如下执行WLT3Serial(注意java '-cp'参数的值):

  • 在*nix上: java -cp /path/to/ysoserial.jar:/path/to/wlthint3client.jar:/path/to/WLT3Serial-[VERSION].jar bort.millipede.wlt3.WLT3Serial [OPTIONS] REMOTE_HOST REMOTE_PORT PAYLOAD_TYPE PAYLOAD_CMD
  • 在Windows上: java -cp \path\to\ysoserial.jar;\path\to\wlthint3client.jar;\path\to\WLT3Serial-[VERSION].jar bort.millipede.wlt3.WLT3Serial [OPTIONS] REMOTE_HOST REMOTE_PORT PAYLOAD_TYPE PAYLOAD_CMD

如果使用CustomClass利用方式,应如下执行WLT3Serial(注意java '-cp'参数的值):

  • 在*nix上: java -cp /path/to/ysoserial.jar:/path/to/WLT3Serial-[VERSION].jar:/path/to/wlthint3client.jar bort.millipede.wlt3.WLT3Serial [OPTIONS] REMOTE_HOST REMOTE_PORT PAYLOAD_TYPE PAYLOAD_CMD
  • 在Windows上: java -cp \path\to\ysoserial.jar;\path\to\WLT3Serial-[VERSION].jar;\path\to\wlthint3client.jar bort.millipede.wlt3.WLT3Serial [OPTIONS] REMOTE_HOST REMOTE_PORT PAYLOAD_TYPE PAYLOAD_CMD

以下是内置帮助菜单的打印输出:

root@kitploit:~
用法: WLT3Serial [OPTIONS] REMOTE_HOST REMOTE_PORT PAYLOAD_TYPE PAYLOAD_CMD

选项:
	--help			打印用法(你现在看到的)

	--verbose		详细输出(完整的异常输出;默认禁用)

	--method=EXPLOIT_METHOD		投递生成的ysoserial载荷的利用方式
		利用方式:
			Property	将ysoserial载荷作为连接环境属性值发送(默认;通过javax.naming.Context.lookup(),是ysoserial.exploit.RMIRegistryExploit的变体)
			Bind		将ysoserial载荷作为要绑定的对象发送(通过javax.naming.Context.bind(),类似ysoserial.exploit.RMIRegistryExploit)
			WLBind		将ysoserial载荷作为要绑定的WebLogic RMI对象发送(通过weblogic.rmi.Naming.bind(),类似ysoserial.exploit.RMIRegistryExploit)
			CustomClass	在T3/T3S连接初始化期间发送ysoserial载荷(通过自定义weblogic.rjvm.ClassTableEntry类,类似JavaUnserializeExploits weblogic.py)

	--t3s[=PROTOCOL]		使用T3S(传输加密)连接(默认禁用)
		协议:
			TLSv1.2
			TLSv1.1
			TLSv1(默认)
			SSLv3
			SSLv2(仅SSLv2Hello握手,然后回退到SSLv3进行通信:这是Oracle Java的限制,非WLT3Serial限制)


可用载荷类型(WebLogic通常对“CommonsCollectionsX”和“JRMPClientX”类型易受攻击):
	(此处列出可用载荷)

利用方式说明

Property、Bind和WLBind方式非常相似。以至于如果目标系统无法通过这些方式之一被利用,则很可能也无法通过其中任何一种被利用。CustomClass方式与其他方式完全不同。

Property/Bind/WLBind方式的优缺点:

  • 优点:由于这些方式通过wlthint3client.jar中可用的WebLogic类/方法进行尝试利用,T3/T3S通信被原生处理,并生成有意义的输出(异常、堆栈跟踪等),以帮助用户判断利用可能性和成功与否。
  • 缺点:截至撰写时,Oracle已修补了使用这些方式的大部分(如果不是全部)利用模式。

CustomClass方式的优缺点:

  • 优点:由于此方式攻击的是与上述方式不同的WebLogic类加载器(包含额外的易受攻击库),因此可以使用更成功的利用模式。
  • 缺点:由于此方式本质上破坏了原生T3/T3S通信,因此无法生成为帮助用户判断利用可能性和成功与否的有意义输出(异常、堆栈跟踪等)。

T3S连接说明

建议用户使用sslscan或nmap ssl-enum-ciphers脚本扫描目标服务,以了解支持的协议。这样,用户可以调整执行WLT3Serial时的--t3s选项。

开发

为改进JavaUnserializeExploits weblogic.py和loubia的利用方式,WLT3Serial使用Java开发,并利用以下资源连接到WebLogic T3/T3S服务:

  • https://docs.oracle.com/cd/E21764_01/web.1111/e13717/wlthint3client.htm
  • https://docs.oracle.com/cd/E13222_01/wls/docs92/jndi/jndi.html
  • https://docs.oracle.com/cd/E11035_01/wls100/javadocs/weblogic/rmi/Naming.html
  • https://gist.github.com/fkrauthan/ac8624466a4dee4fd02f

重点放在使用Java原生处理T3连接,以及适当的错误处理,以提供有用的命令输出。

WLT3Serial使用以下软件版本开发:

  • Oracle Java 8 Update 191
  • Oracle Java 7 Update 80 and Oracle Java 7 Update 17
  • Gradle 4.10.2, 3.2(部分测试), 2.10(部分测试), 1.4(部分测试)

开发期间的现场测试针对以下WebLogic服务器版本进行:

  • 10.3.6
  • 12.1.3
  • 12.2.1.1(仅对某些载荷类型和利用方式易受攻击)
  • 12.2.1.2(仅对某些载荷类型和利用方式易受攻击)
  • 12.2.1.3(部分易受攻击)

免责声明

开发者免费提供本软件,不提供任何担保,并且对使用本软件对系统造成的任何损害不承担任何责任。用户有责任在使用本软件时遵守所有地方、州和联邦法律。

版权

(C) 2017, 2018 Jeffrey Cap (Bort_Millipede)

下载工具