使用appscan实现多站扫描简单自动化
随着年龄增长,身上负担的压力也越来越大。
在工作中很多时候都会需要短时间内扫描多个网站,可能是平时时间不够,或者是客户特别要求,很多时候工作中的扫描工作要放在晚上睡觉时间来做。
但是白天忙了一天,晚上不可能一直盯着appscan一个一个的扫描。
因为appscan在新建扫描任务的时候只能输入一个target,并且没有awvs/nessus那样提供web接口,导致我以前一直以为appscan不能像awvs那样批量建立任务自动扫描。
但是后来工作实在太忙被逼的不行了,我就想偷懒想找个能自动化实施扫描任务的方法。
这个想法就是实现分布式+自动化扫描,目的就是减轻工作压力,加快工作进度。
不过,今天要分享的一点经验只是实现简单的appscan自动化扫描,不牵扯分布式的问题。
其实很简单,appscan的GUI界面新建扫描任务时虽然只能指定一个target,并且也没有提供类似awvs/nessus的web接口,但是它提供的有一个“AppScanCMD.exe”。
厂商把这个小工具提供出来的意思可能就是方便用户在命令行下调用appscan实现自动化扫描的。它的功能分为:执行扫描任务和生成扫描报告两块。
那接下来介绍一下工具的语法就好了。
先看下工具自身提供的help信息:
01 |
Usage: |
02 |
AppScanCMD exec |ex|e
|
03 |
/base_scan|/base|/b
|
04 |
/dest_scan|/dest|/d
|
05 |
[ /report_file|/rf ]
|
06 |
[ /report_type|/rt {xml} ]
|
07 |
[ /min_severity|/ms {informational} ]
|
08 |
[ /verbose|/ v { false } ]
|
09 |
[ /test_only|/to { false } ]
|
10 |
[ /explore_only|/eo { false } ]
|
11 |
[ /multi-step|/ms { false }]
|
12 |
Creates new scan according to base_scan's configuration,
|
13 |
saving dest_scan and creating report, if required.
|
14 |
AppScanCMD report|rep|r |
15 |
/base_scan|/base|/b
|
16 |
/report_file|/rf
|
17 |
[ /report_type|/rt {xml} ]
|
18 |
[ /min_severity|/ms {informational} ]
|
19 |
[ /test_type|/tt {all} ]
|
20 |
[ /verbose|/ v { false } ]
|
21 |
Creates a report for base_scan.
|
22 |
|
23 |
AppScanCMD help|h |
24 |
Prints this usage.
|
看起来参数很多很复杂的样子,其实很简单。
说一下这些参数的含义吧。
参数 |
简写 |
简写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命令或写个批处理脚本来执行扫描吧:
1 |
@ echo off
|
2 |
appscancmd /e /b D:\2.scan /d D:\1.scan / v
|
3 |
appscancmd /e /b D:\3.scan /d D:\2.scan / v
|
4 |
appscancmd /e /b D:\4.scan /d D:\3.scan / v
|
5 |
appscancmd /e /b D:\5.scan /d D:\4.scan / v
|
6 |
appscancmd /e /b D:\6.scan /d D:\5.scan / v
|
7 |
pause |
按照DOS命令的执行机制,当上一条命令执行结束后才会继续执行下一条命令,这样写一个批处理,就实现了顺序扫描多个目标的目的。
按照上边对参数的解释,我们这个批处理中的命令的完整解释就是:
执行扫描任务,从文件D:\2.scan中读取扫描配置信息,然后将扫描的结果保存到同一个文件,同时,在扫描的过程中显示扫描细节。
如果你不想把扫描结果保存到同一个文件中,那么通过/d参数直接指定新的文件名即可。
OK,就这么简单