इस प्रोजेक्ट के बारे में

ysoserial एक proof-of-concept सुरक्षा उपकरण है जो असुरक्षित ऑब्जेक्ट deserialization का फायदा उठाने वाले सीरियलाइज़्ड Java पेलोड उत्पन्न करने के लिए है। इसे मूल रूप से AppSecCali 2015 टॉक 'Marshalling Pickles: how deserializing objects will ruin your day' के हिस्से के रूप में जारी किया गया था, जिसमें Apache Commons Collections (3.x और 4.x), Spring Beans/Core (4.x) और Groovy (2.3.x) के लिए प्रारंभिक गैजेट चेन थीं, और बाद में इसे JRE 1.7u21 और कई अन्य लाइब्रेरीज़ के लिए चेन के साथ विस्तारित किया गया। मुख्य ड्राइवर प्रोग्राम उपयोगकर्ता द्वारा निर्दिष्ट कमांड लेता है, उसे उपयोगकर्ता द्वारा निर्दिष्ट गैजेट चेन में लपेटता है — सामान्य Java लाइब्रेरीज़ में पाई जाने वाली कक्षाओं से इकट्ठी की गई property-oriented programming अनुक्रम — और परिणामी ऑब्जेक्ट्स को stdout पर सीरियलाइज़ करता है। जब कोई एप्लिकेशन जिसके classpath पर आवश्यक गैजेट्स हैं, इस डेटा को असुरक्षित रूप से deserialize करता है, तो चेन स्वचालित रूप से सक्रिय हो जाती है और कमांड एप्लिकेशन होस्ट पर निष्पादित हो जाती है। परियोजना इस बात पर जोर देती है कि कमजोरी असुरक्षित deserialization करने वाले एप्लिकेशन में है, न कि classpath पर गैजेट लाइब्रेरीज़ की उपस्थिति मात्र में। यह उपकरण कई शोधकर्ताओं द्वारा योगदान किए गए तीस से अधिक पेलोड प्रकारों के साथ आता है। इनमें commons-collections 3.x और commons-collections4 4.x को कवर करने वाले सात CommonsCollections वेरिएंट शामिल हैं, साथ ही CommonsBeanutils, Spring (दो वेरिएंट), Groovy, Hibernate (दो वेरिएंट), C3P0, BeanShell, Jython, Clojure, Mozilla Rhino (दो वेरिएंट), ROME, JSON-lib, MyFaces (दो वेरिएंट), Click, FileUpload, Vaadin, Wicket, Javassist/Weld, JBoss interceptors, AspectJWeaver, Jdk7u21, URLDNS (जिसमें कोई निर्भरता सूचीबद्ध नहीं है), और JRMPClient/JRMPListener के लिए चेन शामिल हैं। एक बंडल सहायक, ysoserial.exploit.RMIRegistryExploit, उदाहरणों में RMI रजिस्ट्री को पेलोड पहुंचाने के लिए दिखाया गया है। उपयोग एक एकल कमांड है, उदाहरण के लिए: java -jar ysoserial.jar CommonsCollections1 calc.exe। उत्पन्न पेलोड को सीधे लक्ष्य पर पाइप किया जा सकता है या फ़ाइल में सहेजा जा सकता है, जैसा कि README में netcat के साथ प्रदर्शित किया गया है। पहले से निर्मित jars GitHub releases से उपलब्ध हैं, और परियोजना को Java 1.7+ और Maven 3.x+ के साथ 'mvn clean package -DskipTests' का उपयोग करके स्रोत से बनाया जा सकता है। अनुरक्षक स्पष्ट रूप से बताते हैं कि सॉफ्टवेयर विशुद्ध रूप से शैक्षणिक अनुसंधान और प्रभावी रक्षात्मक तकनीकों के विकास के लिए बनाया गया था, और यह सिस्टम पर हमला करने के लिए उपयोग करने का इरादा नहीं है, सिवाय उन मामलों के जहां स्पष्ट रूप से अधिकृत किया गया हो; उपयोगकर्ताओं से इसे जिम्मेदारी से उपयोग करने के लिए कहा जाता है। README में संदर्भित संबंधित परियोजनाओं में marshalsec (अन्य Java deserialization प्रारूपों और लाइब्रेरीज़ को कवर करने वाली एक सहयोगी परियोजना), ysoserial.net (.NET समकक्ष), और Java-Deserialization-Cheat-Sheet शामिल हैं, जो संबंधित कमजोरियों, उपकरणों और write-ups को एकत्र करता है।