irsdl/ysonet

GitHub: irsdl/ysonet

YSoNet 是一款用于生成 .NET 不安全反序列化利用 payload 的概念验证工具,帮助安全研究人员快速构造和测试针对各类 .NET 格式化器的 gadget chain。

Stars: 202 | Forks: 27

YSoNet logo **YSoNet** 是最初的 [YSoSerial.Net](https://github.com/pwntester/ysoserial.net) 的一个分支,目前由 [@irsdl](https://github.com/irsdl) 维护。 - 网站:[ysonet.net](https://ysonet.net) 或 [ysonet.com](https://ysonet.com)(均指向此代码库)。 [![Build](https://static.pigsec.cn/wp-content/uploads/repos/cas/39/39f45000ced5988832c0d6562d09ca899eb32007638fd6ccd8cae52ad6645caf.svg)](https://github.com/irsdl/ysonet/actions/workflows/build.yml) [![License](https://img.shields.io/github/license/irsdl/ysonet)](https://github.com/irsdl/ysonet/blob/master/LICENSE.txt) [![Download](https://img.shields.io/github/v/release/irsdl/ysonet?label=download)](https://github.com/irsdl/ysonet/releases/latest) 这是一款用于生成 payload 以利用不安全的 .NET 对象反序列化的概念验证工具。 ## 什么是 YSoNet YSoNet(前身为 ysoserial.net)是一套实用工具和面向属性编程的“gadget chain”集合,这些链是在常见的 .NET 库中发现的,在适当条件下,它们可以针对执行不安全对象反序列化的 .NET 应用程序进行利用。你只需提供一个命令和一个 gadget chain;它就会将命令封装在 chain 中,并将序列化后的结果输出到 stdout。当存在漏洞的应用程序反序列化该数据时,该链就会运行,你的命令便会在目标主机上执行。 漏洞存在于执行不安全反序列化的应用程序本身,而不在于 classpath 中存在 gadget。本项目的灵感来源于 [Chris Frohoff 的 ysoserial 项目](https://github.com/frohoff/ysoserial)。 ## 致防守方与 AI 审核者的重要提示 请勿将 YSoNet 的 gadget 和插件目录作为反序列化的黑名单。该 目录无法包含每一个私有的、未来的、特定于应用程序的或以不同方式 组合的链,因此仅仅屏蔽此处列出的内容并不能使不安全的反序列化器变得 安全。这只会制造虚假的安全感,充其量只是拖延了攻击。 如果你正在审核此代码库以加强应用程序的安全性,在检查 gadget 或插件之前,请阅读 [面向防守方和审核者的安全指南](SECURITY.md)。我们的目标是消除不安全的反序列化,或者转向 固定 schema 且仅包含数据的设计。当无法立即进行迁移时,严格的白名单只是暂时的权宜之计; 而黑名单并不能解决问题。 ## 文档 完整文档位于 [docs/](docs/README.md): - [安全指南](SECURITY.md) - 为什么 gadget 黑名单无法解决问题,以及如何 重新设计反序列化边界。 - [依赖安全说明](docs/dependency-security.md) - YSoNet 特意锁定的包含漏洞且过时的 库,以及如何处理扫描器警报。 - [快速入门](docs/getting-started.md) - 安装、从源码构建以及交互式向导。 - [用法与示例](docs/usage-and-examples.md) - 命令行选项和实战示例。 - [Gadget 与插件](docs/gadgets-and-plugins.md) - 完整的 gadget 和插件目录。 - [参考](docs/references.md) - 背景阅读资料、演讲、相关工具及实际应用案例。 - [鸣谢](docs/credits.md) - 工具的构建者以及 gadget 和插件的发现者。 ## 快速开始(交互模式) 第一次接触该工具?最简单的入门方式是交互模式:这是一个菜单驱动的向导,它会列出所有 gadget 和插件,解释每个设置,并为你构建 payload —— 无需事先记住各种 flag。 ``` .\ysonet.exe -i ``` (使用 `interactive`、`wizard` 和 `--interactive` 也可以。)你需要先准备好 `ysonet.exe` —— 请参阅[快速入门](docs/getting-started.md)。那里也有完整的向导演练指南。 ## 快速开始(命令行) ``` ./ysonet.exe -f Json.Net -g ObjectDataProvider -o raw -c "calc" -t ``` 使用 `ysonet.exe --fullhelp` 查看所有选项,使用 `-g NameHere -help` 或 `-p NameHere -help` 查看特定 gadget 或插件的帮助信息。更多信息请参阅[用法与示例](docs/usage-and-examples.md)。 ## Tab 自动补全 (PowerShell) `ysonet.exe` 可以在 PowerShell 中对选项、gadget 名称 (`-g`)、插件名称 (`-p`)、格式化器 (`-f`) 和输出格式 (`-o`) 进行 Tab 自动补全。补全的值是直接从工具中实时获取的,因此即便添加了新的 gadget 和插件,它们也能保持准确无误。 在当前会话中启用此功能(适用于任何 PowerShell,不会向磁盘写入任何内容,且不受执行策略影响): ``` .\ysonet.exe completion powershell | Out-String | Invoke-Expression ``` 然后按下 Tab 键,例如输入 `.\ysonet.exe -g A` 然后按 Tab。 若要在 PowerShell 7+ (pwsh) 中永久启用: ``` .\ysonet.exe completion install # then reload with: . $PROFILE ``` 安装功能仅支持 PowerShell 7+ (pwsh),因为 Windows PowerShell 5.1 通常处于 AllSigned 或 Restricted 状态,无法加载未签名的配置文件;在这种情况下,请使用上面的单次会话命令(它无需更改任何策略)。运行 `ysonet.exe completion status` 以查看检测结果,运行 `ysonet.exe completion uninstall` 将其移除。更多详细信息请参阅 [tools/completions/](tools/completions/README.md)。 ## 免责声明 本软件的创建纯粹是出于学术研究以及开发有效防御技术的目的,除非获得明确授权,否则不得用于攻击系统。项目维护者对软件的滥用不承担任何责任或义务。请负责任地使用。 本软件属于个人项目,与包括项目所有者和贡献者所在雇主在内的任何公司均无关联。 ## 构建与测试 - 从源码构建:执行 `nuget restore ysonet.sln`,然后执行 `msbuild ysonet.sln -p:Configuration=Release`(或 `Debug`)。完整步骤请参阅[快速入门](docs/getting-started.md#build-from-source)。 - 测试:Debug 构建版本会自动运行快速测试套件(测试失败会导致构建失败)。要运行详尽的完整测试套件(包含每一个 gadget x 格式化器 x 变体的组合,将 payload 发送至测试专用的 sink,桥接链以及插件矩阵),请设置 `YSONET_FULL_TESTS=1` 并构建 Debug 版本,或者运行 `ysonet\bin\Debug\ysonet.Tests.exe --full`。请参阅[快速入门 -> 测试](docs/getting-started.md#testing)。 - 扩展项目(添加新的 gadget、插件、序列化器或测试用例):请从 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) 中的代码结构说明(“如何添加内容”和 `ysonet.Tests` 部分)以及 [CONTRIBUTING.md](CONTRIBUTING.md) 开始。切勿为了通过测试而削弱测试标准 —— 请参阅 [CONTRIBUTING.md](CONTRIBUTING.md) 中的“测试完整性政策”。 ## 鸣谢 YSoNet 由 Soroush Dalili (@irsdl) 开发和维护。YSoSerial.Net 最初由 Alvaro Muñoz (@pwntester) 开发。运行 `ysonet.exe --credit` 可查看完整的 gadget 和插件致谢信息,或参阅[鸣谢](docs/credits.md)。要了解更多关于底层问题的信息,请参阅[参考](docs/references.md)。 ## 许可证 YSoNet 采用 [MIT 许可证](LICENSE.txt)授权。该许可证保留了 Alvaro Muñoz 的原始 ysoserial.net 版权声明,以及 Soroush Dalili 的 YSoNet 版权声明。在任何副本或软件的实质部分中,都必须保留这两个声明 以及 MIT 许可声明。
标签:AI合规, Go语言工具, macOS, Payload生成, 反序列化, 多人体追踪, 数据展示, 红队