返回文章列表
研究档案

通过 SafeBase 信任中心进行内部安全检测

利用已暴露的 SafeBase 信任门户和 Nuclei 无头扫描,提取公开安全控制、验证保证声明,并大规模自动化变更检测。

osintnucleidetectionsafebasecompliance

简介 — 安全保证与 OSINT 探查

公开的 SafeBase 门户 同时服务于两类受众:

  • 需要安全态势证明的潜在客户
  • 安全研究人员(蓝队和红队成员)

每一个 绿色勾选标记 都揭示了一个(据称)当前存在的控制项;每一个缺失的勾选标记同样清晰地暗示着哪些控制项不存在。


此检测方法的功能

本文概述的方法:

  • 使用 Nuclei 无头模式 直接从 HTML 正文中 收集 每个控制项标题
  • 通过单一的正则表达式模板将这些标题 规范化 为机器可读的检测结果
  • 输出 内部安全控制项的 JSON/CLI 匹配结果

为何收集这些数据?

合规框架如:

  • ISO 27001
  • SOC 2
  • PCI-DSS
  • 区域隐私法规

…要求提供安全控制项已到位且正常运行的 证据

SafeBase 通过消除无休止的电子邮件往来和文档请求来简化这一过程。

为何要抓取自己的 Trust Centre?

即使是您自己构建的,也有充分的理由:

  • 持续保证
    审计人员越来越期望持续的实时证据

  • 变更检测
    控制项名称、分组或策略可能在更新或收购后发生变化

  • 第三方映射
    JSON 输出允许与 NIST 800-53 等框架进行映射


蓝队与红队的价值对比

团队 优势
蓝队 确保公开声明保持准确
红队 通过与内部控制库对比来识别差距

检测

手动审查有效,但无法规模化。

相对地,此方法使用 ProjectDiscovery / Nuclei——一款由 YAML 模板驱动的高速扫描工具。

为何选择 Nuclei?

  • 模板驱动的检测
  • 高速扫描
  • 易于自定义
  • 适合大规模自动化

Matchers

该模板包含 70 个 matcher

正则表达式 Matcher 示例

- type: regex
  name: firewall
  regex: ['(?i)Firewall(?:[\s\S]{0,600}?data-testid="enabled")?']

- type: regex
  name: incident-response-policy
  regex: ['(?i)Incident\s+Response\s+Policy(?:[\s\S]{0,600}?data-testid="enabled")?']

使用的正则表达式技术

问题 解决方案
大小写不一致 (?i) 标志
混合空格/换行符 \s+
标题与图标之间的未知间距 [\s\S]{0,600}?

消除误报

DSL matcher 确保更高的准确性:

- type: dsl
  name: names
  dsl:
    - 'status_code == 200'
    - 'contains_any(body, "Powered by SafeBase")'
  condition: and

检查内容

两个条件必须同时为真:

  • 响应状态码为 200
  • HTML 包含 "Powered by SafeBase"

绕过 Cloudflare WAF

大多数 SafeBase 门户位于 Cloudflare WAF 后面,会阻止爬取尝试。

解决方案:无头模式

使用 Nuclei 的 无头 Chromium 执行:

  • 运行 JavaScript 挑战
  • 绕过 Cloudflare Managed Challenge
  • 渲染动态内容

无头配置

headless:
  - steps:
      - action: navigate
        args:
          url: "{{BaseURL}}"
      - action: sleep
        args:
          duration: 1s

详细说明

  • navigate
    启动 Chromium 并加载目标 URL

  • sleep (1s)
    允许:

    • JavaScript 执行
    • Cookie 设置
    • 完整页面渲染

如果 HTML 显示不完整,请增加延迟时间。


故障排除

如果结果缺失:

  • 您的 IP 可能已被封锁
  • 如有必要,请使用代理

大规模扫描

1. 构建目标列表

# domains.txt
https://trust.gitlab.com
https://security.projectdiscovery.io
https://trust.your-vendor-here.com

您也可以包含:

  • 子域名
  • 已爬取的端点

2. 以并发方式运行 Nuclei

nuclei \
  -t safebase-checks-enabled.yaml \
  -headless \
  -l matches.txt \
  -c 50 \
  -o safebase-scan.json

关键参数

参数 用途
-l 输入文件
-c 50 并行浏览器(资源密集型)
-o 输出文件

输出选项

  • JSON
  • CSV
  • Stdout

您可以将结果转发至:

  • S3
  • Slack
  • SIEM

模板仓库

https://github.com/rxerium/internal-security-detect


3. 通过 CI/CD 自动化

GitHub Actions 示例

jobs:
  safebase-scan:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - run: |
          nuclei -t safebase-checks-enabled.yaml -headless -l domains.txt -c 50 -o results.json
      - name: Upload artefact
        uses: actions/upload-artifact@v4
        with:
          name: safebase-results
          path: results.json

总结

此技术仅限于使用 SafeBase 的组织,但它展示了一个强大的概念:

被动 OSINT 可以与合规、保证和检测相交汇。

通过利用公开可访问的信任门户,研究人员可以:

  • 分析控制框架
  • 验证安全声明
  • 自动检测变更

…所有这些都 无需身份验证或直接系统访问