针对WebLogic T3(及T3S)监听器的原生Java反序列化利用工具(概述见此处)。需要第三方依赖ysoserial和wlthint3client。
需要Oracle Java 7或8。未在其他Java供应商(如OpenJDK或IBM JRE)上测试,因此不保证对它们的支持。可能能用Java 9或10构建,但不保证支持。
WLT3Serial通过Gradle构建自动化系统构建。应使用Gradle 4进行构建,尽管其他版本已部分测试(见开发部分)。
第三方依赖:
步骤:
git clone https://github.com/Bort-Millipede/WLT3Serial.gitgradle clean preparegradle build -x test需要Oracle Java 7或8。未在其他Java供应商(如OpenJDK或IBM JRE)上测试,因此不保证对它们的支持。可能能用Java 9或10,但不保证支持。
如果使用Property(默认)、Bind或WLBind利用方式,应如下执行WLT3Serial(注意java '-cp'参数的值):
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_CMDjava -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'参数的值):
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_CMDjava -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以下是内置帮助菜单的打印输出:
用法: 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方式与其他方式完全不同。
建议用户使用sslscan或nmap ssl-enum-ciphers脚本扫描目标服务,以了解支持的协议。这样,用户可以调整执行WLT3Serial时的--t3s选项。
为改进JavaUnserializeExploits weblogic.py和loubia的利用方式,WLT3Serial使用Java开发,并利用以下资源连接到WebLogic T3/T3S服务:
重点放在使用Java原生处理T3连接,以及适当的错误处理,以提供有用的命令输出。
WLT3Serial使用以下软件版本开发:
开发期间的现场测试针对以下WebLogic服务器版本进行:
开发者免费提供本软件,不提供任何担保,并且对使用本软件对系统造成的任何损害不承担任何责任。用户有责任在使用本软件时遵守所有地方、州和联邦法律。
(C) 2017, 2018 Jeffrey Cap (Bort_Millipede)