def run_assets_asnible(request, id, format=None): if request.method == 'GET': server_assets=Server_Assets.objects.get(assets_id=id) if server_assets.username=='' and server_assets.passwd='': resource = [ {"hostname": server_assets.hostname, "port": server_assets.port, "username": server_assets.username, "password": server_assets.passwd}] ANS= ANSRunner(resource) ANS.run_model(host_list=[server_assets.hostname], module_name='setup', module_args="") assets_info = ANS.handle_cmdb_data(ANS.get_model_result()) assets_network = ANSRunner(resource) assets_process= ANSRunner(resource) assets_user= ANSRunner(resource) assets_network.run_model(host_list=[server_assets.hostname], module_name='shell', module_args="netstat -tlnp") assets_process.run_model(host_list=[server_assets.hostname], module_name='shell', module_args="ps -aux") assets_user.run_model(host_list=[server_assets.hostname], module_name='shell', module_args="cat /etc/passwd") assets_network = assets_network.get_model_result() print assets_user assets_process = assets_process.get_model_result() assets_user = assets_user.get_model_result() SQL_db.assets_ansible(id,assets_info,assets_network,assets_process,assets_user,request.user.id,server_assets.hostname) return HttpResponse('200', status=200) else: return HttpResponse('200', status=200)
def scan(ip, username, userfile, passfile, scanmodel, threding, port, assets_id, task_id, user_id): log = 'brute_log/' + str(uuid.uuid1()) os.system('touch %s' % log) if username == None: cmd = 'medusa -h %s -U %s -P %s -M %s -t %s -O %s -n %s -F' % ( ip, userfile, passfile, scanmodel, threding, log, port) print cmd else: cmd = 'medusa -h %s -u %s -P %s -M %s -t %s -O %s -n %s -F' % ( ip, username, passfile, scanmodel, threding, log, port) os.system(cmd) f = open(log, 'r') for line in f.readlines(): if 'ACCOUNT FOUND' in line: ret = line.split(' ') SQL_db.pass_db(ip=ip, username=ret[6], password=ret[8], scanmodel=scanmodel, port=port, assets_id=assets_id, task_id=task_id, user_id=user_id) print '一切都结束了OK' return 'ok' elif 'Medusa has finished' in line: print '任务结束写入数据库' return 'ok' else: continue
def get_nsfocus_report(request, id, format=None): if request.method == 'GET': arg=Nsfocus_task.objects.get(id=id) admin_user_id=request.user.id ret = nsfocus.Work(dev_id=arg.nsfocus_dev) print arg.id print arg.nsfocus_dev nsfocus_task_id= str(arg.nsfocus_task_id) result=ret.task__result(nsfocus_task_id) SQL_db.vul_db(id=id,nsfocus_task_id=nsfocus_task_id,result=result,admin_user_id=admin_user_id) return HttpResponse('200', status=200)
def connPort(self,ip, port): st = socket.socket(socket.AF_INET, socket.SOCK_STREAM) st.settimeout(0.2) try: st.connect((ip, int(port))) SQL_db.port_db(assets_id=self.assets_id,ip=ip,port=port,task_id=self.task_id, user_id=self.user_id) self.get_server(ip, port) st.close() except Exception as e: pass self.connection_lock_1.release()
def scan_port( assets_id, tgtHost, port, user_id, task_id, ): print tgtHost r = os.popen('nmap %s -p %s' % (tgtHost, port)) info = [] for port in r.readlines(): if '/tcp' in port.strip(): port_list = port.strip().split(' ') while '' in port_list: port_list.remove('') info.append(port_list) SQL_db.port_db(assets_id=assets_id, ip=tgtHost, info=info, task_id=task_id, user_id=user_id) print info return info
def get_server(self,ip, port): print ip,port port_info=[] try: r=os.popen('nmap %s -p %s -A' %(ip,port)) re = '%s/tcp' % (port) for line in r.readlines(): if re in line.strip(): t = line.strip().split(' ') serviceversion = '' while '' in t: t.remove('') for i in range(len(t)): if i == 2: servicename = t[i] elif i > 2: serviceversion= serviceversion + t[i] SQL_db.os_port_db(assets_id=self.assets_id,ip=ip,port=port,task_id=self.task_id, user_id=self.user_id, servicename=servicename,serviceversion=serviceversion ) except Exception as e: print e print '*************************************************8'
def run_assets_asnible(request, id, format=None): ret = {'code': 1001, 'data': '', 'msg': ''} if request.method == 'GET': server_assets = Server_Assets.objects.get(assets_id=id) if server_assets.username == None and server_assets.passwd == None: ret['msg'] = '没有用户名密码建议手动更新' return JsonResponse(ret) else: resource = [{ "hostname": server_assets.hostname, "port": server_assets.port, "username": server_assets.username, "password": server_assets.passwd }] ANS = ANSRunner(resource) ANS.run_model(host_list=[server_assets.hostname], module_name='setup', module_args="") assets_info = ANS.handle_cmdb_data(ANS.get_model_result()) assets_network = ANSRunner(resource) assets_process = ANSRunner(resource) assets_user = ANSRunner(resource) assets_network.run_model(host_list=[server_assets.hostname], module_name='shell', module_args="netstat -tlnp") assets_process.run_model(host_list=[server_assets.hostname], module_name='shell', module_args="ps -aux") assets_user.run_model(host_list=[server_assets.hostname], module_name='shell', module_args="cat /etc/passwd") assets_network = assets_network.get_model_result() print assets_user assets_process = assets_process.get_model_result() assets_user = assets_user.get_model_result() SQL_db.assets_ansible(id, assets_info, assets_network, assets_process, assets_user, request.user.id, server_assets.hostname) ret['code'] = 1000 ret['msg'] = 'ok' return JsonResponse(ret) elif request.method == 'POST': data = request.data.get('data') ip = data['ansible_ip'] id = Assets.objects.get(assets_ip=ip).id username = data['ansible_username'] password = data['ansible_password'] port = data['ansible_port'] resource = [{ "hostname": ip, "port": port, "username": username, "password": password }] print resource ANS = ANSRunner(resource) ANS.run_model(host_list=[ip], module_name='setup', module_args="") assets_info = ANS.handle_cmdb_data(ANS.get_model_result()) assets_network = ANSRunner(resource) assets_process = ANSRunner(resource) assets_user = ANSRunner(resource) assets_network.run_model(host_list=[ip], module_name='shell', module_args="netstat -tlnp") assets_process.run_model(host_list=[ip], module_name='shell', module_args="ps -aux") assets_user.run_model(host_list=[ip], module_name='shell', module_args="cat /etc/passwd") assets_network = assets_network.get_model_result() print assets_user assets_process = assets_process.get_model_result() assets_user = assets_user.get_model_result() SQL_db.assets_ansible(id, assets_info, assets_network, assets_process, assets_user, request.user.id, ip) ret['code'] = 1000 ret['msg'] = 'ok' return JsonResponse(ret)