ChkApi 1.0 实战:Python3.8 自动化巡检 100+ API 资产与敏感信息挖掘

在数字化转型浪潮中,API已成为企业数据流通的核心动脉。据统计,2025年全球API调用量将突破50万亿次,而其中约34%的API存在未修复的高危漏洞。传统人工巡检方式面对海量API资产时力不从心, 自动化API安全检测工具 正成为甲方的刚需。本文将深度解析开源工具ChkApi 1.0在Ubuntu 20.04环境下的实战应用,从零搭建自动化巡检体系,到精准提取JDBC连接串、AKSK密钥、私钥等核心敏感数据。

1. 环境部署与工具配置

1.1 基础环境准备

ChkApi基于Python3.8开发,推荐使用Ubuntu 20.04 LTS作为运行环境。以下为完整依赖安装流程:

# 更新系统并安装基础依赖
sudo apt update && sudo apt upgrade -y
sudo apt install -y python3.8 python3-pip git chromium-browser

# 安装Chromedriver(注意版本匹配)
LATEST_CHROME=$(curl -s https://chromedriver.storage.googleapis.com/LATEST_RELEASE)
wget https://chromedriver.storage.googleapis.com/$LATEST_CHROME/chromedriver_linux64.zip
unzip chromedriver_linux64.zip && sudo mv chromedriver /usr/local/bin/

1.2 ChkApi安装与验证

通过Git克隆项目仓库并安装Python依赖:

git clone https://github.com/0x727/ChkApi_0x727.git
cd ChkApi_0x727
pip3 install -r requirements.txt

# 验证安装成功
python3 ChkApi.py -h

正常运行时将显示如下参数说明:

usage: ChkApi.py [-h] [-u URL] [-f FILE] [-c COOKIES] [--chrome {on,off}] [--at {0,1}] [--na {0,1}]

optional arguments:
  -h, --help       show this help message and exit
  -u URL           Target URL
  -f FILE          File containing multiple URLs
  -c COOKIES       Authentication cookies
  --chrome {on,off} Enable/disable Chrome driver (default: on)
  --at {0,1}       0=collect+scan, 1=collect only (default: 0)
  --na {0,1}       0=scan vulns, 1=skip vuln scan (default: 0)

注意 :若企业网络存在严格代理限制,需提前配置系统代理环境变量或使用 --chrome off 关闭浏览器驱动模式。

2. 资产扫描策略设计

2.1 目标资产识别

ChkApi通过三重机制发现API端点:

  1. 静态解析 :提取HTML/JS中的硬编码接口路径
  2. 动态爬取 :执行浏览器自动化获取异步加载接口
  3. 字典爆破 :内置300+常见API路径字典(如 /api/v1/users

扫描策略建议采用渐进式覆盖:

# 示例扫描命令组合
# 第一阶段:基础信息收集(不检测漏洞)
python3 ChkApi.py -u https://target.com --at 1 -c "sessionid=xxxx" 

# 第二阶段:深度漏洞检测
python3 ChkApi.py -u https://target.com --na 0 -c "sessionid=xxxx"

2.2 扫描参数优化

针对不同场景推荐配置:

场景类型 推荐参数 耗时预估 内存消耗
单域名深度扫描 --na 0 --chrome on 2-4小时 2GB+
多域名快速巡检 --na 1 --chrome off 30分钟/域 500MB
登录态接口检测 -c "token=xxxx" 增加20% 基本持平

特殊场景处理:

  • Swagger文档解析 :自动识别 /swagger-ui.html 等路径
  • GraphQL接口 :需手动添加 --headers '{"Content-Type":"application/json"}'

3. 敏感信息挖掘实战

3.1 JDBC连接串提取

数据库连接字符串通常包含IP、端口、账号密码等敏感信息。ChkApi通过正则匹配以下模式:

jdbc:(mysql|oracle):\/\/([0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]{2,4}\/[^\s]+

实战案例:在某金融平台巡检中发现泄露的MySQL配置:

jdbc:mysql://10.2.8.47:3306/core_db?user=dbadmin&password=C0mplexP@ss2023

3.2 AKSK密钥识别

云服务访问密钥通常具有固定特征:

  • 阿里云 LTAI[0-9a-zA-Z]{20}
  • AWS AKIA[0-9A-Z]{16}
  • 腾讯云 AKID[0-9a-zA-Z]{32}

ChkApi内置多云厂商密钥模式识别,并自动验证密钥有效性。某次扫描结果示例:

{
  "cloud_type": "aliyun",
  "access_key": "LTAI5tR8kP9qZwX7MNZ*****",
  "secret_key": "W4V9LpzKx0BmQ2nHjJ8**********",
  "is_valid": true,
  "services": ["OSS", "ECS"]
}

3.3 私钥文件检测

通过以下特征识别RSA/DSA私钥:

-----BEGIN (RSA|DSA|EC) PRIVATE KEY-----
[\s\S]+?
-----END (RSA|DSA|EC) PRIVATE KEY-----

风险等级评估标准:

泄露位置 风险等级 典型影响
前端JS文件 高危 全线业务系统沦陷
接口响应包 严重 中间人攻击风险
错误信息回显 中危 辅助其他漏洞利用

4. 结果分析与报告生成

4.1 数据聚合分析

ChkApi输出三种格式结果:

  1. 原始日志 target.com_api.txt (含完整请求响应)
  2. 结构化数据 target.com_api.xlsx (分类统计)
  3. 风险摘要 target.com_risk.txt (按CVSS评分排序)

关键指标计算公式:

风险密度 = 高危漏洞数 / 有效API总数 × 100%
敏感接口占比 = 含敏感信息的API数 / 总API数 × 100%

4.2 典型漏洞修复方案

针对高频漏洞的即时处置建议:

漏洞类型 修复方案
硬编码密钥 立即轮换密钥,改用KMS动态获取
未授权访问 添加JWT/OAuth2.0鉴权,设置IP白名单
敏感信息泄露 配置响应过滤器,移除调试信息
SQL注入风险 使用PreparedStatement,启用ORM框架的SQL过滤

4.3 自动化集成方案

通过GitHub Actions实现CI/CD流水线集成:

name: API Security Scan
on: [push]
jobs:
  chkapi-scan:
    runs-on: ubuntu-20.04
    steps:
      - uses: actions/checkout@v2
      - name: Set up Python 3.8
        uses: actions/setup-python@v2
        with:
          python-version: '3.8'
      - name: Run ChkApi
        run: |
          git clone https://github.com/0x727/ChkApi_0x727
          cd ChkApi_0x727
          pip install -r requirements.txt
          python ChkApi.py -u ${{ secrets.TARGET_URL }} --na 0
      - name: Upload Results
        uses: actions/upload-artifact@v2
        with:
          name: scan-report
          path: ChkApi_0x727/*.xlsx

在金融行业某次实战中,通过ChkApi发现的未授权访问接口导致攻击者可批量下载客户身份证扫描件。该漏洞在自动化扫描触发后的37分钟内即被修复,避免了千万级罚款风险。

更多推荐