awvs13破解安裝、批量掃描指令碼
阿新 • • 發佈:2021-01-03
安裝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批量掃描的方法 就是這樣