【AWVS】python调AWVS接口 新建扫描并导出扫描报告(一)

这篇具有很好参考价值的文章主要介绍了【AWVS】python调AWVS接口 新建扫描并导出扫描报告(一)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


前言

本文详细介绍了利用python调用AWVS 14.x中提供的四个内置接口,验证的流程为:

1.将目标URL添加到targets队列,扫描准备;
2.将targets队列中任务添加到scans队列,进行扫描;
3.将scans队列中的任务通过generate添加到reports队列,生成扫描报告;
4.从reports队列中导出扫描报告。

验证的三个接口为:

/api/v1/targets
/api/v1/scans
/api/v1/reports

本人的B站讲解视频:https://www.bilibili.com/video/BV1NY4y1B7p2/
第二期实现批量扫描:https://blog.csdn.net/qq_45859826/article/details/124082529


一、先上完整python代码

import json
import time
from datetime import datetime

import requests

from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

tarurl = "https://localhost:3443"
apikey = "1986ad8c0a5b3df4d7028d5f3c06e936c1fc7e549ff144a089c34a12b23d572fa"
headers = {"X-Auth": apikey, "Content-type": "application/json;charset=utf8"}


# 查看所有目标结果
def targets():
    api_url = tarurl + '/api/v1/targets'
    r = requests.get(url=api_url, headers=headers, verify=False)
    print(r.json())


# 添加targets目标,获取target_id
def post_targets(url):
    api_url = tarurl + '/api/v1/targets'
    data = {
        "address": url,
        "description": "wyt_target",
        "criticality": "10"
    }
    data_json = json.dumps(data)
    r = requests.post(url=api_url, headers=headers, data=data_json, verify=False)
    target_id = r.json().get("target_id")
    print('target_id:', target_id)
    return target_id


# 添加scans
def scans(url):
    api_url = tarurl + '/api/v1/scans'
    data = {
        "target_id": url,
        "profile_id": "11111111-1111-1111-1111-111111111112",
        "schedule":
            {"disable": False,
             "start_date": None,
             "time_sensitive": False
             }
    }
    data_json = json.dumps(data)
    r = requests.post(url=api_url, headers=headers, data=data_json, verify=False)
    # target_id = r.json().get("target_id")
    # print(r.json)


# 获取scan_id,通过start_date可知,最新生成的为第一个
def scan_id():
    api_url = tarurl + '/api/v1/scans'
    # print(api_url)
    r = requests.get(url=api_url, headers=headers, verify=False)
    scan_id = r.json().get("scans")[0].get("scan_id")
    print('scan_id:', scan_id)
    return scan_id


# 添加generate,并获取generate_id
def generate(url):
    api_url = tarurl + '/api/v1/reports'
    data = {
        "template_id": "11111111-1111-1111-1111-111111111115",
        "source": {
            "list_type": "scans",
            "id_list": [url]
        }
    }
    data_json = json.dumps(data)
    r = requests.post(url=api_url, headers=headers, data=data_json, verify=False)
    # print(r.json)


# 生成扫描报告,每次新生成的都在第一个
def html():
    api_url = tarurl + '/api/v1/reports'
    # print(api_url)
    r = requests.get(url=api_url, headers=headers, verify=False)
    html = r.json().get("reports")[0].get("download")[0]

    url_html = tarurl + html
    print('报告地址:', url_html)
    r_html = requests.get(url=url_html, headers=headers, verify=False)

    time_now = datetime.now().strftime('%Y-%m-%d %H%M%S')
    with open("report-" + time_now + ".html", "wb") as code:
        code.write(r_html.content)
        code.close()


def pdf():
    api_url = tarurl + '/api/v1/reports'
    # print(api_url)
    r = requests.get(url=api_url, headers=headers, verify=False)
    pdf = r.json().get("reports")[0].get("download")[1]

    url_pdf = tarurl + pdf
    print('报告地址:', url_pdf)
    r_html = requests.get(url=url_pdf, headers=headers, verify=False)

    time_now = datetime.now().strftime('%Y-%m-%d %H%M%S')
    with open("report-" + time_now + ".pdf", "wb") as code:
        code.write(r_html.content)
        code.close()


