Java Acunetix11 Curl(Java利用Curl命令调用Acunetix11 API接口实现扫描并生成报告)

原创 2017年03月21日 14:35:25

首先说一下编辑环境:

1.本机要安装Curl命令,下载地址:https://curl.haxx.se/download.html(注:里面有太多太多的版本,我们这里就下载一个只要有curl.exe的都行)


2.需要Jsoup的jar,这个在百度上搜一下就能看到好多。

3.测试的话需要安装Acunetix11,这个嘛,目前网上还没提供(反正我是没找到)免费的,我们先暂时忽略掉这一点吧,继续说下去,切入正题!


首先调用Acunetix11 API生成扫描报告一共需要4个步骤。结合API文档解释一下步骤:

1.建立一个扫描目标到http://www.baidu.com(不建议用百度网址测试,扫描时间太长了)

在演示一个扫描之前您将需要会在您想要扫描的网站上建立一个扫描目标。您将需要利用(POST)目标终端去实现它。使用cURL:

curl -k --request POST --url https://127.0.0.1:3443/api/v1/targets --header "X-Auth: API-KEY" --header "content-type: application/json" --data "{\"address\":\"www.baidu.com\",\"description\":\"baidu\",\"criticality\":\"10\"}"

其中:
https://127.0.0.1:3443 - 是Acunetix11端口URL(就是你安装了Acunetix11 的电脑)
- API-KEY - 这是Acunetix11的API-KEY,如果你安装了就可以在页面右上角的Administration中生成KEY了。
- www.baidu.com - 是您想要添加的一个扫描目标网址
- baidu - 是描述扫描目标的词句(非必填)
- 10 - 是目标的临界值 (Critical [30], High [20], Normal [10], Low [0])

命令成功之后会201,以及其它一些数据,其中包括target_id(返回结果中locations最后的一截字符串)

2. 在一个创建好的目标上运行一个扫描。
To start a scan you will need to make use of the (POST) scans endpoint. Using cURL:

curl -k -i --request POST --url https://127.0.0.1:3443/api/v1/scans --header "X-Auth: API-KEY" --header "content-type: application/json" --data "{\"target_id\":\"TARGET-ID\",\"profile_id\":\"11111111-1111-1111-1111-111111111111\",\"schedule\":{\"disable\":false,\"start_date\":null,\"time_sensitive\":false}}"

其中:
https://127.0.0.1:3443 - 是Acunetix11端口URL
- API-KEY - 是您在第1步中生成的的API key
- TARGET-ID - 是您从之前的JSON回复中得到的target_id
- 11111111-1111-1111-1111-111111111111 - 是扫描profile ID。通过使用(GET)scanning_profiles 端点获得的列表,列表包括了扫描profile和他们的ID。(后面在解释)

这个会反馈一个201 OK JSON回复,包含了许多扫描的细节,包括scan_id

3.生成报告
要生成一个开发者报告,您需要利用(POST)报告端点。使用cURL:

curl -k -i --request POST --url https://127.0.0.1:3443/api/v1/reports --header "X-Auth: API-KEY" --header "content-type: application/json" --data "{\"template_id\":\"11111111-1111-1111-1111-111111111111\",\"source\":{\"list_type\":\"scans\", \"id_list\":[\"SCAN-ID\"]}}"

其中:
https://127.0.0.1:3443 - 是Acunetix11端口URL
- API-KEY - 是您在第1步中生成的的API key
- SCAN-ID - 是您从之前的JSON回复中获得的scan_id

会有一个201HTTP回复显示了请求是成功的 ,并且会包含一个带有id的Location header(例如 Location: /api/v1/reports/54f402f6-7a60-4934-952f-45bfe6c4abf4 )。一旦报告被URL: https://127.0.0.1:3443/reports/download/54f402f6-7a60-4934-952f-45bfe6c4abf4.pdf 访问,这个id可以被用来下载报告。最新版本还会提供HTML版本的报告,并且可以从https://127.0.0.1:3443/reports/download/54f402f6-7a60-4934-952f-45bfe6c4abf4.html 访问。

4.下载报告(注:目前这个功能似乎有点问题,至少我还没有调通,厂商那边也迟迟没有回复,后面我说一下别的方式下载报告)
为了生成一个XML报告,您将需要利用(POST)exports 端点。使用cURL:

curl -k -i --request POST --url https://127.0.0.1:3443/api/v1/exports --header "X-Auth: API-KEY" --header "content-type: application/json" --data "{\"export_id\":\"21111111-1111-1111-1111-111111111111\",\"source\":{\"list_type\":\"scan_result\",\"id_list\":[\"SCAN_ID\"]}}"

