ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

Anthropic-Cybersecurity-Skills 实战:基于 SIEM 与 WAF 日志的 API 枚举攻击检测(BOLA/IDOR)

2026/9/12 15:51:46 拓冰建站 浏览量
Anthropic-Cybersecurity-Skills 实战:基于 SIEM 与 WAF 日志的 API 枚举攻击检测(BOLA/IDOR) Anthropic-Cybersecurity-Skills 实战基于 SIEM 与 WAF 日志的 API 枚举攻击检测BOLA/IDOR【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills导读本文围绕 Anthropic-Cybersecurity-Skills 仓库中的detecting-api-enumeration-attacks技能展开系统讲解如何基于 API 网关与 WAF 日志检测 API 枚举攻击——包括顺序 ID 遍历、UUID/GUID 枚举、参数篡改探测以及 BOLA/IDOR 等对象级授权绕过行为OWASP API1:2023。读完本文你将掌握一整套从「攻击模式识别 → 检测指标提炼 → Splunk/Elastic SIEM 检测规则编写 → Python 检测脚本落地」的完整检测方案并了解如何在数据层强制授权、使用不可预测标识符与端点级限流等预防控制。什么是 API 枚举攻击API 枚举攻击是指攻击者利用顺序或可预测的标识符系统性地探测 API 端点以发现并访问未授权资源的攻击行为。其典型场景是Broken Object Level AuthorizationBOLA对象级授权缺陷它被 OWASP API Security Top 10 列为 API1:2023 最高危 API 漏洞。攻击者通过篡改请求中的对象标识符用户 ID、订单号、账户引用等绕过授权检查访问其他用户的数据。此类攻击本质上是访问控制失效因此日志层面的核心检测思路是监控快速连续访问、授权失败以及异常 API 使用行为三种模式的组合。从 MITRE ATTCK 视角看本技能覆盖了 Active Scanning (T1595) 及子技术 T1595.002、Network Service Discovery (T1046)、Exploit Public-Facing Application (T1190) 与 Account Discovery (T1087) 等技战术映射同时在 NIST CSF 2.0 上对应 PR.PS-01、ID.RA-01、PR.DS-10、DE.CM-01 等功能区见 SKILL.md 元数据。适用场景调查安全事件时需要对 API 枚举攻击进行检测与取证编写该领域的检测规则或威胁狩猎查询SOC 分析师需要结构化的分析流程验证相关攻击技术对应的安全监控覆盖度。前置条件启用日志记录的 API 网关或反向代理Kong、AWS API Gateway、Apigee 等SIEM 平台Splunk、Elastic SIEM 或 Microsoft Sentinel包含请求细节的 API 服务端日志具备 API 防护能力的 Web 应用防火墙WAF理解 API 的授权模型与对象标识符方案。检测技术与严重性速查api-reference.md 给出了五大核心检测技术及对应的严重性分级这是整个检测体系的「雷达表」任何检测规则都应至少覆盖以下五种行为检测技术指示信号严重性顺序 ID 枚举/api/users/1、/api/users/2……HIGH端点模糊测试fuzzing/api/*路径高 404 率HIGH速率滥用单 IP 每分钟 50 次 API 请求MEDIUM路径发现对/swagger、/api-docs、/graphql的请求HIGHBOLA/IDOR 探测访问其他用户的资源 IDCRITICAL这些技术之间存在明显的攻击链递进关系攻击者往往先通过路径发现摸清 API 结构再以端点模糊测试或顺序 ID 枚举批量试探资源最后在BOLA/IDOR 探测阶段真正触达越权数据而速率滥用则贯穿始终是所有自动化枚举行为的共性特征。数据源NGINX Combined Log Format所有检测的前提是拥有结构完整的访问日志。api-reference.md 明确了检测所依赖的 NGINX Combined Log Format$remote_addr - $remote_user [$time_local] $request $status $body_bytes_sent $http_referer $http_user_agent字段语义$remote_addr为客户端 IP$remote_user为认证用户未认证为-$time_local为请求时间$request包含 HTTP 方法与请求路径$status为响应状态码$body_bytes_sent为响应体字节数后随 Referer 与 User-Agent。这条格式是 agent.py 解析器 的直接输入。parse_access_log()用正则(\S) \S \S \[([^\]])\] (\S) (\S) \S (\d) \d从每行日志中提取 IP、时间戳、方法、路径与状态码并封装为结构化条目供后续检测函数使用。如果你的网关/代理日志字段与 Combined 格式存在差异如 AWS API Gateway 的 JSON 格式、Apigee 的 JSON 格式需要先做字段映射/ETL 归一化再喂给检测逻辑。常见枚举路径攻击者的路径选择高度有规律可循。api-reference.md 归纳了最常被枚举的路径模式模式说明/api/v1/users/{id}用户 ID 枚举/api/v1/accounts/{uuid}账户 UUID 猜测/graphql?query{__schema}GraphQL introspection架构探测/swagger/v1/swagger.jsonAPI 文档发现/api-docs、/.well-known端点发现在 agent.py 中这些模式被固化为ENUMERATION_PATTERNS正则列表包括/api/v\d/users/\d、/api/v\d/accounts/[a-f0-9-]、/api/v\d/orders/\d、/graphql.*introspection以及/admin|internal|debug|swagger|api-docs等。当同一 IP 对任一模式匹配到的路径数超过 5 个时detect_path_enumeration()即输出 HIGH 级别的路径枚举告警agent.py L111-L129。三大攻击模式详解1. 顺序 ID 枚举Sequential ID Enumeration攻击者遍历数值型或可预测的标识符GET /api/v1/users/1001 - 200 OK GET /api/v1/users/1002 - 200 OK GET /api/v1/users/1003 - 403 Forbidden GET /api/v1/users/1004 - 200 OK GET /api/v1/users/1005 - 200 OK ...检测指标对同一端点快速发起 ID 递增的连续请求同一来源出现 200/403/401 混合响应请求速率超出正常用户行为基线访问了认证用户作用域之外的资源。注意200 与 403 混存恰恰是最危险的信号——说明授权检查是「事后」的或按资源粒度生效攻击者已能分辨哪些对象存在、哪些对象不可见从而绘制资源清单。2. UUID/GUID 枚举即使使用非顺序标识符只要 UUID 能通过其他端点泄露仍可被枚举利用# 攻击者先从列表端点批量收割 UUID GET /api/v1/posts?page1 - Returns post objects with author UUIDs # 再利用收割的 UUID 访问受限用户数据 GET /api/v1/users/a3f2c1e4-... - Private user profile GET /api/v1/users/b7d9e8f1-... - Private user profile3. 参数篡改枚举Parameter Tampering认证用户通过篡改请求参数越权访问他人资源# 以 user_id100 认证尝试访问其他用户的订单 GET /api/v1/orders?user_id101 GET /api/v1/orders?user_id102 GET /api/v1/orders?user_id103这一模式对应 OWASPAPI3:2023 Broken Object Property Level Authorization对象属性级授权缺陷的前兆行为检测时可针对?user_id、?account等易被篡改的查询参数建立专门的参数监控维度。SIEM 检测规则实战Splunk 检测查询Splunk 查询 从uri_path中提取端点和对象 ID按src_ip endpoint user_session聚合统计# 检测 API 端点上的顺序 ID 枚举 indexapi_logs sourcetypeapi_access | rex fielduri_path (?endpoint/api/v\d/\w/)(?object_id\d) | stats count as request_count, dc(object_id) as unique_ids, values(status_code) as status_codes, min(_time) as first_seen, max(_time) as last_seen by src_ip, endpoint, user_session | eval time_span last_seen - first_seen | eval requests_per_second request_count / max(time_span, 1) | where unique_ids 20 AND requests_per_second 2 | eval severity case( unique_ids 100, critical, unique_ids 50, high, unique_ids 20, medium, 11, low ) | sort - unique_ids | table src_ip, endpoint, unique_ids, request_count, requests_per_second, status_codes, severity要点解析dc(object_id)统计去重后的独立对象数比原始请求数更能反映「遍历」性质requests_per_second 2过滤正常用户偶发访问阈值unique_ids 20与三级 severity 分级20/50/100与 agent.py 的EnumerationDetector分级逻辑 保持一致——这是本技能跨语言规则统一的一个设计细节。第二条查询聚焦 BOLA 的授权失败模式# 通过授权失败模式检测 BOLA indexapi_logs sourcetypeapi_access status_code IN (401, 403) | bin _time span5m | stats count as failure_count, dc(uri_path) as unique_paths, values(uri_path) as attempted_paths by _time, src_ip, user_id | where failure_count 10 | eval attack_type if(unique_paths 5, enumeration, brute_force)这里用unique_paths 5区分枚举探多路径、多对象与暴力破解集中攻击少数路径两种攻击类型是 SOC 分析师可直接照搬的分类判据。Elastic SIEM 检测规则对应 Elastic 侧的 threshold 规则SKILL.md{ rule: { name: API Object Enumeration Detection, description: Detects rapid sequential access to API objects with mixed authorization results, type: threshold, index: [api-access-*], query: { bool: { must: [ { regexp: { url.path: /api/v[0-9]/[a-z]/[0-9] } } ], should: [ { term: { http.response.status_code: 200 } }, { term: { http.response.status_code: 403 } }, { term: { http.response.status_code: 401 } } ] } }, threshold: { field: [source.ip], value: 50, cardinality: [ { field: url.path, value: 20 } ] }, schedule: { interval: 5m }, severity: high, risk_score: 73, tags: [OWASP-API1, BOLA, Enumeration] } }规则逻辑匹配/api/v{version}/{resource}/{id}形态的路径should子句让混合授权结果200/401/403都能命中threshold 按source.ip聚合5 分钟内触发 50 次请求且去重路径数 ≥20 时告警。risk_score: 73与severity: high对应本技能的 HIGH 分级。Python 检测脚本与源码级实现SKILL.md 提供了一个完整的EnumerationDetector实现其核心设计可直接对接前面介绍的 SIEM 规则且仓库配套的 scripts/agent.py 提供了可直接运行的命令行版本。两者共享同一套检测哲学按源 IP 分组 → 时间窗分析 → 去重对象数 每秒请求数 授权失败率联合判定 → 分级告警。对象 ID 提取正则EnumerationDetector.ID_PATTERNSID_PATTERNS [ re.compile(r/api/v\d/(\w)/(\d)), # Numeric IDs re.compile(r/api/v\d/(\w)/([a-f0-9\-]{36})), # UUIDs re.compile(r/api/v\d/(\w)/([a-zA-Z0-9]{20,})), # Long alphanumeric IDs ]三种模式分别覆盖数值 ID、UUID36 位十六进制加连字符和长字母数字 ID如 Stripe 风格sk_live_...或 YouTube 风格 ID保证不同 ID 方案都能被提取出来参与计数。端点归一化endpoint re.sub(r/[a-f0-9\-]{36}, /{id}, re.sub(r/\d, /{id}, record.path))将具体 ID 替换为{id}占位符使/users/1001与/users/1002归并为同一端点模式这是「按端点聚合统计」的关键步骤。顺序性判定_check_sequentialnumeric_ids sorted(int(i) for i in ids) sequential_count sum( 1 for i in range(1, len(numeric_ids)) if numeric_ids[i] - numeric_ids[i-1] 2 ) return sequential_count / len(numeric_ids) 0.7间隔 ≤2 视为「连续步进」当连续占比 70% 时判定为顺序枚举sequential_enumeration否则为随机枚举random_enumeration。阈值参数可在初始化时调节time_window_minutes5、min_unique_ids15、max_requests_per_second5.0。命令行审计脚本agent.pyagent.py 实现了与 SKILL.md 检测器互补的三大检测器并支持 WAF 联动# 解析访问日志并输出三份检测报告 python3 scripts/agent.py --log-file /var/log/api/access.log # 将报告保存为 JSON python3 scripts/agent.py --log-file /var/log/api/access.log --output report.json # 查询 WAF 的 api-abuse 规则事件需 requests 库 pip install requests python3 scripts/agent.py --waf-url https://waf.example.com --waf-key YOUR_API_KEY三大检测器及其在源码中的位置检测器阈值告警逻辑源码位置detect_sequential_ids连续 ID ≥10HIGH顺序 ID 枚举附前 20 个样本 IDagent.py L50-L74detect_rate_anomalies请求数 50 / 404 20MEDIUM速率/ HIGH端点发现模糊测试agent.py L77-L108detect_path_enumeration模式匹配路径 5HIGH路径枚举含 swagger、api-docs、graphql introspectionagent.py L111-L129其中detect_rate_anomalies中50 requests与20 个 404的阈值分别对应 api-reference 中「Rate abuse 50 API requests/minute」与「Endpoint fuzzing 高 404 率」两条检测技术query_waf_logs则演示了如何用requests库拉取 WAF 的rule_categoryapi-abuse事件做二次确认agent.py L132-L142这正是 api-reference.md 中requests库「WAF and SIEM API queries」用途的落地实现。WAF 规则类别WAF 侧可针对不同行为配置独立的规则类别见 api-reference.md以便于在 SIEM 中按类别聚合统计类别说明rate-limit请求速率超过阈值api-abuse自动化 API 枚举bolaBroken Object Level Authorization对象级授权缺陷scanner已知扫描器/模糊测试工具 User-Agent例如 agent.py 的query_waf_logs默认查询rule_categoryapi-abuse与上述分类一一对应SIEM 侧可将 WAF 事件与网关日志关联用 WAF 拦截记录反哺调优检测阈值。预防控制检测之外的三道防线检测只能「看见」根治 BOLA 必须从架构层修复SKILL.md 预防控制章节1. 服务端强制授权数据层兜底# 始终在数据层校验对象归属 def get_user_order(request, order_id): order Order.objects.get(idorder_id) if order.user_id ! request.user.id: raise PermissionDenied(Not authorized to access this order) return order关键原则授权检查不能只做在 Controller/中间件层必须在数据访问层基于对象归属强制执行因为枚举攻击的本质是授权逻辑缺失而非路径隐藏。2. 使用不可预测标识符import uuid # 用 UUID 替代顺序整数 class Order(Model): id UUIDField(defaultuuid.uuid4, primary_keyTrue)UUID 虽非绝对安全如「UUID 枚举」章节所示泄露即可被利用但能大幅提高批量猜测成本与端点级鉴权配合使用效果最佳。3. 按端点实施限流# Kong 按 API 路由限流 plugins: - name: rate-limiting config: minute: 30 policy: redis limit_by: credential按凭据而非 IP限流可规避攻击者轮换 IP 绕过policy: redis适用于多实例分布式网关。生产环境建议按端点资源敏感度设置差异化阈值如/users/{id}30 次/分钟、公开列表端点 120 次/分钟。与 OWASP API Security Top 10 的对应关系本技能覆盖的威胁面可映射到 OWASP API Security Top 10 的前五位ID风险本文关联点API1Broken Object Level Authorization顺序 ID 枚举、BOLA/IDOR 探测CRITICALAPI2Broken Authentication401 混合响应模式、认证绕过API3Broken Object Property Level Auth参数篡改枚举?user_idAPI4Unrestricted Resource Consumption速率滥用50 请求/分钟API5Broken Function Level Authorization/admin、/api-docs等功能级路径探测仓库资源导航技能主体文档skills/detecting-api-enumeration-attacks/SKILL.mdAPI 参考速查skills/detecting-api-enumeration-attacks/references/api-reference.md可执行检测脚本skills/detecting-api-enumeration-attacks/scripts/agent.py技能许可skills/detecting-api-enumeration-attacks/LICENSEMITRE ATTCK 覆盖总览mappings/mitre-attack/coverage-summary.md落地建议数据先行确保网关/WAF 输出 Combined Log Format 或可归一化的结构化日志字段至少包含客户端 IP、认证用户、时间、完整路径、状态码。分层检测SIEM 规则负责全局聚合Splunk/Elasticagent.py 负责离线审计与样本取证WAF 规则rate-limit/api-abuse/bola/scanner负责实时拦截三层互补。阈值调优min_unique_ids、requests_per_second、404 阈值等需基于各自 API 的正常访问基线校准避免大量误报淹没真实告警可用 WAF 已确认的api-abuse事件作为调优参照。闭环修复检出 BOLA 类告警后优先按「数据层强制授权 UUID 化 端点级凭据限流」三项预防控制整改而不是仅靠规则封禁 IP。【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考