SerializeJava-反序列化图形化工具

公众号:泷羽Sec-Ceo


声明!

        所提供的工具资料仅供学习之用。这些资料旨在帮助用户增进知识、提升技能,并促进个人成长与学习。用户在使用这些资料时,应严格遵守相关法律法规,不得将其用于任何非法、欺诈、侵权或其他不当用途。本人和团队不对用户因使用这些资料而产生的任何后果负责,包括但不限于因操作不当、误解资料内容或违反法律法规而导致的损失或损害。用户应自行承担使用这些资料的风险,并在使用前进行充分的了解和评估。


介绍

        SerializeJava是采用Go语言并结合Fyne GUI库开发的图形化工具,展示JAVA序列化流,并集成了多项便捷功能,包括一键插入脏数据、UTF过长编码(Utf OverLoad Encoding)绕过WAF的技术,以及修改类SerializeVersionUID的功能。

        项目地址

https://github.com/byname66/SerializeJava.git


安装方法

        下载源码后,在根目录下执行go run main.go命令;或直接下载并运行发行版中的exe可执行文件。


工具界面

        首页界面

SerializeJava-反序列化图形化工具_第1张图片

展示序列化流结构

        输入一段经过Base64编码的JAVA对象序列化流,然后点击“show the Stream Structure”按钮,即可清晰地查看该序列化流的结构。

SerializeJava-反序列化图形化工具_第2张图片

插入脏数据

        输入想要插入的字节数。 这个功能可以来绕过某些WAF对长度的限制检测。

        由于这里插入脏数据的部分位于序列化流的前端,这能有效隐藏危险的序列化数据,可以使得WAF检测不到危险的序列化数据。

         本工具在序列化流中插入的是TC_RESET标记--(对应字节值byte)0x79。 然后点击最下面的“Change”按钮,便可以包含脏数据的序列化流并将其Base64编码。(可与其它功能一键使用)

SerializeJava-反序列化图形化工具_第3张图片

过长UTF字符编码

        可以选择将UTF字符进行二字节编码或三字节编码。

        一般情况下的UTF字符是由一个字节进行编码,如'a'对应ASCII码97。

        但在JAVA反序列化过程中支持将两个或三个字节组合解码为UTF字符。

        此时原本UTF字符'a'将会变成两个或三个不可见的字节,从而绕过某些针对UTF字符的检测机制(如检测恶意类或恶意参数) 比如CC5在一字节UTF编码的情况下:

SerializeJava-反序列化图形化工具_第4张图片

        而对其进行二字节UTF编码的情况下:

SerializeJava-反序列化图形化工具_第5张图片

        同样的,选择后可以点击“Change”按钮生成相应的Base64编码(可与其它功能一键使用)

SerializeJava-反序列化图形化工具_第6张图片

改变SerialVerionUID

        在输入序列化流的Base64编码后,点击“Check”按钮,会先解析出流中各个类的类名及其对应的SerialVersionUID,可在输入框中改变相应数据。

        这样可以避免反序列化端(服务端)与序列化端(客户端)使用的版本不一致(由SerialVersionUID判断)引发的错误。

        同样的,改变可以点击“Change”按钮,生成相应的Base64编码(可与其它功能一键使用)

SerializeJava-反序列化图形化工具_第7张图片

你可能感兴趣的:(网络安全,web安全,Java)