Owasp Top10 2020
Posted 在下小黄
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Owasp Top10 2020相关的知识,希望对你有一定的参考价值。
大家好!
我是小黄,很高兴又跟大家见面啦 !
拒绝水文,从我做起 !!!!
今天更新的是:
- Owasp Top10 2020
创建时间:2021年6月29日
Owasp Top10 2020
- 一、注入(SQL-注入)
- 二、失效身份验证和会话管理(存在暴利破解)
- 三、敏感信息泄露
- 四、XML外部实体注入攻击(XXE)
- 五、存取控制中断
- 六、安全性错误配置(使用CMS的默认配置)
- 七、跨站脚本攻击(XSS)
- 八、不安全的反序列化
- 九、使用具有已知漏洞的组件
- 十、日志记录和监控不足
一、注入(SQL-注入)
- 当攻击者将无效数据发送到Web应用程序以使其执行该应用程序未设计的操作时,就会发生代码注入。此安全漏洞的最常见示例可能是使用不受信任数据的SQL查询。
- **代码注入漏洞的核心是:**缺乏对Web应用程序使用的数据的验证和清理。任何接受参数作为输入的内容都可能容易受到代码注入攻击。
- 危害如下:
- 注入可以导致数据丢失或被破坏,缺乏可审计性或拒绝服务。注入漏洞有时甚至可导致完全接管主机。
如何防止代码注入漏洞
- 首选选项是使用安全的API,该API避免完全使用解释器,或者提供参数化的接口或迁移为使用对象关系映射工具(ORM)。注意:即使参数化了,但是如果PL / SQL或T-SQL连接查询和数据,或者使用EXECUTE
IMMEDIATE或exec()执行恶意数据,则存储过程仍然可以引入SQL注入。 - 使用肯定或“白名单”服务器端输入验证。由于许多应用程序都需要特殊字符,例如文本区域或移动应用程序的API,因此这并不是一个完整的防御措施。
- 对于任何残留的动态查询,请使用该解释程序的特定转义语法来转义特殊字符。注意:表名,列名等SQL结构无法转义,因此用户提供的结构名很危险。这是报表编写软件中的常见问题。
- 在查询中使用LIMIT和其他SQL控件可防止在SQL注入的情况下大量泄露记录。
从这些建议中,您可以抽离出两件事(总结):
- 数据与Web应用程序逻辑分离。
- 实施限制,以在成功进行注入攻击的情况下限制数据公开
二、失效身份验证和会话管理(存在暴利破解)
- 身份验证漏洞可能使攻击者能够尝试控制他们在系统中想要的任何帐户,甚至更糟的是,获得对系统的完全控制。身份验证和会话管理失效通常是指在应用程序身份验证机制上发生逻辑问题,例如恶意行为者暴力破解系统中的有效用户。
- Web应用程序包含一个失效身份验证和会话管理漏洞,如果它:
- 允许自动攻击,例如攻击者在其中拥有有效的用户名和密码的列表。
- 允许暴力破解或其他自动攻击。
- 允许使用默认密码,弱密码或众所周知的密码,例如“ Password1”或“ admin ”。
- 使用薄弱或无效的身份恢复以及忘记密码的过程,这是不安全的。
- 使用纯文本,加密或弱哈希密码。
- 缺少或无效的多因素身份验证。
- 在URL中公开会话ID(例如,URL重写)。
- 成功登录后不轮换会话ID。
- 没有正确地让会话ID无效。用户会话或身份验证令牌(尤其是单点登录(SSO)令牌)在注销或一段时间不活动期间未正确失效。
- 危害如下:
- 这些漏洞可能导致部分甚至全部账户遭受攻击,一旦攻击成功,攻击者就能执行合法的任何操作
如何防范:
- 多因素身份验证
- 弱密码检查,例如针对前10,000个最差密码的列表尝试更改密码。
- 限制失败的登录尝试次数。记录所有故障,并在检测到暴力破解或其他攻击时提醒管理员。
- 使用服务器端安全的内置会话管理器,该管理器在登录后生成具有较高熵的新随机会话ID。 会话ID不应位于URL中。 ID应在注销,空闲和绝对超时后无效。
三、敏感信息泄露
- 敏感信息暴露是OWASP列表上最普遍的漏洞之一。它包括破坏应该受到保护的数据。
如何防止数据泄露
- 加密存储和传输所有的敏感数据
- 确保使用合适强大的标准算法和密钥,并且密钥管理到位
- 确保使用密码专用算法存储密码
- 及时清除没有必要存放的重要的/敏感数据
- 禁用自动收集敏感数据,禁用包含敏感数据的页面缓存
四、XML外部实体注入攻击(XXE)
- XML外部实体注入攻击是针对解析XML输入的应用程序的一种攻击。当弱配置的XML解析器处理包含对外部实体的引用的XML输入时,就会发生此攻击。
- 默认情况下,大多数XML解析器容易受到XXE攻击。因此,确保应用程序不具有此漏洞的责任主要在于开发人员。
如何防止XML外部实体注入攻击
- 尽可能使用简单的数据格式(例如JSON),并避免对敏感数据进行序列化。
- 应用程序或基础操作系统上修补或升级正在使用的所有XML处理器和库。
- 使用依赖项检查器(将SOAP更新为SOAP 1.2或更高版本)。
- 在应用程序的所有XML解析器中禁用XML外部实体和DTD处理。
- 在服务器端实施(“白名单”)输入验证,过滤或清理操作,以防止XML文档,标头或节点内的攻击数据。
- 验证XML或XSL文件上传功能是否使用XSD验证或类似方法验证传入的XML。
- SAST工具可以帮助检测源代码中的XXE-尽管手动代码检查是具有许多集成的大型复杂应用程序的最佳选择。
五、存取控制中断
- 在网站安全中,访问控制意味着根据访问者的需求限制访问者可以访问的部分或页面。
- 例如,如果您拥有一家电子商务商店,则可能需要访问管理面板才能添加新产品或为即将到来的假期设置促销。但是,几乎没有其他人会需要它。允许网站的其他访客访问您的登录页面只会使您的电子商务商店受到攻击。
如何防止访问控制中断
- 采用特权最低的概念–将角色应用于任务,并且仅在完成该任务所需的时间范围内应用,而不再需要更多时间。
- 删除不需要的帐户或不再需要其用户的帐户。
- 审核您的服务器和网站–谁在做什么,什么时候以及为什么做。
- 如果可能,对所有访问点应用多因素身份验证。
- 禁用访问点,直到需要它们为止,以减少访问窗口。
- 从服务器上删除不必要的服务。
- 检查可从外部访问的应用程序以及与网络绑定的应用程序。
- 如果要开发网站,请记住,生产盒不应成为未经测试即可开发,测试或发布更新的地方。
六、安全性错误配置(使用CMS的默认配置)
- 网站管理员最常见的缺陷之一就是保持CMS默认配置。
- 从安全角度来看,对于最终用户而言,今天的CMS应用程序(尽管易于使用)可能会很棘手。到目前为止,最常见的攻击是完全自动化的。这些攻击中有许多都依赖于用户仅具有默认设置。这意味着,在安装CMS时可以通过更改默认设置来缓解大量攻击。同时还需要调整一些设置,以控制评论,用户和用户信息的可见性。文件权限是可以强化的默认设置的另一个示例。
如何防止安全性配置错误
- 可重复的强化过程,可以快速轻松地部署正确锁定的另一个环境。开发,质量保证和生产环境均应配置相同,并且在每个环境中使用不同的凭据。使该过程自动化,以最大程度地减少设置新的安全环境所需的工作。
- 一个没有任何不必要的功能,组件,文档和样本的最小平台。删除或不安装未使用的功能和框架。
- 作为修补程序管理过程的一部分,审查和更新适用于所有安全说明,更新和修补程序的配置的任务。特别是,请查看云存储权限。
- 一种分段的应用程序体系结构,可通过分段,容器化或云安全组在组件或租户之间提供有效且安全的隔离。
- 将安全指令发送到客户端,例如安全标头。
- 在所有环境中验证配置和设置有效性的自动化过程。
七、跨站脚本攻击(XSS)
- 跨站点脚本(XSS)是一个广泛存在的漏洞,会影响许多Web应用程序。XSS攻击包括将恶意的客户端脚本注入网站,并将该网站用作传播方法。
- XSS背后的风险在于,它允许攻击者将内容注入网站并修改其显示方式,从而迫使受害者的浏览器在加载页面时执行攻击者提供的代码。
- 通常,XSS漏洞要求用户通过社交工程或通过访问特定页面来触发某种类型的交互。如果未修补XSS漏洞,则对任何网站来说都是非常危险的。
XSS的类型
- 反射型XSS:应用程序或API包含未经验证和未转义的用户输入,作为html输出的一部分。成功的攻击可以使攻击者在受害者的浏览器中执行任意HTML和javascript。通常,用户将需要与指向攻击者控制的页面的某些恶意链接进行交互,例如恶意注水网站,广告或类似内容。
- 存储型XSS:应用程序或API存储未过滤的用户输入,稍后由其他用户或管理员查看。存储的XSS通常被认为是高风险或严重风险。
- DOM型 XSS:动态地将攻击者可控制的数据包含到页面的JavaScript框架,单页应用程序和API容易受到DOM
如何防止跨站脚本攻击(XSS)
- 使用根据设计自动逃避XSS的框架,例如最新的Ruby on Rails,React JS。了解每个框架的XSS保护的局限性,并适当处理未涵盖的用例。
- 根据HTML输出中的上下文(正文,属性,JavaScript,CSS或URL)转义不受信任的HTTP请求数据将解决Reflected和Stored XSS漏洞。防止XSS的OWASP备忘单详细介绍了所需的数据转义技术。
- 在客户端上修改浏览器文档时,应用上下文相关的编码会影响DOM XSS。如果无法避免这种情况,可以将类似的上下文相关的转义技术应用于浏览器API,如OWASP速查表中基于DOM的XSS预防中所述。
- 启用内容安全策略(CSP)是针对XSS的深度防御缓解控制。如果不存在允许通过本地文件包含放置恶意代码的其他漏洞(例如,路径遍历覆盖或来自允许的内容传递网络的易受攻击的库),则此方法将非常有效。
八、不安全的反序列化
- 关键概念:
- 序列化的过程是将对象转换为字节字符串。
- 反序列化的过程是将字节字符串转换为对象。
- 程序尝试在不进行任何验证的情况下对数据进行反序列化,这倾向于使攻击者可以模拟序列化的数据并发送给应用程序以采取任何暴力措施。
如何防止不安全的反序列化
- 在任何序列化对象上实施完整性检查(例如,数字签名),以防止恶意创建对象或篡改数据。
- 在对象创建之前的反序列化过程中强制执行严格的类型约束,因为代码通常希望使用一组可定义的类。已经证明绕过该技术,因此不建议仅依赖此技术。
- 隔离并运行可能在低特权环境中反序列化的代码。
- 记录反序列化异常和失败,例如传入类型不是预期的类型,或者反序列化引发异常。
- 限制或监视反序列化的容器或服务器的传入和传出网络连接。
- 监视反序列化,并警告用户是否不断反序列化。
九、使用具有已知漏洞的组件
- 简单的网站(例如个人博客)对其具有很大的依赖性。毫无疑问,如果不更新网站后端和前端上的每个软件,无疑会给人们带来沉重的安全风险
防止使用易受攻击的组件的一些方法是
- 删除所有不必要的依赖项。
- 在客户端和服务器端都有所有组件的清单。
- 监视诸如常见漏洞和披露(CVE)和国家漏洞数据库(NVD)之类的源,以查找组件中的漏洞。
- 仅从官方来源获取组件。
- 摆脱未积极维护的组件。
- 在网站应用程序防火墙的帮助下使用虚拟修补程序。
十、日志记录和监控不足
- 保护网站的重要性不可低估。虽然100%的安全性不是一个现实的目标,但是有一些方法可以使您的网站受到定期监控,以便您在发生问题时立即采取行动。如果没有有效的日志记录和监视过程,则可能会增加网站危害的损害。
示例
- 一个小团队运行的一个开源项目论坛软件被利用其软件中的一个漏洞进行了黑客攻击。攻击者设法清除了包含下一个版本和所有论坛内容的内部源代码存储库。尽管可以恢复源,但是缺少监视,记录或警报功能导致更严重的漏洞。由于此问题,论坛软件项目不再处于活动状态。
- 攻击者扫描具有公共密码的用户。他们可以使用此密码接管所有帐户。对于所有其他用户,此扫描仅留下一个错误的登录名。几天后,可能会使用不同的密码重复此操作。
- 据报道,一家大型美国零售商有一个内部恶意软件分析沙箱,用于分析附件。沙盒软件已检测到可能不需要的软件,但是没有人对此检测结果做出响应。在检测到由于外部银行进行欺诈性卡交易而造成的违规之前,沙盒已经发出警告了一段时间。
如何进行有效的网站监控
- 保持审核日志对于掌握网站的任何可疑更改至关重要。审核日志是一个文档,用于记录网站中的事件,因此您可以发现异常并与负责人确认该帐户没有受到威胁。无论出于什么原因在Web应用程序上运行过时的软件,您都无法使其不受保护。
各位路过的朋友,如果觉得可以学到些什么的话,点个赞 再走吧,欢迎各位路过的大佬评论,指正错误,也欢迎有问题的小伙伴评论留言,私信。
每个小伙伴的关注都是本人更新博客的动力!!!
请微信搜索【 在下小黄 】文章更新将在第一时间阅读 !
博客中若有不恰当的地方,请您一定要告诉我。前路崎岖,望我们可以互相帮助,并肩前行!
以上是关于Owasp Top10 2020的主要内容,如果未能解决你的问题,请参考以下文章