声明
所提供的工具资料仅供学习之用。这些资料旨在帮助用户增进知识、提升技能,并促进个人成长与学习。用户在使用这些资料时,应严格遵守相关法律法规,不得将其用于任何非法、欺诈、侵权或其他不当用途。本人和团队不对用户因使用这些资料而产生的任何后果负责,包括但不限于因操作不当、误解资料内容或违反法律法规而导致的损失或损害。用户应自行承担使用这些资料的风险,并在使用前进行充分的了解和评估。
SerializeJava
介绍
SerializeJava是采用Go语言并结合Fyne GUI库开发的图形化工具,展示JAVA序列化流,并集成了多项便捷功能。
包括一键插入脏数据、UTF过长编码(Utf OverLoad Encoding)绕过WAF的技术,以及修改类SerializeVersionUID的功能。
项目地址:
https://github.com/byname66/SerializeJava.git
安装方法
下载源码后,在根目录下执行go run main.go命令;或直接下载并运行发行版中的exe可执行文件。
首页界面
展示序列化流结构
输入一段经过Base64编码的JAVA对象序列化流,然后点击“show the Stream Structure”按钮,即可清晰地查看该序列化流的结构。
插入脏数据
输入想要插入的字节数。 这个功能可以来绕过某些WAF对长度的限制检测。
由于这里插入脏数据的部分位于序列化流的前端,这能有效隐藏危险的序列化数据,可以使得WAF检测不到危险的序列化数据。
本工具在序列化流中插入的是TC_RESET标记--(对应字节值byte)0x79。 然后点击最下面的“Change”按钮,便可以包含脏数据的序列化流并将其Base64编码。(可与其它功能一键使用)
过长UTF字符编码
可以选择将UTF字符进行二字节编码或三字节编码。
一般情况下的UTF字符是由一个字节进行编码,如'a'对应ASCII码97。
但在JAVA反序列化过程中支持将两个或三个字节组合解码为UTF字符。此时原本UTF字符'a'将会变成两个或三个不可见的字节,从而绕过某些针对UTF字符的检测机制(如检测恶意类或恶意参数) 比如CC5在一字节UTF编码的情况下:
而对其进行二字节UTF编码的情况下:
同样的,选择后可以点击“Change”按钮生成相应的Base64编码(可与其它功能一键使用)
改变SerialVerionUID
在输入序列化流的Base64编码后,点击“Check”按钮,会先解析出流中各个类的类名及其对应的SerialVersionUID,可在输入框中改变相应数据。
这样可以避免反序列化端(服务端)与序列化端(客户端)使用的版本不一致(由SerialVersionUID判断)引发的错误。
同样的,改变可以点击“Change”按钮,生成相应的Base64编码(可与其它功能一键使用)
推荐站内搜索:最好用的开发软件、免费开源系统、渗透测试工具云盘下载、最新渗透测试资料、最新黑客工具下载……
还没有评论,来说两句吧...