登录接口校检
1.验证登录接口中密码是否密文传输
2.验证登录接口简单密码是否可以爆破登录
3.验证登录接口验证码是否可以爆破登录
接口规则校验
1.接口类型是否合理
2.验证新增和修改接口是否是独立的接口
3.验证POST接口中是否将参数拼接成URL
接口越权校验
1.验证接口url上是否区域编码、身份证号等参数
2.验证接口url上存在true或false时,进行篡改,功能、数据是否越权
3.验证接口url上存在type=1或2时,进行篡改,功能、数据是否越权
4.接口参数中存在pagesize或者size时,进行篡改,是否进行最大值限制
5.接口body参数中存在身份证号码时,篡改参数值,接口是否返回正确提示
6.同级别的用户是否可以执行该接口
7.高于该级别的用户是否可以执行该接口
8.低于该级别的用户是否可以执行该接口
接口结构进行校验
1.将url替换http方法,整改body是否有问题
2.登录接口,看uel后半部分是否有有没有跨目录问题
3."登录接口,看uel后半部分是否有重定向问题
4.url中的参数注入测试,查询看有没有sql注入xss、crlf等
5.Head头部分,如果是web接口,cors csrf 日志注入
6.上传接口可能要验下type字段,是否限定
7…如果场景传xml,文件没解析可能有xxe等等
8.换别的类型文件是否可以传
9.大小,文件,dos,是否有做解析
10.Body,参数大小/类型是否有限制
11.body内容替换成其他用户/租户,是否有误越权问题
失效的对象级别授权
1.在使用某个功能时通过用户提交的对象 ID(如订单号、记录号)来访问或操作对应的数据,且未进行严格的权限限制。
2.使用 burpsuite对 oid 参数进行遍历,尝试越权访问他人订单详情,可以看到成功查看到了他人订单信息。
失效的用户身份验证
1.未校验令牌的有效性
2.更新密码接口微信啊之请求频率,旧密码参数可暴力破解
3.短信验证码或邮箱
4.验证码有效期超过10分钟或长度小于6位"
过度数据暴露
1.不要以拦客户端来过滤敏感数据检查API的响应,确认其中仅包含合法数据,停止用通用API向用户发送一切的过程(必须避免将所有信息直接执行toString(),to_json(),然后发送给客户端,只选择返回给授权用户的属性,并专门发送这些信息)对于敏感数据应使用加密技术进行保护。
资源缺乏和速率限制
1.对用户调用 API 的频率执行明确的时间窗口限制,定义并强制验证所有传入参数和有效负荷的最大数据量,例如字符串的最大长度和数组中元素的最大数量。在突破限制时通知客户,并提供限制数量及限制重
置的时间。
失效的功能级授权
1.防止这种 API 漏洞尤其重要,因为攻击者不难找到结构化函数,因此所有业务层面的功能都必须使用基于角色的授权方法进行保护。一定要在服务器上实现授权,不能试图从客户端保证功能的安全。在创建功能和资源级别时,用户应该只被赋予做它们需要的事情的权限,实践最小权限的方法,批量分配,如果可能,请避免使用将客户输入自动绑定到代码变量或内部对象中的函数。仅将客户端可更新的属性列入白名单。
2.使用内置功能将客户端不应该访问的属性列入黑名单,如果可能,为输入数据有效负载准确、明显的定义和实施schema格式
安全配置错误
1.比如攻击者在服务器的根目录下找到.bash_history文件,该文件包含DevOps团队用于访问API的命令,攻击者可由此命令获取权限认证信息
(Zm9vOmjhcg==base64解码:foo:bar)以及接口信息。
注入
1.判断服务端是否支持 XML 解析,如果支持,可以尝试 XML 注入。
<?xml version=""1.0""encoding=""utf-8""?> ]>&entityex;
API 未对来自外部系统(如,集成系统)的数据进行验证、过滤或净化。
资产管理不当
1.应该做到对所有的 API、他们的用途和版本进行严格的盘点。主要关注因素包括,部署到什么环境中,如生产或开发,谁应该对它们有网络访问权限、收集和处理哪些数据,是常规数据还是敏感数据、API的存活时间、当然还有它们的版本。一旦完成,需要实施一个流程,将文档添加到任何新创建的 API 或服务中。这应该包括 API 的所有方面,包括速率限制、如何请求和相应、资源共享、可以连接到哪些端点、以及它任何以后需要审计的内容,还需要避免在生产中使用非生产 API,考虑给 API 增加一个时间限制等。
日志和监视不足
1.API 的脆弱项:
没有生成任何日志、日志级别没有正确设置、或日志消息缺失足够的细节信息;不能保证日志的完整性;没有对日志进行持续监视;API 基础设施没有被持续监视。