在本系列的前两期中,我们向您展示了如何使用Bash和PowerShell以及Acunetix API来管理Acunetix扫描。在本文中,您将学习如何使用Python进行相同的操作。作为示例,我们将创建一个Python脚本,该脚本使用请求库向Acunetix REST API发出请求。
必须通过在HTTP请求标头中提供API密钥来对每个API调用进行身份验证,因此,每个请求都使用以下标头进行:
Content-Type: application/json X-Auth: 可以从Acunetix配置文件页面检索API密钥。
剧本剖析 该脚本具有以下结构:
首先,我们声明清除功能,该功能是一种恢复功能,用于在检测到无效的扫描状态时删除脚本创建的扫描和目标: 该remove_scan API调用需要我们做出DELETE请求/扫描/ {} SCAN_ID端点; 扫描ID由下面描述的脚本的主要部分检索 该remove_target API调用,需要我们做出一个DELETE请求到/目标/ {} target_id端点; 目标ID由下面描述的脚本的主要部分检索 然后,我们声明将在整个脚本中使用的起始全局变量: MyAXURL是Acunetix API的基本URL,通常为: 本地:https:// :3443 / api / v1 在线:https : //online.acunetix.com/api/v1 MyAPIKEY是API密钥,可以从配置文件页面中检索 MyTargetURL是最终要扫描的目标的URL MyTargetDESC是对目标的友好描述 FullScanProfileID是默认的“完全扫描”的配置文件ID 。此默认扫描配置文件的值始终为11111111-1111-1111-1111-111111111111 MyRequestHeaders是HTTP请求标头的数组(包括使用Acunetix API密钥进行的身份验证) 接下来,我们创建目标: add_target函数的API文档显示: 我们必须向/ targets端点发出POST请求; 主体应采用JSON格式,并至少包含4个键:地址,描述,类型和关键性;在我们的示例中: { "address": " http://testphp.vulnweb.com/", "description": "Test PHP Site - created via ax-python-api.ps1", "type": "default", "criticality": 10 } 响应将为JSON格式;我们要从响应中提取的关键信息是target_id键的值 下一步,我们安排扫描: schedule_scan函数的API文档显示: 我们必须向/ scans端点发出POST请求; 主体应为JSON格式;在我们的示例中: { "profile_id": "11111111-1111-1111-1111-111111111111", "