1. 程式人生 > 實用技巧 >awvs13破解安裝、批量掃描指令碼

awvs13破解安裝、批量掃描指令碼

安裝awvs參照這篇部落格,跟著一步一步來就能裝好,這裡就不再另作介紹了

https://www.cnblogs.com/xyongsec/p/12370488.html

如果一個一個新增掃描目標還是比較麻煩的,這裡可以通過指令碼來批量 新增 掃描目標

需要注意修改幾個地方

1:awvs的訪問地址。如果沒有改過就是預設的https://localhost:3443

2:awvs的API介面。

然後點Profile

找到API Key,如果沒有則新建一個,如果有就直接copy

然後替換python指令碼中的資料

# -*-coding:utf-8-*-
# @Author:malphite.tang
import
json import requests from queue import Queue requests.packages.urllib3.disable_warnings() # 消除equests提示警告 class Awvs(): def __init__(self): self.host = 'https://localhost:3443' self.add_url_api = self.host + '/api/v1/targets' # 新增任務介面 self.speed_url_api = self.host + '/api/v1/targets/{}/configuration
' # 設定掃描速度介面 self.scan_url_api = self.host + '/api/v1/scans' # 啟動掃描任務介面 self.stats_url_api = self.host + '/api/v1/me/stats' # 儀表盤介面 self.del_target_api = self.host + '/api/v1/targets/{}' #刪除任務介面 self.API_KEY = '1986ad8c0a5b3df4d7028d5f3c06e936c5fdedf96d18c44e9a1a8e62d992df485' self.header
= {'X-Auth': self.API_KEY, 'content-type': 'application/json'} # header格式 self.target_url = Queue() # 建立掃描url佇列 self.target_id = Queue() # 建立任務id號佇列 self.speed = 'fast' # 定義掃描速度 def main(self): # 主程式-選擇對應的功能 print('選擇要使用的功能(輸入相應的編號):') print('1.使用target.txt新增掃描任務 (注:url必須帶有http或https)') print('2.檢視掃描器詳情') print('3.刪除所有任務') print('4.退出') choice = input('>') if choice == '1': self.run1() exit() if choice == '2': self.run2() exit() if choice == '3': self.run3() exit() if choice == '4': exit() else: self.main() def run1(self): # 建立任務,自動設定為fast模式,並開啟掃描。 self.url_queue() self.add_target() self.scan_target() def url_queue(self): # 提取target.txt檔案裡面的url,並新增進self.target_url佇列 fh = open(r'./target.txt', 'r', encoding='utf-8') for i in fh.readlines(): url = i.strip('\n') # 去除空行和回車行 self.target_url.put(url) def add_target(self): # 新增掃描任務,並將返回包裡的target_id新增進self.target_id佇列 while True: if self.target_url.empty(): # 判斷x'Bself.target_url佇列是否為空,為空就中斷迴圈 break target_url = self.target_url.get() # 取self.target_url佇列中的元素 add_data = json.dumps({'address' : target_url, 'description' : target_url, 'criticality' : '10'}) add_target_res=requests.post(url=self.add_url_api,headers=self.header,data=add_data,verify=False) #新增任務 if add_target_res.status_code==201: # 判斷狀態碼是否為201 target_id=add_target_res.json()['target_id']#以json格式開啟add_target_res, self.target_id.put(target_id) # 將建立好任務的target_id,新增到target_id佇列中 else: print('任務建立失敗,請檢查host和API_KEY是否修改正確') def scan_target(self): # 設定掃描速度,並啟動掃描任務 while True: if self.target_id.empty(): # 判斷self.target_id佇列是否為空,為空就中斷迴圈 break scan_target_id = self.target_id.get() # 取self.target_id佇列中的元素 set_data = json.dumps({'scan_speed': self.speed}) scan_data = json.dumps({"target_id": scan_target_id, "profile_id": "11111111-1111-1111-1111-111111111111", "schedule": {'disable': False, 'start_date': None, 'time_sensitive': False}}) set_speed_res = requests.patch(url=self.speed_url_api.format(scan_target_id),data=set_data,headers=self.header,verify=False) #設定掃描速度 if set_speed_res.status_code==204: # 判斷狀態碼是否為204 scan_target_res=requests.post(url=self.scan_url_api,data=scan_data,headers=self.header,verify=False) #啟動掃描任務 if scan_target_res.status_code==201: # 判斷狀態碼是否為201 print(scan_target_res.json()['target_id']+'任務建立成功') else: print('任務建立失敗,請檢查host和API_KEY是否修改正確') def run2(self): # 檢視儀表盤 stats_res = requests.get(url=self.stats_url_api, headers=self.header, verify=False).json() print('任務總數:' + str(stats_res['targets_count'])) print('正在掃描的任務數量:'+str(stats_res['scans_running_count'])) print('等待掃描的任務數量:'+str(stats_res['scans_waiting_count'])) print('任務詳情:') for i in stats_res['most_vulnerable_targets']: task_details=i['address']+' High risk:'+str(i['high_vuln_count'])+' medium risk:'+str(i['med_vuln_count']) print(task_details) def run3(self): # 刪除所有任務 self.get_target_id() self.del_target() def get_target_id(self): # 獲取所有任務的掃描的地址和id stats_res=requests.get(url=self.add_url_api,headers=self.header,verify=False).json()['targets'] for i in stats_res: self.target_id.put([i['address'],i['target_id']]) # 將地址和id已列表的形式新增進target_id佇列 def del_target(self): # 刪除任務 while True: if self.target_id.empty(): break del_target_id=self.target_id.get() # 取target_id佇列的元素 del_target_res=requests.delete(url=self.del_target_api.format(del_target_id[1]),headers=self.header,verify=False) if del_target_res.status_code==204: print('成功刪除{}' .format(del_target_id[0])) else: print('刪除失敗') if __name__ == '__main__': aw = Awvs() aw.main()

在與指令碼同一個目錄中新建一個target.txt檔案,裡面寫上要掃描的目標

然後執行python指令碼,輸入“1”,就可以批量新增掃描目標然後自動掃描了。如果目標較多,等待的時間會長一些


好了,awvs批量掃描的方法 就是這樣