
Gerador de payloads de desserialização para uma variedade de formatadores .NET
YSoNet é um fork do YSoSerial.Net original, atualmente mantido por @irsdl.
Uma ferramenta de prova de conceito para gerar payloads que exploram desserialização insegura de objetos .NET.
O YSoNet (anteriormente conhecido como ysoserial.net) é uma coleção de utilitários e "cadeias de gadgets" de programação orientada a propriedades descobertas em bibliotecas .NET comuns que podem, sob as condições certas, explorar aplicações .NET que realizam desserialização insegura de objetos. Você fornece um comando e uma cadeia de gadgets; ele envolve o comando na cadeia e serializa o resultado para a saída padrão. Quando uma aplicação vulnerável desserializa esses dados, a cadeia é executada e seu comando é executado no host.
A vulnerabilidade está na aplicação que realiza desserialização insegura, NÃO em ter gadgets no classpath. Este projeto é inspirado no .
Não transforme o catálogo de gadgets e plugins do YSoNet em uma lista de bloqueio de desserialização. O catálogo não pode incluir todas as cadeias privadas, futuras, específicas de aplicações ou compostas de forma diferente, portanto, bloquear o que está listado aqui não torna um desserializador inseguro seguro. Isso pode criar uma falsa sensação de segurança enquanto apenas atrasa um ataque.
Se você está revisando este repositório para endurecer uma aplicação, leia Orientações de segurança para defensores e revisores antes de inspecionar os gadgets ou plugins. O objetivo é remover a desserialização insegura ou migrar para um design somente de dados com esquema fixo. Uma lista de permissões estrita é uma contenção temporária quando uma migração não pode ocorrer imediatamente; uma lista de bloqueio não é remediação.
A documentação completa está em docs/:
Novo nesta ferramenta? A maneira mais fácil de começar é o modo interativo: um assistente orientado por menu que lista os gadgets e plugins, explica cada configuração e constrói o payload para você - sem necessidade de memorizar flags primeiro.
.\ysonet.exe -i
(interactive, wizard e --interactive também funcionam.) Você precisa do ysonet.exe primeiro - veja Primeiros Passos. O passo a passo completo do assistente também está lá.
./ysonet.exe -f Json.Net -g ObjectDataProvider -o raw -c "calc" -t
Veja todas as opções com ysonet.exe --fullhelp, e ajuda por gadget ou plugin com -g NameHere -help ou -p NameHere -help. Mais em Uso e Exemplos.
Requer Windows, MSBuild do Visual Studio 2022 ou das Build Tools (carga de trabalho ".NET desktop development") e nuget.exe. Todos os projetos têm como alvo o .NET Framework 4.7.2.
git clone https://github.com/irsdl/ysonet
cd ysonet
nuget restore ysonet.sln
msbuild ysonet.sln -p:Configuration=Release # ou Debug
.\ysonet\bin\Release\ysonet.exe -h
ysonet.exe para reduzir falsos positivos de antivírus; os bytes do payload não são alterados. Pule isso com -p:ObfuscateRelease=false. A Debug nunca é ofuscada.Uma compilação Debug executa a suíte de testes rápida automaticamente, e um teste com falha faz a compilação falhar (pule com -p:RunYsonetTests=false). A suíte exaustiva FULL é opcional:
.\ysonet\bin\Debug\ysonet.Tests.exe --full
Ambas são seguras: os comandos são auto-encerrados ou nunca executados, e os listeners são apenas de loopback. Detalhes e os outros níveis opcionais: Primeiros Passos e CONTRIBUTING.md.
O ysonet.exe pode autocompletar com Tab opções, nomes de gadgets (-g), nomes de plugins (-p), formatadores (-f) e formatos de saída (-o) no PowerShell. Os valores de autocompletar vêm ao vivo da ferramenta, portanto permanecem corretos à medida que gadgets e plugins são adicionados.
Ative-o para a sessão atual (funciona em qualquer PowerShell, nada é gravado em disco, não é afetado pela política de execução):
.\ysonet.exe completion powershell | Out-String | Invoke-Expression
Depois pressione Tab, por exemplo .\ysonet.exe -g A e então Tab.
Para torná-lo permanente no PowerShell 7+ (pwsh):
.\ysonet.exe completion install # depois recarregue com: . $PROFILE
O install tem como alvo apenas o PowerShell 7+ (pwsh), porque o Windows PowerShell 5.1 geralmente é AllSigned ou Restricted e não pode carregar um perfil não assinado; nesse caso, use a linha por sessão acima (ela não requer mudança de política). Execute ysonet.exe completion status para ver o que é detectado e ysonet.exe completion uninstall para removê-lo. Mais detalhes em tools/completions/.
Este software foi criado puramente para fins de pesquisa acadêmica e para o desenvolvimento de técnicas defensivas eficazes, e não se destina a ser usado para atacar sistemas, exceto quando explicitamente autorizado. Os mantenedores do projeto não são responsáveis pelo uso indevido do software. Use com responsabilidade.
Este software é um projeto pessoal e não está relacionado a nenhuma empresa, incluindo os empregadores do proprietário do projeto e dos colaboradores.
Repositório canônico: https://github.com/irsdl/ysonet
master.YOUR_USER e YOUR_BRANCH):
https://github.com/irsdl/ysonet/compare/master...YOUR_USER:ysonet:YOUR_BRANCHVeja CONTRIBUTING.md para a versão resumida. Adicionando um gadget, plugin ou serializador? Comece com o mapa de código em docs/ARCHITECTURE.md e nunca enfraqueça um teste para fazê-lo passar.
O YSoNet é desenvolvido e mantido por Soroush Dalili (@irsdl). O YSoSerial.Net foi originalmente desenvolvido por Alvaro Muñoz (@pwntester). Execute ysonet.exe --credit para os créditos completos de gadgets e plugins, ou veja Créditos. Para saber mais sobre os problemas subjacentes, veja Referências.
O YSoNet é licenciado sob a Licença MIT. A licença preserva o aviso de direitos autorais original do ysoserial.net para Alvaro Muñoz e o aviso de direitos autorais do YSoNet para Soroush Dalili. Ambos os avisos e o aviso de permissão MIT devem permanecer em todas as cópias ou partes substanciais do software.