其中:
https://127.0.0.1:3443 - 是Acunetix11端口URL
- API-KEY - 是您在第1步中生成的的API key
- SCAN-ID - 是您从之前的JSON回复中获得的scan_id


上面可以看到有好几个地方是一连串的11111-111之类的,这些都是一些接口的返回值,我们这可以不用更改它们,你可以把它们看成常量,代表选择的模版。
其中profile_id是扫描类型,例如部分扫描,全部扫描等等,上面的代表FULL SCAN全部扫描;template_id是生成的报告的模版类型;export_id是下载的报告的模版类型,上面的代表XML格式类型。

由于时间关系,JAVA代码的操作,我只说一下思路。

首先写好curl命令,然后Runtime.getRuntime().exec(“此处为命令语句”),接着用JAVA正则表达式去解析命令的返回结果,得到其中我们需要的信息再进行下一步操作。
前面的1、2、3步的命令都执行并拿到结果后,在第三步我们可以根据上面写的方法得到HTML版本的报告,然后用curl -k -o E:\\myFile.html --url XXX.html去将生成的报告下载到本机磁盘。最后用Jsoup去解析HTML获取我们想要的扫描报告信息保存的数据库。

利用acunetix-api进行扫描

自从Acunetix Web Vulnerability Scanner 11.x被52的大大Hmily破解以后,被它的界面惊艳到了。想着这玩意如果分布式的部署起来扫描应该会很爽。找了资料,发现api...
  • qq_27446553
  • qq_27446553
  • 2017年05月30日 22:39
  • 1042

AWVS 提供的接口

* /api/auth - 认证  * /api/listLoginSeq - 认证  * /api/listProfiles - 查看扫描配置  * /api/listReports - 查看...
  • WTD654321
  • WTD654321
  • 2016年05月09日 17:21
  • 1402

AWVS11提取规则文件

在这里给大家分享一个获取AWVS规则文件的思路。  目前我提取的是17年4月份的扫描规则。   后面如果规则更新,可以自行提取 官网:   https://www.acunetix.com/...
  • qq_27446553
  • qq_27446553
  • 2017年05月30日 22:40
  • 1921

AWVS11 API接口文档

  • 2017年09月14日 10:23
  • 20KB
  • 下载

用Java运行curl的各种报错

最近在研究elasticsearch,用Java运行curl来创建一个快照仓库,在linux和windows下直接运行curl命令都没问题,用java运行就各种报错,curl代码如下 public ...
  • JAVA_Notes
  • JAVA_Notes
  • 2017年05月03日 17:58
  • 1854

Acunetix Web Vulnerability Scanner使用和生成报告的方法

这是国外一款非常不错的web检测工具,一般网络上有破解包,现在有8.0和10.0版本的破解包了。10.0版本可以扫描的漏洞比较多,功能比较全,使用方法和8.0的使用方法差不少,下面我用8.0版本的来进...
  • xixiruyiruyi
  • xixiruyiruyi
  • 2016年12月30日 16:07
  • 5348

java curl开发记录(一)

许久不写文章,写这么个东西,更多的是为了纪念,而非为了表现自己的代码能力。 做研发很幸苦,能够帮助大家自然是好事,但毕竟精力有限,能写的尽量写。 若有人关注,必定感激。若有人觉得写的可以,留下好评...
  • yanglinjingshu
  • yanglinjingshu
  • 2015年03月25日 09:12
  • 12042

关于curl java 模拟http请求

近期笔者项目需求java模拟http请求,获取dns解析 tcp连接等详细耗时信息。 java api中提供的urlConnection 及apache提供的httpClient都不能胜任该需求,二...
  • zhongyuan_1990
  • zhongyuan_1990
  • 2015年06月25日 11:22
  • 9714

java curl

这段时间想做一个网页采集的程序,由于一网站采用了防采集的办法,我的httpclient总是在登录后无法获取到我想要过去的链接。在无数次的跟踪过后发现原来人家给返回的是javascript拼成的页面,而...
  • u013378306
  • u013378306
  • 2016年06月18日 19:19
  • 2950

curljava_curljava

  • 2014年06月24日 22:40
  • 325KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java Acunetix11 Curl(Java利用Curl命令调用Acunetix11 API接口实现扫描并生成报告)
举报原因:
原因补充:

(最多只允许输入30个字)