if __name__ == '__main__':
    # targets()
    # 添加到targets队列
    target_id = post_targets("http://8.8.8.8/")
    time.sleep(5)

    # 添加到scans队列
    scans(target_id)
    time.sleep(5)

    # 获取scan_id,并生成generate
    scan_id = scan_id()
    generate(scan_id)
    time.sleep(5)

    # 生成扫描报告
    # pdf()
    html()

返回结果:
【AWVS】python调AWVS接口 新建扫描并导出扫描报告(一)
【AWVS】python调AWVS接口 新建扫描并导出扫描报告(一)

二、AWVS介绍

Acunetix是一个专业好用的漏洞扫描工具,提供一些内置API接口,可供调用。因毕业设计,对其中一些接口进行了测试,以下为测试文档。

三、准备工作

1.获取 API-KEY

【AWVS】python调AWVS接口 新建扫描并导出扫描报告(一)
「Administrator」-「Profile」-「API Key」-「Copy」

API-KEY:1986ad8c0a5b3df4d7028d5f3c06e936c1fc7e549ff144a089c34a12b23d572fa

2.Header 设置

1.接口介绍

X-Auth:API-KEY
Content-type:application/json;charset=utf8

2.python代码

apikey = "1986ad8c0a5b3df4d7028d5f3c06e936c1fc7e549ff144a089c34a12b23d572fa"
headers = {"X-Auth": apikey, "Content-type": "application/json;charset=utf8"}

tarurl = "https://localhost:3443"

3.屏蔽警告

from requests.packages.urllib3.exceptions import InsecureRequestWarning

requests.packages.urllib3.disable_warnings(InsecureRequestWarning)

四、接口验证

1.查看Targets扫描队列

1.接口介绍

Method: GET 
URL: /api/v1/targets

2.python代码

api_url = tarurl + '/api/v1/targets'
r = requests.get(url=api_url, headers=headers, verify=False)
print(r.json())   #返回结果为json格式

3.返回结果

