ChkApi 1.0 实战:Python3.8 自动化巡检 100+ API 资产,提取 3 类敏感信息
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端点:
- 静态解析 :提取HTML/JS中的硬编码接口路径
- 动态爬取 :执行浏览器自动化获取异步加载接口
-
字典爆破
:内置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输出三种格式结果:
-
原始日志
:
target.com_api.txt(含完整请求响应) -
结构化数据
:
target.com_api.xlsx(分类统计) -
风险摘要
:
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分钟内即被修复,避免了千万级罚款风险。
更多推荐
所有评论(0)