API 渗透测试之漏洞发现
漏洞发现是利用收集到的信息,发现应用程序的缺陷或漏洞的过程。在常规的渗透测试中,这种漏洞发现的范围非常广,包含了信息系统的方方面面,比如网络层协议配置错误、主机补丁没有及时升级、应用层权限配置错误等。通常情况下,漏洞发现的手段主要有自动化检测和手工挖掘两种方式。
自动化检测:是指使用设备、工具、软件与被渗透对象进行交互,根据应答响应情况判别是否存在漏洞。这种方式的检测一般耗时短、速度快,但往往存在一定比例的漏报或误报。
手工挖掘:是指以人工方式,辅助工具来验证被渗透对象是否存在漏洞。这种方式的检测通常耗时长、速度慢,但准确性高,很少存在误报。
在实际工作中,往往两种方式混合使用,比如先使用自动化检测工具全量扫描一次,再针对高风险业务场景,进行人工渗透或复核。
在 API 渗透测试中,因为 API 的特殊性,如果前期信息收集不全(比如 API 列表不全遗漏了影子 API),自动化扫描过程中会无法检测到相应 API 的漏洞,这时通常需要手工挖掘。在 API 渗透测试中,手工挖掘往往占有较大的比重。当采用手工挖掘时,以下事项是需要重点关注的。
认证和授权:对于 API 的认证鉴权机制,设计人员和研发人员往往认识不足,有的 API 调用甚至缺少认证与授权机制。比如令牌、HTTP 方法(GET,POST,PUT 和 DELETE 等)在进入服务器之前是否都经过了验证,OAuth 协议使用的正确性,无认证和授权的 API 是否可以任意调用。
输入验证:和其他类型的应用程序一样,对于输入的不可信是应用程序安全的基础,但研发人员常常因疏忽导致对输入缺少有效的验证。比如 XML 实体注入类型的攻击、不同的响应类型 application/json 与 application/xml。
数据编码:包含 JSON 格式的数据,容易导致反序列化漏洞或远程代码执行。
API 版本和影子 API:同一个 API 的不同版本或未在 API 规范文件中描述的 API,更容易发现安全漏洞。
版权声明: 本文为 InfoQ 作者【阿泽🧸】的原创文章。
原文链接:【http://xie.infoq.cn/article/e7626c1f9bf4896660f67f586】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论