Sobre el proyecto
ysoserial es una herramienta de seguridad de prueba de concepto para generar cargas útiles Java serializadas que explotan la deserialización insegura de objetos. Fue lanzada originalmente como parte de la charla AppSecCali 2015 'Marshalling Pickles: cómo deserializar objetos arruinará tu día', con cadenas de gadgets iniciales para Apache Commons Collections (3.x y 4.x), Spring Beans/Core (4.x) y Groovy (2.3.x), y fue ampliada posteriormente con cadenas para JRE 1.7u21 y muchas otras bibliotecas.
El programa principal toma un comando especificado por el usuario, lo envuelve en una cadena de gadgets especificada por el usuario —una secuencia de programación orientada a propiedades ensamblada a partir de clases encontradas en bibliotecas Java comunes— y serializa los objetos resultantes a stdout. Cuando una aplicación que tiene los gadgets requeridos en su classpath deserializa estos datos de manera insegura, la cadena se invoca automáticamente y el comando se ejecuta en el host de la aplicación. El proyecto enfatiza que la vulnerabilidad radica en la aplicación que realiza una deserialización insegura, no en la mera presencia de bibliotecas de gadgets en el classpath.
La herramienta incluye más de treinta tipos de cargas útiles contribuidas por numerosos investigadores. Estas incluyen siete variantes de CommonsCollections que abarcan commons-collections 3.x y commons-collections4 4.x, además de cadenas para CommonsBeanutils, Spring (dos variantes), Groovy, Hibernate (dos variantes), C3P0, BeanShell, Jython, Clojure, Mozilla Rhino (dos variantes), ROME, JSON-lib, MyFaces (dos variantes), Click, FileUpload, Vaadin, Wicket, Javassist/Weld, interceptores JBoss, AspectJWeaver, Jdk7u21, URLDNS (que no lista dependencias) y JRMPClient/JRMPListener. Un helper incluido, ysoserial.exploit.RMIRegistryExploit, se muestra en los ejemplos para entregar una carga útil a un registro RMI.
El uso es un solo comando, por ejemplo: java -jar ysoserial.jar CommonsCollections1 calc.exe. La carga útil generada puede enviarse directamente a un objetivo o guardarse en un archivo, como se demuestra con netcat en el README. Hay jars precompilados disponibles en las releases de GitHub, y el proyecto se puede construir desde el código fuente con Java 1.7+ y Maven 3.x+ usando 'mvn clean package -DskipTests'.
Los mantenedores declaran explícitamente que el software fue creado puramente para investigación académica y el desarrollo de técnicas defensivas efectivas, y que no está destinado a ser utilizado para atacar sistemas excepto donde esté explícitamente autorizado; se pide a los usuarios que lo usen de manera responsable. Los proyectos relacionados referenciados en el README incluyen marshalsec (un proyecto hermano que cubre otros formatos y bibliotecas de deserialización de Java), ysoserial.net (el equivalente para .NET) y la Java-Deserialization-Cheat-Sheet, que recopila vulnerabilidades relacionadas, herramientas y análisis.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.