什么是API测试,api检测公司
本文讲述了什么是API测试,api检测公司。
随着API在软件平台提供商中日益流行,为了确保应用程序之间能够正常通信,用户需要对API进行测试。虽然API测试的格式看起来像webhttp调用,但是执行的测试类型类似于其他应用程序的测试类型。
API是一个应用程序调用另一个应用程序服务的一种方式。API可以提供企业软件调用之外的功能。例如天气、运动成绩、股市行情和许多其他类型的数据,都可以通过商业API获取。
API通常使用代表性的状态传输(REST)接口。这使HTTP调用能够访问通用资源标识符(通常称为URI),该标识符执行对服务的调用。
要测试API,需要传入合法范围内和超过范围数据,并观察是否达到预期的结果,超出范围的输入是否提供有用的错误消息并返回失败。
许多平台都是基于web的,或者在云中,所以测试API以考虑网络、地理位置和域名系统。发送来自世界各地不同地点的流量,以确保不同地理区域的访问保持一致。
自动化测试API,特别是当该API是一个需要保证可用性和响应时间指标的商业服务时。通过调用接口和计时来测试API性能。
API监控将实时显示API是否适合健康。如果API在某些时候使用率很高,那么需要实时监控API的稳定性。
演示使用Eolinker,是一款适用于多种规模团队,能满足不同需求的的Saas工具。
使用地址:www.eolinker.com
随着RESTful API、GraphQL API等API技术的发展,掌握API安全技术是渗透测试工程师的一项基本技能,在渗透测试过程中会用到各种API安全工具和技巧,其中API安全小贴士是入门学习的首选推荐,这里将它的中文版转发过来。
//////////
1. API版本漏洞,比如存在api/v3/login则检测api/v1/login,低版本API可能存在更多漏洞。
2.API多端/多接入点漏洞,比如认证接口,可能存在移动端、PC端、web端不同的认证接口或者不同的认证入口,/api/mobile/login 、 /api/v3/login 、 /api/magic_link等。
3. BOLA(失效的对象级授权和访问控制),BOLA像十年前的SQL注入一样,在API安全中广泛存在,作者通过一个附件材料,详细地介绍了BOLA问题的根源、如何发现和检测、如何防范和规避,并针对不同的角色(技术经理、开发人员、渗透人员)给出了建议。
4. 命令行注入,
以https://apidock.com/ruby/Kernel/open为例,开发人员使用了这个接口可能会导致命令行注入漏洞的存在。
5.API接口也会存在SSRF,可以利用此漏洞可以探测内网IP地址、端口、下载大文件导致Dos、显示内网控制台等。
6. 批量分配问题,现代开发框架鼓励开发人员在不理解安全含义的情况下使用批量分配方式的数据结构,往往仅仅通过修复http请求方法即可获取额外的信息,比如同一个接口由PUT请求调用修改为GET请求。
7. 同一功能多个接口问题,当一家公司对外提供API接口给开发者时,同样的功能下,API接口与移动端、PC端接口实现方式一定要单独测试验证,不要假定跟移动端、PC端具备同样的安全机制。
8. 多协议问题,当渗透测试时,如果是REST API,试着仅仅将content-type修改为 "application/xml",添加一段xml后发出请求,验证其是否支持SOAP协议,从而发现是否存在安全漏洞。
9. HTTP header标志符安全问题,当渗透测试REST API,HTTP header中的标志符往往比url中的标志符更容易发现安全问题。
10. 破坏功能级的授权和访问控制,来发现管理类API接入点,比如正常的请求是GET /api/v1/users/<id> 将其修改为 DELETE / POST 去尝试删除或创建用户。
11. 使用header认证,如果验证机制不支持cookie方式,则需要通过防护设计来保护API免受CSRF攻击。
12. 测试数值枚举,即使ID值为GUID生成的,也可以使用数值类型的来测试,比如使用 /?user_id=111来代替 user_id=inon@traceable.ai的值,有时候授权机制同时支持数值型和字符串型两种方式。
13. 批量分配问题导致授权绕过,比如POST /api/reset_pass 接口调用时需要验证旧密码,而PUT /api/update_user 接口调用可能就不需要旧密码。
14. 尝试扩展攻击面,比如通过http://Virustotal.com或 http://Censys.io可能发现同一API的不同的配置或不同的版本,以帮助你发现问题。
15. 静态资源授权问题,很多时候,应用程序本身授权访问控制在开发方面可能做得很好,但对静态资源的保护,比如说视频、图片、文件,在访问控制做得不够,存在未授权访问问题。
16. 渗透测试工具选择Burp Suite,即使免费版也提供树状视图,帮助你管理和发现所有你可以访问的API接口。
17. Mobile Certificate Pinning,当你测试Android或iOS APP时,在逆向工程或打补丁之前,看看老的版本是否存在Mobile Certificate Pinning不可用的问题。
18. 多关注很少人使用的功能,企业和开发者更多的关注那些使用量高的API,对于使用频率低的API,往往存在有趣的漏洞。
19. 以下这些功能可能存在更多的漏洞,比如组织机构内的用户管理、 CSV/HTML/PDF文件导出、客户视图、子账号的管理创建、对象共享(比如图片、文档等)。
20. 限流测试,尤其是在测试环境中,开发人员往往丢失限流机制,导致被暴力破解。
21. 使用 http://archive.com扩展攻击面,在http://archive.com上寻找老版本的应用,扫描js文件来发现url地址,扩大攻击点。
22. 个人信息泄露,一般来说,安全设计默认是保护个人信息隐私的,但通常后端工程师将json数据全部返回给前端工程师,由前端工程师做好数据过滤后展现。渗透时可以找到API调用入口,获取所有的信息,比如/download_receipt,/export_receipt等。
23. 下载应用APP或者应用源码,通过逆向工程(比如DLL文件: 使用IL-spy; Java反编译使用Luyten)来发现更多的问题。
24. 渗透测试环境下认证, 授权, 限流、输入验证的安全机制,在测试环境中,研发人员往往禁用这些安全机制,渗透人员可以利用此来扩大攻击面。
25.攻击导出PDF功能,导出功能往往使用扩展类库来处理导出功能,比如转换html为PDF,可以试试html注入。
26. 常用授权绕过技巧,在某些场景下,授权机制依赖于某个ID值,如果将ID值篡改为对象,比如数组对象、JSON对象,则发生授权绕过。
类似的攻击手法有:
数组绕过:{“id”:111} --> {“id”:[111]}JSON
对象绕过:{“id”:111} --> {“id”:{“id”:111}}
两次传值绕过:/api?id=非法参数值&id=恶意参数值
正则匹配绕过:{"user_id":"*"}
27. 当后端服务存在XSS保护时,以JSON代替试试。某些场景下,后端服务对html中存在xss具备保护机制,一旦触发则无应答或异常响应,试试以JSON格式的响应。
28. .NET应用测试技巧:有时候,开发者使用path_1,path_2两个参数来构造绝对路径,可能存在如果path_2为绝对路径时,则path_1则被忽略。
29. 善于利用API公开资料,大多数API接口都会有接口说明文档,并配备使用的源码样例程序,渗透测试人员要善于利用这些资料,分析用户、角色、资源之间的关系,从而发现更多的漏洞。
30. 渗透测试进入僵持阶段怎么办?扩大攻击面。如果有移动端应用,可以从应用市场下载历史版本,寻找安全机制缺失的API调用接口,比如授权、参数过滤、速率限制、影子API等。
31. 关注速率限制类型的安全漏洞,尤其是带有limit / page之类的参数,比如/api/news?limit=100,/api/news/pageNo/10/pageSize/50之类的接口,通过修改参数值测试是否存在Http Dos漏洞。
上文是小编为大家整理的什么是API测试,api检测公司。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
评论列表
关于API测试的部分,作者写的很全很详细,感谢分享~学习到了。
我们用的是Eolinker这个API管理工具,做API检测确实挺好用的。
真的写的很好,感谢作者普及API检测的相关知识!
api检测和api监控哪个应该先做呢?
api检测还是挺有必要的
能够实时监控的API管理工具确实是不错的,能够大大的提高效率和保障
正好在找关于api检测的内容,学习到了,感谢作者分享。
年少不知API的好,api监控确实挺方便的!