API 接口渗透测试
字数 2490 2025-08-29 08:32:30
API接口渗透测试全面指南
1. API接口概述
1.1 RPC(远程过程调用)
RPC(Remote Procedure Call)是一种计算机通信协议,允许一台计算机上的程序调用另一台计算机的子程序,而无需额外编程。
特点:
- 直接使用TCP协议通信,通常不涉及HTTP
- 主要技术:
- XML-RPC
- JSON-RPC
- Web Service和RESTful API都可视为RPC的子集
1.2 Web Service
Web Service是一种服务导向架构技术,通过标准Web协议提供服务,保证不同平台应用服务的互操作性。
关键特征:
- 基于SOAP协议传递XML格式消息
- 通常使用WSDL(Web Services Description Language)描述服务
- 较"重"且"老",多用于金融机构历史应用
1.3 RESTful API
REST(Representational State Transfer)是一种资源在网络中以某种表现形式进行状态转移的架构风格。
核心概念:
- Resource:资源,即数据
- Representational:表现形式(JSON/XML/JPEG等)
- State Transfer:通过HTTP动词实现状态变化
RESTful API特点:
- 主要使用JSON格式(现代Web应用主流)
- 相比Web Service更轻量
1.4 相关架构模式
现代API设计与以下架构模式密切相关:
- MVC:Model-View-Controller
- MVP:Model-View-Presenter
- MVVM:Model-View-ViewModel
2. API测试环境与工具
2.1 Web Service测试
2.1.1 发现Web Service接口
Google Hacking技巧:
inurl:jws?wsdl
inurl:asmx?wsdl
inurl:aspx?wsdl
inurl:ascx?wsdl
inurl:ashx?wsdl
inurl:dll?wsdl
inurl:exe?wsdl
inurl:php?wsdl
inurl:pl?wsdl
inurl:?wsdl
filetype:jws
filetype:asmx
filetype:ascx
filetype:aspx
filetype:ashx
filetype:dll
filetype:exe
filetype:php
filetype:pl
filetype:wsdl
wsdl
其他发现方法:
- Fuzzing
- 爬虫
2.1.2 测试工具
主要工具:
- SoapUI PRO:14天试用版,支持自动化测试
- SoapUI Free:手工测试
- SOAPSonar:SoapUI替代品
- Burp Suite:代理拦截、通信重放
- WSSAT
- WS-Attacker
2.1.3 测试项目
测试重点:
- Fuzzing(XSS/SQLi/Malformed XML)
- 文件上传漏洞
- Xpath注入
- XML Bomb(DoS)
- 认证相关攻击
- 重放攻击
- Session fixation
- XML签名包装
- Session超时
- 主机密码支持/有效证书/协议支持
- 哈希算法支持
2.1.4 手工测试方法
使用SoapUI Open Source步骤:
- 创建工作空间
- 新建SOAP项目
- 添加WSDL(名称和链接)
- 选择TestSuite,添加安全测试
- 选择测试类型并运行
代理配置:
- 在SoapUI中配置Burp代理("File"-"Preference"-"Proxy")
2.1.5 自动化测试
步骤:
- 配置SoapUI代理
- 输入WSDL地址
- SoapUI自动探测接口
- 右键项目选择安全测试
- 运行测试(Burp捕获请求)
其他工具:
- WSSAT:加载WSDL列表文件运行
- WS-Attacker
- AWVS:可直接测试Web Service
2.2 RESTful API测试
2.2.1 测试工具
常用工具:
- 浏览器插件:
- Chrome Restlet Client
- Firefox RESTClient
- 客户端工具:
- Postman
- Swagger
Postman代理配置:
- 设置中配置代理服务器
3. 常见API漏洞与测试方法
3.1 逻辑越权类
本质:不安全的直接对象引用
攻击方式:
- 修改可猜测参数(用户名、用户ID、连续数字等)
- 通过参数变形(编码/哈希)绕过限制
示例漏洞:
- 通过修改参数获取不同用户数据
- 参数遍历获取敏感信息
3.2 输入控制类
漏洞类型:
- XXE(XML外部实体注入)
- 注入漏洞(SQL/XPath等)
- XSS
- 缓冲区溢出
- 特殊字符处理不当
示例漏洞:
- XML解析导致的XXE
- JSON参数注入
- 未过滤特殊字符导致代码执行
3.3 接口滥用
漏洞表现:
- 缺乏请求频率限制
- 可爆破验证码/登录凭证
- 可遍历手机号/身份证等敏感信息
示例漏洞:
- 短信验证码爆破
- 登录接口暴力破解
- 敏感信息枚举
3.4 信息泄露
漏洞类型:
- 越权导致的信息泄露
- 畸形请求导致的报错信息泄露
- 敏感数据未脱敏
示例漏洞:
- 错误响应包含堆栈跟踪
- 未授权访问敏感接口
- 响应中包含调试信息
3.5 HTTP响应头控制
安全响应头建议:
X-Content-Type-Options: nosniffX-Frame-Options: denyContent-Security-Policy: default-src 'none'- 删除指纹头(
X-Powered-By,Server,X-AspNet-Version等) - 强制使用正确的
content-type
3.6 服务端配置漏洞
常见问题:
- 服务端版本信息泄露
- 使用存在漏洞的服务端程序
- 不安全的默认配置
4. API安全加固建议
4.1 认证与授权控制
- 实施严格的认证机制
- 基于角色的访问控制(RBAC)
- OAuth2.0/OpenID Connect等标准协议
- JWT签名验证
4.2 用户输入控制
- 所有输入参数验证
- 白名单过滤
- 参数化查询防注入
- XML/JSON解析安全配置
4.3 接口请求频率限制
- 实施速率限制(如令牌桶算法)
- 敏感操作二次验证
- 验证码机制
4.4 输出控制
- 敏感数据脱敏
- 统一错误处理
- 禁用详细错误信息
4.5 安全响应头
- 添加安全相关HTTP头
- 禁用不必要的信息泄露
4.6 其他建议
- 定期安全测试
- API安全开发规范
- 安全编码培训
- 参考OWASP API安全指南
5. 参考资源
- OWASP Web Service安全测试备忘单
- API安全清单(API-Security-Checklist)
- Web Service安全测试系列文章