31类API安全测试的小技巧,带你走近API安全知识的海洋!
共 2856字,需浏览 6分钟
·
2021-06-01 00:28
、
//////////
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/
将其修改为 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对象,则发生授权绕过。
-------- THE END --------