1.访问控制崩溃
通过身份验证的用户,可以访问其他用户的相关信息。没有实施恰当的访问权限。攻击者可以利用这个漏洞去查看未授权的功能和数据。常见表现形式:越权访问。可以通过修改URL,内部应用程序状态或者HTML页面绕过访问控制检查。API要对POST,PUT,DELETE请求做强制执行访问控制。
防范:除公有资源外,默认情况下拒绝访问;严格判断权限;记录失败的访问控制;对API和控制器的访问进行速率限制,以最大限度降低自动化工具的危害;当用户注销后,服务器上的JWT令牌应失效。
2.敏感数据暴露
很多Web应用程序和API都无法正确保护敏感数据。要对敏感数据加密。主要是意识上提升。
3.注入
指web应用程序对用户输入数据的合法性没有判断或过滤不严,攻击者可以在web应用程序中实现定义好的查询语句的结尾添加额外的执行语句,在管理员不知情的情况下实现非法操作,一次来实现七篇数据库服务器执行非授权的任意查询,进一步得到相应的数据信息。
SQL注入:SQL命令插入到查询中。因为语法可以把命令拼接起来。
注入点:用户输入;cookie;服务器变量(HTTP头部)
防范:关闭SQL错误回显;使用成熟的WAF;前端输入字符白名单验证(长度,类型等);SQL服务运行于专门的账号,并且使用最小权限;对输入的特殊字符使用转义处理,就是过滤掉。
4.不安全的设计
在开发软件时,在关键身份验证、访问控制、业务逻辑和关键流部位没有进行安全的设计。
业务逻辑:支付密码,密码找回,验证码
5.配置安全不当
不安全的默认配置,不完整的临时配置,错误的HTTP标头配置以及包含敏感信息的详细错误造成。
安装了不必要的功能;默认账号密码没有改;应用软件新版本没有更新;错误处理机制纰漏大量敏感信息;应用程序服务器未进行安全配置;对于更新的系统,禁用或不安全的配置了安全功能。
XXE:当应用程序解析XML文件时包含了对外部实体的引用,攻击者传递恶意包含XML代码的文件,读取指定的服务器资源。
6.使用含有已知漏洞的组件
组件拥有和应用程序相同的权限。可能会造成数据丢失或服务器接管;破坏应用程序的防御。框架漏洞。
防范:移出不使用的依赖、不需要的功能组件文件和文档;仅从官方渠道安全的获取组件,并使用签名机制来降低组件被篡改或加入恶意漏洞的风险;持续监控,查看使用的组件有没有发布新漏洞。
7.认证崩溃
通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或者会话令牌,或者利用其他开发缺陷来暂时性或永久性冒充其他用户的身份。
密码等重要的数据进行交互时,程序存在问题并且被利用了。
允许暴力破解的密码;默认密码;明文密码;暴漏URL中的会话ID;会话ID使用时间过长;
8.软件和数据完整性失败
软件和数据完整性故障与不能防止完整性违规的代码和基础设施有关。
防范:使用数字签名或类似的机制;
9.不足的日志记录和监控
不足的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统,篡改证据。
未记录可审计日志;日志仅存储在本地;没有利用应用系统和API的日志信息来监控可疑活动。
10.服务端请求伪造
Server-Side Request Forgery SSRF:是指攻击者能够从易受攻击的Web应用程序发送精心设计的请求,对其他网站进行攻击。
利用一个可以发起网络请求的服务,当作跳板来攻击其他的服务。
一般情况下:SSRF攻击目标是从外网无法访问的内部系统。