因為appscan在新建掃描任務的時候只能輸入一個target,並且沒有awvs/nessus那樣提供web接口,導致我以前一直以為appscan不能像awvs那樣批量建立任務自動掃描。
不過,今天要分享的一點經驗只是實現簡單的appscan自動化掃描。
其實很簡單,appscan的GUI界面新建掃描任務時雖然只能指定一個target,並且也沒有提供類似awvs/nessus的web接口,但是它提供的有一個“AppScanCMD.exe”。
廠商把這個小工具提供出來的意思可能就是方便用戶在命令行下調用appscan實現自動化掃描的。它的功能分為:執行掃描任務和生成掃描報告兩塊。
那接下來介紹一下工具的語法就好了。
先看下工具自身提供的help信息:
說一下這些參數的含義吧。
參數 | 簡寫 |
簡寫2 |
含義 |
參數值說明 |
參數類型 |
exec | ex |
e |
執行掃描任務 |
||
report | rep |
r |
執行報告生成任務 |
||
/base_scan | /base |
/b |
指定格式為.scan的基礎文件 |
必須為.scan文件的絕對路徑 |
必填 |
/dest_scan | /dest |
/d |
指定格式為.scan的文件名 |
必須為.scan文件的絕對路徑,可以與base_scan是同一個文件,也可以新指定一個文件,簡單意思就是說掃描結果保存的位置和文件名 |
必填 |
/report_file | /rf |
指定報告保存的位置和文件名(文件名不帶擴展名) | 報告要保存到哪里 |
可選 |
|
/report_type | /rt |
指定報告類型 (可選xml|pdf|rtf|txt|html) |
默認值是xml |
可選 |
|
/min_severity | /ms |
指定報告中要體現的漏洞級別,不到級別的漏洞不寫入報告 (可選low|medium|high|informational) |
默認值是informational,也就是提示信息及以上級別的漏洞都寫入報告,相當於寫入掃描出來的全部漏洞內容 |
可選 |
|
/verbose | /v |
詳細模式 | 若選擇了該參數,則會在掃描時動態顯示掃描狀態 |
可選 |
|
/test_only | /to |
默認值為false |
可選 |
||
/explore_only | /eo |
默認值為false |
可選 |
||
/multi-step | /ms |
默認值為false |
可選 |
||
/test_type | /tt |
可選all|application|infrastructure | 默認值為all |
可選 |
這里解釋的不是很詳細,但基本上夠用了。
明白了參數的含義和用法,那么接下來就可以在DOS下執行掃描了,因為要實現批量掃描,所以我一般都會寫一個bat腳本來執行。
在真正的開始掃描之前,我們需要知道一點:
appscancmd無法跟wvs_console一樣直接用命令行選項來設置掃描參數,appscancmd的掃描必須基於一個base_scan,目的就是為了讀取掃描參數。
所以在使用appscancmd之前我們必須通過GUI來創建一個base_scan。創建base_scan跟在GUI下新建一個掃描任務是一樣的,唯一區別在“掃描配置向導”的最一步選擇“我將稍后啟動掃描”,然后保存掃描到文件。
完成配置,保存結果文件,最后退出appscan的GUI。
然后,執行DOS命令或寫個批處理腳本來執行掃描吧:
@echo off appscancmd /e /b D:\merchant.scan /d D:\1.scan /v appscancmd /e /b D:\3.scan /d D:\2.scan /v appscancmd /e /b D:\4.scan /d D:\3.scan /v appscancmd /e /b D:\5.scan /d D:\4.scan /v appscancmd /e /b D:\6.scan /d D:\5.scan /v pause
按照DOS命令的執行機制,當上一條命令執行結束后才會繼續執行下一條命令,這樣寫一個批處理,就實現了順序掃描多個目標的目的。
按照上邊對參數的解釋,我們這個批處理中的命令的完整解釋就是:
執行掃描任務,從文件D:\2.scan中讀取掃描配置信息,然后將掃描的結果保存到同一個文件,同時,在掃描的過程中顯示掃描細節。
如果你不想把掃描結果保存到同一個文件中,那么通過/d參數直接指定新的文件名即可。
OK,就這么簡單