针对API的渗透测试一般分为7个步骤,分别是:
前期交互
信息收集
威胁建模
漏洞发现
漏洞利用
后渗透或横向移动
报告撰写
这里主要介绍信息收集和漏洞发现。
API渗透的信息收集
信息收集是API渗透的入口,非常的重要。
1.自动化的收集
使用自动化工具收集相关对象的信息。 包括域名,子域名,IP,端口,DNS,路径,参数等等
2.手工收集
手工整理业务流程,组织架构和人员职能等
3.情报收集
通过其他渠道获取关键信息。
注意的事项:
API是否存在接口定义的规范描述文件?
如果存在,遵循的规范是什么?
API 依赖什么语言实现?
API 运行所依赖的组件是什么版本?是否存在已知的漏洞
互联网上是否存在其泄露的API key 或者证书
API 是否存在多个版本?多个接入端?
API 渗透的漏洞发现
1.自动化检测
和对象进行交互,根据应答的响应情况来判断是否存在漏洞。
特点: 耗时短,速度快,但是存在误报
2.手工挖掘
人工方式验证,使用辅助的工具
特点: 耗时长,速度慢,但准确性高
实际工作,往往两种方式混用。 先使用自动化监测工具全量扫一遍,再根据高风险业务场景进行人工测试或者复核。
注意的事项:
API渗透测试多为手工挖掘
认证和授权。 对于API的认证鉴权机制,设计人员和研发往往认识不足,甚至缺少认证和授权机制。 比如 令牌,HTTP方法在进入服务器之前是否都经过了严重,OAuth协议使用的正确性,无认证和授权的API 是否可以任意调用。
输入验证。 研发人员通常对输入缺少有效的验证,比如XML实体注入的类型攻击,不同的响应类型application/josn和application/xml
数据编码。 包含JSON格式的数据,容易导致反序列化漏洞或者远程代码执行
API版本和影子API。 同一个API的不同版本活未在API规范文件描述的API更容易发现漏洞。

还不快抢沙发