Java Acunetix11 Curl(Java利用Curl命令调用Acunetix11 API接口实现扫描并生成报告)
2017-03-21 14:35
513 查看
首先说一下编辑环境:
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获取我们想要的扫描报告信息保存的数据库。
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获取我们想要的扫描报告信息保存的数据库。
相关文章推荐
- java语言利用Socket实现对操作系统的命令调用和文件传输
- Java利用ImageMagick调用linux系统命令实现Ai或者PSD文件转化为jpg或者png文件
- 视频上传过程中自动转换为flv格式并截图生成缩略图(Java调用命令实现)
- [转]数据库存储过程中利用extproc调用共享程序库/动态链接库,间接可以实现调用操作系统命令 - 雪山之巅的阳光 - 博客园
- JAVA实现调用本地命令
- 利用Java调用可执行命令实例
- 一起谈.NET技术,JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯
- Java调用Linux命令的实现例子
- 利用Java调用可执行命令
- JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯
- java调用mysql的工具类实现数据库远程备份,还原,生成创建表的sql脚本
- 实例源码:利用Java调用可执行命令
- 实例源码1:利用Java调用可执行命令并取得其返回值
- 利用Java调用可执行命令实例
- 利用WSDL2JAVA实现JAVA调用.Net的Web Services(1)
- [转]数据库存储过程中利用extproc调用共享程序库/动态链接库,间接可以实现调用操作系统命令
- 利用Java调用可执行命令
- JAVA与.NET的相互调用——利用JNBridge桥接模式实现远程通讯
- Linux下Java程序调用Openssl命令实现内存中加密数据
- 利用Axis2开发WebService(3)---用Java实现调用WebService的客户端程序