À propos du projet
ysoserial est un outil de preuve de concept en sécurité pour générer des charges utiles Java sérialisées qui exploitent la désérialisation non sécurisée d'objets. Il a été initialement publié dans le cadre de la conférence AppSecCali 2015 intitulée « Marshalling Pickles: how deserializing objects will ruin your day », avec des chaînes de gadgets initiales pour Apache Commons Collections (3.x et 4.x), Spring Beans/Core (4.x) et Groovy (2.3.x), puis étendu avec des chaînes pour JRE 1.7u21 et de nombreuses autres bibliothèques.
Le programme principal prend une commande spécifiée par l'utilisateur, l'enveloppe dans une chaîne de gadgets spécifiée par l'utilisateur — une séquence de programmation orientée propriété assemblée à partir de classes trouvées dans des bibliothèques Java courantes — et sérialise les objets résultants vers la sortie standard. Lorsqu'une application qui a les gadgets requis sur son classpath désérialise ces données de manière non sécurisée, la chaîne est automatiquement invoquée et la commande est exécutée sur l'hôte de l'application. Le projet souligne que la vulnérabilité réside dans l'application effectuant une désérialisation non sécurisée, et non dans la simple présence de bibliothèques de gadgets sur le classpath.
L'outil est fourni avec plus de trente types de charges utiles contribués par de nombreux chercheurs. Cela inclut sept variantes de CommonsCollections couvrant commons-collections 3.x et commons-collections4 4.x, ainsi que des chaînes pour CommonsBeanutils, Spring (deux variantes), Groovy, Hibernate (deux variantes), C3P0, BeanShell, Jython, Clojure, Mozilla Rhino (deux variantes), ROME, JSON-lib, MyFaces (deux variantes), Click, FileUpload, Vaadin, Wicket, Javassist/Weld, intercepteurs JBoss, AspectJWeaver, Jdk7u21, URLDNS (qui ne liste aucune dépendance), et JRMPClient/JRMPListener. Un outil auxiliaire inclus, ysoserial.exploit.RMIRegistryExploit, est montré dans les exemples pour livrer une charge utile à un registre RMI.
L'utilisation est une commande unique, par exemple : java -jar ysoserial.jar CommonsCollections1 calc.exe. La charge utile générée peut être redirigée directement vers une cible ou enregistrée dans un fichier, comme démontré avec netcat dans le README. Des fichiers JAR préconstruits sont disponibles dans les versions GitHub, et le projet peut être construit à partir des sources avec Java 1.7+ et Maven 3.x+ en utilisant 'mvn clean package -DskipTests'.
Les mainteneurs déclarent explicitement que le logiciel a été créé uniquement pour la recherche académique et le développement de techniques défensives efficaces, et qu'il n'est pas destiné à être utilisé pour attaquer des systèmes sauf autorisation explicite ; les utilisateurs sont invités à l'utiliser de manière responsable. Les projets connexes référencés dans le README incluent marshalsec (un projet frère couvrant d'autres formats et bibliothèques de désérialisation Java), ysoserial.net (l'équivalent .NET), et la Java-Deserialization-Cheat-Sheet, qui collecte les vulnérabilités, outils et comptes rendus associés.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.