{
  'targets': [
  {
	 'address': 'http://192.168.137.129/',
	 'continuous_mode': False, 
 	 'criticality': 10, 
 	 'default_scanning_profile_id': None,
	 'deleted_at': None,
	 'description': 'http://192.168.137.129/', 
	 'fqdn': '192.168.137.129', 
	 'fqdn_hash': '4d9a6f1d9e94cce236acd2d397fdc5ce', 
	 'fqdn_status': 'new', 
	 'fqdn_tm_hash': 'f3c47dc4029759660937dd3f55c685c2', 
	 'issue_tracker_id': None, 'last_scan_date': '2022-03-28T18:07:52.178043+08:00',
	 'last_scan_id': 'b7eab683-8708-4cfc-9d3a-2e3c989fbae5',
 	 'last_scan_session_id': 'b3b15334-44ed-4dd7-8363-b874c7ec0947', 
     'last_scan_session_status': 'completed', 
 	 'manual_intervention': None, 
	 'severity_counts': {
	 	'high': 0, 
	 	'info': 0,
	 	'low': 0,
 		'medium': 0
	 }, 
	 'target_id': '73e0d89a-6323-446a-a00c-691a884b286b', 
	 'threat': 0, 
	 'type': None, 
	 'verification': None
  },
  
  'pagination': 
  {
 	 'count': 11, 
	 'cursor_hash': '8f629dd49f910b9202eb0da5d51fdb6e', 
	 'cursors': [None], 
	 'sort': None
  }
}

4.参数说明

参数 说明
targets 目标详细信息
pagination 分页信息

targets:

参数 说明
address 扫描目标网址
continuous_mode 是否连续模式
criticality 危险程度
description 描述
last_scan_date 最近扫描的日期
last_scan_id 最近扫描的id
last_scan_session_id 最近扫描的session id
last_scan_session_status 最近的扫描状态
manual_intervention 手动干预
severity_counts 漏洞等级个数分布
target_id 目标id
threat 威胁等级
type 类型
verification 验证

2.添加任务到Targets扫描队列,并返回target_id

1.接口介绍

Method: POST 
URL: /api/v1/targets

2.python代码

api_url = tarurl + '/api/v1/targets'
data = {
   "address": url,
   "description": "wyt_target",
   "criticality": "10"
 }
data_json = json.dumps(data)
r = requests.post(url=api_url, headers=headers, data=data_json, verify=False)
target_id = r.json().get("target_id")
print(target_id)

3.返回结果

87527c66-665b-4920-bde7-c56e5297f8b0

3.添加targets队列中的任务到scans

1.接口介绍

Method: POST
URL: /api/v1/scans

2.data介绍

data = 
{
    "target_id": "ec78d77d-6e26-4994-8d46-7fa8deae11b9",
    "profile_id": "11111111-1111-1111-1111-111111111112",
    "schedule":
      {
          "disable": False,
          "start_date": None,
          "time_sensitive": False
      }
}

3.python代码

api_url = tarurl + '/api/v1/scans'
data = {
        "target_id": url,
        "profile_id": "11111111-1111-1111-1111-111111111112",
        "schedule": {
            "disable": False,
            "start_date": None,
            "time_sensitive": False
        }
  }
data_json = json.dumps(data)
r = requests.post(url=api_url, headers=headers, data=data_json, verify=False)

4.发送参数说明

参数 类型 说明
profile_id string 扫描类型
ui_session_i string 可不传
incremental bool 增加的
schedule json 扫描时间设置(默认即时)
report_template_id string 扫描报告类型(可不传)
target_id string 目标id

profile_id:

类型 意义
Full Scan 11111111-1111-1111-1111-111111111111 完全扫描
High Risk Vulnerabilities 11111111-1111-1111-1111-111111111112 高风险漏洞
Cross-site Scripting Vulnerabilities 11111111-1111-1111-1111-111111111116 XSS漏洞
SQL Injection Vulnerabilities 11111111-1111-1111-1111-111111111113 SQL注入漏洞
Weak Passwords 11111111-1111-1111-1111-111111111115 弱口令检测
Crawl Only 11111111-1111-1111-1111-111111111117 Crawl Only
Malware Scan 11111111-1111-1111-1111-111111111120 恶意软件扫描

4.获取scan_id

1.接口介绍

Method: GET 
URL: /api/v1/scans

2.代码

api_url = tarurl + '/api/v1/scans'
r = requests.get(url=api_url, headers=headers, verify=False)
print(r.json().get("scans")[0])
scan_id = r.json().get("scans")[0].get("scan_id")

3.返回结果

{
	'criticality': 10, 
	'current_session': {
		'event_level': 2, 
		'progress': 100, 
		'scan_session_id': '7be91fbd-f904-4c6f-a33c-909cddb7a9c8',
		'severity_counts': {
			'high': 0, 
			'info': 0,
			'low': 0, 
			'medium': 0
			}, 
		'start_date': '2022-04-03T19:05:05.089001+08:00', 
		'status': 'completed', 
		'threat': 0
		}, 
	'incremental': False, 
	'max_scan_time': 0, 
	'next_run': None, 
	'profile_id': '11111111-1111-1111-1111-111111111112', 
	'profile_name': 'High Risk', 
	'report_template_id': None, 
	'scan_id': '5b9222cc-a21b-4b11-b1a5-6d6d5856d74a', 
	'schedule': {
		'disable': False, 
		'history_limit': None, 
		'recurrence': None, 
		'start_date': None, 
		'time_sensitive': False, 
		'triggerable': False
		}, 
	'target': {
		'address': 'http://6.6.6.6/', 
		'criticality': 10, 
		'description': 'wyt_target', 
		'type': 'default'
		}, 
	'target_id': '0944cef3-411e-4d4c-8647-4655f0b1e52b'
}

4.返回参数说明

参数 说明
criticality 危险程度
current_session 当前会话
start_date 开始扫描时间
status 扫描状态
threat 威胁性
incremental 额外的?
manual_intervention 人工干预
max_scan_time 最大扫描时间
next_run 下一轮
profile_id 扫描类型
profile_name 扫描类型名称
report_template_id 扫描报告模板id
scan_id 扫描id
schedule 时间表
target 目标相关的信息
target_id 目标id

5.导出报告-生成gennerate

1.接口介绍

Method: POST 
URL: /api/v1/reports

2.data介绍

data = {
        "template_id": "11111111-1111-1111-1111-111111111115",
        "source": {
            "list_type": "scans",
            "id_list": ["87527c66-665b-4920-bde7-c56e5297f8b0"]
        }
}

3.python代码

api_url = tarurl + '/api/v1/reports'
data = {
        "template_id": "11111111-1111-1111-1111-111111111115",
        "source": {
            "list_type": "scans",
            "id_list": [url]
        }
 }
data_json = json.dumps(data)
r = requests.post(url=api_url, headers=headers,data=data_json, verify=False)
print(r.json)

4.返回结果

{
	'pagination': {
		'count': 5, 
		'cursor_hash': '8f629dd49f910b9202eb0da5d51fdb6e', 
		'cursors': [None], 
		'sort': None}, 
		'reports': [
		{
			'download':	[
				'/api/v1/reports/download/4df097a941830e36be6665ab908e40a27c2d0528d503a70ce9b77f72592bc73e05bc9f8d624994d71482b153-bd3b-4c36-8d21-0886c07f4739.html', 
				'/api/v1/reports/download/1c3fa9b4f76396cedcda1e857e5bfe0053fcd9653bf55d1344a5e99bd1b53366fa10c36a624994d71482b153-bd3b-4c36-8d21-0886c07f4739.pdf'
			], 
			'generation_date': '2022-04-03T19:33:46.118619+08:00', 
			'report_id': '1482b153-bd3b-4c36-8d21-0886c07f4739', 
			'source': {
				'list_type': 'scans', 
				'description': 'http://6.6.6.6/;wyt_target', 
				'id_list': ['5b9222cc-a21b-4b11-b1a5-6d6d5856d74a']
			}, 
			'status': 'completed', 
			'template_id': '11111111-1111-1111-1111-111111111115',
		    'template_name': 'Affected Items', 
			'template_type': 0
			}
		]
}

5.发送参数说明

参数 类型 说明
template_id String 扫描报名模板类型
list_type String 值为: scans
id_list String 值为: scan_id

template_id:

类型
Affected Items 11111111-1111-1111-1111-111111111115
CWE 2011 11111111-1111-1111-1111-111111111116
Developer 11111111-1111-1111-1111-111111111111
Executive Summary 11111111-1111-1111-1111-111111111113
HIPAA 11111111-1111-1111-1111-111111111114
ISO 27001 11111111-1111-1111-1111-111111111117
NIST SP800 53 11111111-1111-1111-1111-111111111118
OWASP Top 10 2013 11111111-1111-1111-1111-111111111119
PCI DSS 3.2 11111111-1111-1111-1111-111111111120
Quick 11111111-1111-1111-1111-111111111112
Sarbanes Oxley 11111111-1111-1111-1111-111111111121
Scan Comparison 11111111-1111-1111-1111-111111111124
STIG DISA 11111111-1111-1111-1111-111111111122
WASC Threat Classification 11111111-1111-1111-1111-111111111123

6.返回参数说明

参数 说明
generation_date 生成时间
template_type 模板类型
report_id 报告id
template_name 模板名字
status 状态
template_id 模板id
download 下载链接[html, pdf]
source 来源
description 备注

6.导出报告-html/pdf

1.接口介绍

Method: GET
URL: /api/v1/reports

2.python代码

api_url = tarurl + '/api/v1/reports'
r = requests.get(url=api_url, headers=headers, verify=False)
html = r.json().get("reports")[0].get("download")[0]
# pdf = r.json().get("reports")[0].get("download")[1]

url_html = tarurl + html
r_html = requests.get(url=url_html, headers=headers, verify=False)
with open("report.html", "wb") as code:
     code.write(r_html.content)
     code.close()

总结

这篇文章缘起于我的本科毕业设计”漏洞分析系统设计“,首先感谢各位师傅的优秀博文分享,给了迷茫中的我许多灵感:

国光师傅的AWVS API文档:https://www.sqlsec.com/2020/04/awvsapi.html#toc-heading-32
h4rdy师傅的AWVS API文档:https://github.com/h4rdy/Acunetix11-API-Documentation
Recar师傅的AWVS测试文件: https://blog.csdn.net/qq_28295425/article/details/81051954

2022年对于我是非常不一般的一年,前三个月的经历对我打击是巨大的。去年我的许多选择在今年看来都没有很好的结局,考研失败,身体一团糟,不知道未来在哪里,陷入无穷尽的自我怀疑旋涡……经历了一段时期的冷静期,重新回到CSDN,也是想重回初心。其实不论未来如何,最大的希望还是:做一个健康快乐的女孩子。
希望疫情能早日消失,我们的生活回归正轨;希望自己接下来的手术顺利进行,拥有一个健康的身体。有条件的话之后也要多发博文,和各位师傅一起进步。

2022年4月3日于家中文章来源地址https://www.toymoban.com/news/detail-412474.html

到了这里,关于【AWVS】python调AWVS接口 新建扫描并导出扫描报告(一)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • AWVS 批量扫描工具

    调用Acunetix AWVS的API实现批量扫描,并且使用代理池(项目地址goProxyPool),实现批量扫描时的每个扫描目标都使用不同的代理IP。提供常驻后台监控功能,控制最大扫描任务数量以及最大扫描时间。 仅批量添加目标(可设置添加数量),并设置扫描使用的代理,不进行扫描(

    2024年02月16日
    浏览(42)
  • AWVS工具太顶了,漏洞扫描工具AWVS介绍及安装教程

    AWVS基本操作 AWVS工具在网络安全行业中占据着举足轻重的地位,作为一名安全服务工程师,AWVS这款工具在给安全人员做渗透测试工作时带来了巨大的方便,大大的提高了工作效率。 AWVS工具介绍 Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的Web网络漏洞扫描工具,它通过网

    2024年02月12日
    浏览(42)
  • 使用awvs进行web安全扫描

    ps:需要征得甲方的同意

    2024年02月11日
    浏览(39)
  • kali安装awvs后无法正常扫描

    第一次接触awvs,按照前辈发的安装包和文档进行安装,原本以为很简单,但做扫描实验时,会出现来连接超时或者瞬间结束的问题。 后面在网上找了很多的文章,通过一晚上的恢复快照安装实验,终于找到了问题所在,所以记录一下。 将安装包上传到kali 通过xftp上传到kal

    2024年02月16日
    浏览(35)
  • 使用AWVS进行漏洞扫描实验,保姆教程

    VMware Workstation 16 Pro下载

    2023年04月16日
    浏览(48)
  • AWVS-Web漏洞扫描工具

    一、AWVS简介 Acunetix Web Vulnerability Scanner(简称AWVS)是一个自动化的Web漏洞扫描工具,它可以扫描任何通过Web浏览器访问和遵循HTTP/HTTPS规则的Web站点。 AWVS原理是基于漏洞匹配方法,通过网络爬虫测试你的网站安全,检测流行安全漏洞。 AWVS可以检测什么漏洞,它有什么优势?

    2024年02月06日
    浏览(45)
  • 网络安全工具——AWVS漏洞扫描工具

    请勿乱扫目标,该扫描工具在没有授权的情况下使用是违法的 仅个人使用,不用于商业用途,使用的是15.2版本的破解版 1.下载Acunetix破解版安装包,解压安装包 2.双击允许acunetix_15.2.221208162.exe 3.双击安装包出现下面界面,安装路径可以修改 4.点击下一步填写邮箱、密码。设置

    2024年02月13日
    浏览(47)
  • 右键新建没有TXT文本文档的解决办法

    案例:Windows11 家庭中文版桌面右键新建没有TXT文本文档 Windows键/开始–设置–应用–可选功能–添加可选功能–记事本打钩–安装; 如果没有记事本,那可能已经安装了记事本,可以参考第2步,直接修改注册表。 一般都会默认安装的,都可以直接跳到第2步。 Windows Registr

    2024年02月14日
    浏览(42)
  • 关于漏洞扫描器AWVS的安装和破解

    下载AVWS的压缩包 解压压缩包,解压后会有下面三个文件!acunetix_14.5.211115146_x64.sh license_info.json wa_data.dat 使用下面命令进行安装  按回车同意隐私条款,到末尾输入yes,然后输入用户名和密码以及邮箱。 接下来浏览器输入https://IP:3443/ 用刚才设置的账号和密码登录 接下来开始

    2024年02月12日
    浏览(46)
  • 网络安全——漏洞扫描工具(AWVS的使用)

    一、安全漏洞产生的原因    二、什么是0day漏洞 在安全漏洞生命周期内,从安全漏洞被发现到厂商发布补丁程序用于修复该漏洞之前。 三、什么是安全漏洞生命周期 一共分为7个阶段    四、安全漏洞管理 1、    2、安全漏洞等级 (1)、微软设置了4个等级:低危、中危、

    2024年02月08日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包