【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

    漏洞扫描是指基于漏洞数据库,通过扫描等手段对指定的远程或者本地计算机系统的安全脆弱性进行检测,发现可利用漏洞的一种安全检测(渗透攻击)行为。 ✓ 针对某类漏洞的:sql注入(sqlmap)、weblogic(weblogicscan) ✓ 针对某类CMS的:wordpress(wpscan)、dedecms(dedecmsscan)

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

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

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

    ps:需要征得甲方的同意

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

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

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

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

    2024年02月13日
    浏览(49)
  • 使用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日
    浏览(49)
  • 右键新建没有TXT文本文档的解决办法

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

    2024年02月14日
    浏览(43)
  • 关于漏洞扫描器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日
    浏览(59)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包