freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

ZKar:一款功能强大的Java序列化协议分析工具
2022-03-28 22:47:07
所属地 广西


关于ZKar

ZKar是一款功能强大的Java序列化协议分析工具,该工具基于Go语言开发,目前仍然处于积极开发阶段。

当前版本的ZKar提供了下列功能:

1、嵌入了一个Java序列化Payload解析器和查看器,基于纯Go开发,不需要CGO或JDK;

2、可将Java序列化协议转换为Go结构;

3、提供了一个可以操作Java序列化数据的Go库;

4、WIP:Go语言实现的ysoserial

5、WIP:Java类字节码解析器、查看器和数据操作;

6、WIP:Go语言实现的RMI/LDAP;

工具安装

ZKar的安装非常简单,我们可以直接使用下列命令将该项目源码克隆至本地:

git clone https://github.com/phith0n/zkar.git

或者直接使用“go get”命令来安装ZKar以及相关的依赖组件和代码库:

go get -u github.com/phith0n/zkar

接下来,使用“github.com/phith0n/zkar/*”配置应用程序:

package main

 

import (

"fmt"

"github.com/phith0n/zkar/serz"

"io/ioutil"

"log"

)

 

func main() {

data, _ := ioutil.ReadFile("./testcases/ysoserial/CommonsCollections6.ser")

serialization, err := serz.FromBytes(data)

if err != nil {

log.Fatal("parse error")

}

 

fmt.Println(serialization.ToString())

}

命令行实用工具

ZKar还提供了命令行实用工具,我们可以直接使用下列命令进行使用:

$ go run main.go

NAME:

   zkar - A Java serz tool

 

USAGE:

   main [global options] command [command options] [arguments...]

 

COMMANDS:

   generate   生成Java序列化攻击Payload

   dump      解析Java序列化数据流并导出数据结构

   help, h     显示命令列表和帮助信息

 

GLOBAL OPTIONS:

   --help, -h  显示帮助信息

工具使用样例

下列命令可以从ysoserial导出CommonsBeanutils3 Payload:

$ go run main.go dump -f "$(pwd)/testcases/ysoserial/CommonsBeanutils3.ser"

测试

ZKar是一款经过大量测试的工具,并通过了所有ysoserial生成的小工具的解析和重建测试。这意味着由ysoserial生成的gadget可以被ZKar解析,解析后的数据结构可以转换为与原始字符串相等的字节字符串:

工具使用演示

演示视频:点我观看

许可证协议

本项目的开发与发布遵循MIT开源许可证协议。

项目地址

ZKar:GitHub传送门

参考资料

https://github.com/frohoff/ysoserial

https://github.com/NickstaDB/SerializationDumper

https://github.com/GrrrDog/Java-Deserialization-Cheat-Sheet

# JAVA序列化和反序列 # Java代码审计 # JAVA安全
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录