
Générateur de charges utiles de désérialisation pour divers formateurs .NET
YSoNet est un fork de l'original YSoSerial.Net, actuellement maintenu par @irsdl.
Un outil de preuve de concept pour générer des payloads qui exploitent la désérialisation non sécurisée d'objets .NET.
YSoNet (anciennement connu sous le nom de ysoserial.net) est une collection d'utilitaires et de « chaînes de gadgets » de programmation orientée propriété découvertes dans des bibliothèques .NET courantes qui peuvent, dans les bonnes conditions, exploiter des applications .NET effectuant une désérialisation non sécurisée d'objets. Vous lui donnez une commande et une chaîne de gadgets ; il enveloppe la commande dans la chaîne et sérialise le résultat sur stdout. Lorsqu'une application vulnérable désérialise ces données, la chaîne s'exécute et votre commande s'exécute sur l'hôte.
La vulnérabilité réside dans l'application qui effectue une désérialisation non sécurisée, PAS dans la présence de gadgets sur le classpath. Ce projet est inspiré du projet ysoserial de Chris Frohoff.
Ne transformez pas le catalogue de gadgets et de plugins de YSoNet en liste de blocage de désérialisation. Le catalogue ne peut pas inclure toutes les chaînes privées, futures, spécifiques à une application ou composées différemment, donc bloquer ce qui est listé ici ne rend pas un désérialiseur non sécurisé sûr. Cela peut créer une fausse assurance tout en ne faisant que retarder une attaque.
Si vous examinez ce dépôt pour durcir une application, lisez Conseils de sécurité pour les défenseurs et les réviseurs avant d'inspecter les gadgets ou les plugins. L'objectif est de supprimer la désérialisation non sécurisée ou de passer à une conception à schéma fixe, uniquement basée sur les données. Une liste d'autorisation stricte est un confinement temporaire lorsqu'une migration ne peut pas avoir lieu immédiatement ; une liste de blocage n'est pas une remédiation.
La documentation complète se trouve dans docs/ :
Nouveau sur cet outil ? Le moyen le plus simple de commencer est le mode interactif : un assistant piloté par menu qui liste les gadgets et les plugins, explique chaque paramètre et construit le payload pour vous - pas besoin de mémoriser les drapeaux d'abord.
.\ysonet.exe -i
(interactive, wizard et --interactive fonctionnent aussi.) Vous avez besoin de ysonet.exe d'abord - voir Pour commencer. La procédure complète de l'assistant s'y trouve également.
./ysonet.exe -f Json.Net -g ObjectDataProvider -o raw -c "calc" -t
Voir toutes les options avec ysonet.exe --fullhelp, et l'aide par gadget ou par plugin avec -g NomIci -help ou -p NomIci -help. Plus de détails dans Utilisation et exemples.
Nécessite Windows, MSBuild de Visual Studio 2022 ou des Build Tools (charge de travail « Développement desktop .NET »), et nuget.exe. Chaque projet cible .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 pour réduire les faux positifs antivirus ; les octets du payload sont
inchangés. Ignorez cela avec -p:ObfuscateRelease=false. Debug n'est jamais obscurci.Une compilation Debug exécute automatiquement la suite de tests rapide, et un test échoué fait échouer la compilation
(ignorez cela avec -p:RunYsonetTests=false). La suite exhaustive FULL est facultative :
.\ysonet\bin\Debug\ysonet.Tests.exe --full
Les deux sont sûrs : les commandes sont auto-fermantes ou jamais exécutées, et les écouteurs sont en boucle locale uniquement. Détails et autres niveaux facultatifs : Pour commencer et CONTRIBUTING.md.
ysonet.exe peut compléter par tabulation les options, les noms de gadgets (-g), les noms de plugins (-p), les formateurs (-f) et les formats de sortie (-o) dans PowerShell. Les valeurs de complétion proviennent en direct de l'outil, elles restent donc correctes à mesure que des gadgets et des plugins sont ajoutés.
Activez-la pour la session en cours (fonctionne dans n'importe quel PowerShell, rien n'est écrit sur le disque, non affecté par la stratégie d'exécution) :
.\ysonet.exe completion powershell | Out-String | Invoke-Expression
Ensuite, appuyez sur Tab, par exemple .\ysonet.exe -g A puis Tab.
Pour la rendre permanente dans PowerShell 7+ (pwsh) :
.\ysonet.exe completion install # puis rechargez avec : . $PROFILE
L'installation cible PowerShell 7+ (pwsh) uniquement, car Windows PowerShell 5.1 est souvent AllSigned ou Restricted et ne peut pas charger un profil non signé ; dans ce cas, utilisez la ligne par session ci-dessus (elle ne nécessite aucun changement de stratégie). Exécutez ysonet.exe completion status pour voir ce qui est détecté, et ysonet.exe completion uninstall pour le supprimer. Plus de détails dans tools/completions/.
Ce logiciel a été créé uniquement à des fins de recherche académique et pour le développement de techniques défensives efficaces, et n'est pas destiné à être utilisé pour attaquer des systèmes sauf autorisation explicite. Les mainteneurs du projet ne sont pas responsables de l'utilisation abusive du logiciel. Utilisez-le de manière responsable.
Ce logiciel est un projet personnel et n'est lié à aucune entreprise, y compris les employeurs du propriétaire du projet et des contributeurs.
Dépôt canonique : https://github.com/irsdl/ysonet
master.YOUR_USER et YOUR_BRANCH) :
https://github.com/irsdl/ysonet/compare/master...YOUR_USER:ysonet:YOUR_BRANCHVoir CONTRIBUTING.md pour la version courte. Vous ajoutez un gadget, un plugin ou un sérialiseur ? Commencez par la carte du code dans docs/ARCHITECTURE.md, et n'affaiblissez jamais un test pour le faire passer.
YSoNet est développé et maintenu par Soroush Dalili (@irsdl). YSoSerial.Net a été initialement développé par Alvaro Muñoz (@pwntester). Exécutez ysonet.exe --credit pour les crédits complets des gadgets et des plugins, ou consultez Crédits. Pour en savoir plus sur les problèmes sous-jacents, consultez Références.
YSoNet est sous licence MIT License. La licence préserve la notice de copyright originale de ysoserial.net pour Alvaro Muñoz et la notice de copyright de YSoNet pour Soroush Dalili. Les deux notices et la notice de permission MIT doivent rester dans toutes les copies ou portions substantielles du logiciel.