今天整了一天這個AWVS批量掃描腳本,主要是下了好幾個版本的AWVS,都不穩定,一次次刪除又一次次安裝。
做這件事兒目的就是為了批量刷漏洞,不過弄好之后又不打算刷漏洞了,不太喜歡無腦刷漏洞,沒什么意義,並且現在水平也不是很高,先踏實學習吧。
這個文章目的就是記錄一下整體的思路。
要想較為高效的刷漏洞(這里指的是和菜鳥相比),需要兩步,一 : 獲取大量的網頁鏈接 ; 二 : 誤報率低,比較牛逼一點的漏洞掃描工具
一 :獲取大量的網頁鏈接
這個有三種方法:
① fofa 這個有前提 ,必須得有 fofa 的VIP會員,直接下載工具 輸入 賬號 和 key 即可批量導,軟件直接在 github 下載就行
軟件下載鏈接 : https://github.com/tangxiaofeng7/Fofa-collect/releases/tag/V1.0
② 利用crawlergo工具,
這個工具 功能就是能爬取 你導入好的txt文件中 每個鏈接中 源碼的 鏈接
這個工具的原理就是爬蟲,開啟多個chrom一起爬,(這個chrom不是咱們用的那個谷歌瀏覽器,只是名字差不多)
這個工具如果和 xray 聯動 ,那就比較完美 ,這個工具可以設置代理 ,流量先通過 xray 最后在放出去,實現了被動掃描。具體詳情可以看 我寫的文章 在分類中的 xray和crawlergo聯動
https://github.com/0Kee-Team/crawlergo
這個是crawlergo在github中的下載鏈接,里面也有 crawlergo 使用說明
③ 這種方法就比較普通了,就是使用 layer 子域名挖掘機去一個個挖掘,不太推薦這種方法,layer掃出來的網站質量一般
二 : 選一款牛批的漏洞掃描工具
常見的漏洞掃描工具無非就是 AWVS ,appscan ,OWAsp ,xray 等等 ,因為以前用awvs感覺不錯,所以這次也選的 awvs (沒想到坑死我。。。)
網上許多的 awvs破解版都不太穩定,要不就是沒 api,要不就是使會兒就不行了,現在是2020.7.24 實測下面這款比較不錯,有需要的可以下載
https://www.sqlsec.com/2020/04/awvs.html
下載完了之后按照步驟破解安裝就行
AWVS這里有個小缺點就是只支持批量導入 csv 文件,這就有點xx,幾百上千個網站,我總不能一個個導入,於是就在網上找了半天批量導入的腳本,還好,試了幾個之后就找到了個合適的,
直接把文章鏈接放出來 https://www.imzzj.com/2020/05/18/shi-yong-python-gei-awvs13-pi-liang-tian-jia-ren-wu.html 順便感謝下博主,給了我很大幫助!!
這里需要提示一點的就是 使用 pycharm打開的時候,import 導入包兒那塊兒會報一些錯誤,也沒明白是啥情況,反正我給改對了,直接貼出來前部分的代碼
import requests
import json
import requests.packages
import urllib3.packages
from urllib3.exceptions import InsecureRequestWarning
# from requests.packages.urllib3.exceptions import InsecureRequestWarning
# requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
urllib3.disable_warnings(InsecureRequestWarning)
apikey = '1986ad8c0a5b3df4d7028dc51b15d120bf015197e'
# 去 AWVS 配置文件里面 有個 API KEY 復制填進去就行
apikey = str(apikey)
headers = {'Content-Type': 'application/json',"X-Auth": apikey}
def addTask(url,target):
try:
url = ''.join((url, '/api/v1/targets/add'))
data = {"targets":[{"address": target,"description":""}],"groups":[]}
r = requests.post(url, headers=headers, data=json.dumps(data), timeout=30, verify=False)
result = json.loads(r.content.decode())
return result['targets'][0]['target_id']
except Exception as e:
return e
def scan(url,target,Crawl,user_agent,profile_id,proxy_address,proxy_port):
scanUrl = ''.join((url, '/api/v1/scans'))
target_id = addTask(url,target)
if target_id:
data = {"target_id": target_id, "profile_id": profile_id, "incremental": False, "schedule": {"disable": False, "start_date": None, "time_sensitive": False}}
try:
configuration(url,target_id,proxy_address,proxy_port,Crawl,user_agent)
response = requests.post(scanUrl, data=json.dumps(data), headers=headers, timeout=30, verify=False)
result = json.loads(response.content)
return result['target_id']
except Exception as e:
print(e)
def configuration(url,target_id,proxy_address,proxy_port,Crawl,user_agent):
configuration_url = ''.join((url,'/api/v1/targets/{0}/configuration'.format(target_id)))
data = {"scan_speed":"fast","login":{"kind":"none"},"ssh_credentials":{"kind":"none"},"sensor": False,"user_agent": user_agent,"case_sensitive":"auto","limit_crawler_scope": True,"excluded_paths":[],"authentication":{"enabled": False},"proxy":{"enabled": Crawl,"protocol":"http","address":proxy_address,"port":proxy_port},"technologies":[],"custom_headers":[],"custom_cookies":[],"debug":False,"client_certificate_password":"","issue_tracker_id":"","excluded_hours_id":""}
r = requests.patch(url=configuration_url,data=json.dumps(data), headers=headers, timeout=30, verify=False)
def main():
Crawl = False
proxy_address = '127.0.0.1'
proxy_port = '8888'
awvs_url = 'https://127.0.0.1:3443' #awvs url
with open('url.txt','r',encoding='utf-8') as f:
targets = f.readlines()
profile_id = "11111111-1111-1111-1111-111111111111"
user_agent = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.21 (KHTML, like Gecko) Chrome/41.0.2228.0 Safari/537.21" #掃描默認UA頭
if Crawl:
profile_id = "11111111-1111-1111-1111-111111111117"
for target in targets:
target = target.strip()
if scan(awvs_url,target,Crawl,user_agent,profile_id,proxy_address,int(proxy_port)):
print("{0} 添加成功".format(target))
if __name__ == '__main__':
main()
使用說明就是 先更改配置 ,添加api_key ; 把需要掃描的站點放在 url.txt 中 ; 運行awvs.py ; 顯示 XXX 導入成功;打開awvs,可以看到站點添加成功,直接就開始自動掃描了
最后嗶嗶一句,不知道為啥,AWVS誤報率有些高,沒太仔細看,也沒准是我的問題,等真正投入到挖漏洞的時候在研究吧。
最后推薦幾篇文章:
https://zhuanlan.zhihu.com/p/108065469