中科天齐软件安全中心
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
Web 应用程序通常处理大量数据,这些数据从个人用户详细信息到敏感的公司信息。随着这些应用程序的复杂性和重要性的增长,它们也成为威胁参与者的主要目标。OWASP Top 10 代表了对 Web 应用程序最重要的安全风险的广泛共识。
OWASP(开放 Web 应用程序安全项目)Top10 始于 2003 年,旨在根据真实世界的数据和专家共识突出最关键的 Web 应用程序漏洞。多年来,为了保持与不断变化的威胁形式相关,OWASP Top 10经历了多次修订,成为理解、测试和改进Web应用程序安全性的基准。以下是最新的 OWASP Top 10(2021年更新)。
1.访问控制中断
访问控制中断是指对允许经过身份验证的用户在应用中执行的操作设置的限制不足。用户权限和权限实现中的这些缺陷允许用户执行超出其预期权限的操作或访问数据。访问控制中断的一个例子是,一个标准用户在没有适当权限的情况下,简单地操纵一个URL来访问应用程序中的管理功能。
要测试 Web 应用是否存在损坏的访问控制安全风险,可考虑以下策略:
创建多个测试帐户,每个帐户具有不同的角色,并尝试执行超出范围的操作。
尝试劫持或交换会话令牌,以查看一个用户是否可以冒充另一个用户或提升其访问权限。
尝试修改 URL、隐藏字段或 API 请求中的参数,以访问不适合标准用户的对象。
最重要的预防措施是设计和实施强大的基于角色的访问控制 (RBAC) 系统。确保每个用户角色都具有最低必要的权限(最小权限原则)。在整个应用程序中,无论是在前端还是在后端,始终强制执行这些角色。
2. 加密失败
这种安全风险与加密的不正确实现或使用有关,例如使用过时的算法或不正确的密钥管理配置。熟练的网络攻击者可以轻而易举地绕过薄弱或配置错误的加密技术来篡改Web应用程序或访问敏感数据。
要测试此风险,可执行以下操作:
审核已弃用方法或算法的加密做法。
测试密钥管理实践。
确保应用使用安全、更新的加密库。
3. 注入
Web应用程序中的注入漏洞允许攻击者构建恶意输入,从而欺骗应用程序执行意想不到的命令。最著名的类型是SQL注入,攻击者操纵Web应用程序的数据库查询。
若要测试 Web 应用的注入风险,可执行以下操作:
使用静态代码测试来识别潜在的漏洞。
使用各种注入有效负载动态测试应用。
确保应用验证并清理用户输入。
4. 不安全的设计
Web应用程序中的不安全设计意味着架构和基础选择本身就缺乏安全考虑。这些有风险的选择可能会使应用程序容易受到攻击,无论单个代码级安全措施如何。
不安全设计的测试策略更加细致入微,包括:
进行威胁建模,以了解应用程序的设计、数据的流动方式以及潜在的弱点。
对应用程序的体系结构进行全面审查,并评估基础层是否内置了安全控制,包括身份验证、授权和数据验证。
确保开发、测试和生产环境是不同的和隔离的。
5. 安全配置错误
当安全设置和控件实现不当、保持默认值或完全忽略时,就会发生Web应用程序中的安全错误配置。错误配置的风险包括未受保护的文件、目录或数据库,它们会促进对有价值的数据或系统功能的意外访问。
要测试 Web 应用程序是否存在安全配置错误,可执行以下操作:
定期手动检查和审核应用程序、数据库、服务器和网络配置。
使用可以检测常见错误配置的自动扫描程序和安全工具。
监视敏感信息泄漏的错误消息,例如路径、服务器详细信息或数据库信息。
确保应用程序中没有处于活动状态的默认凭据(用户名/密码)。
6. 易受攻击和过时的组件
Web 应用程序中易受攻击和过时的组件是指存在已知安全漏洞但尚未被开发人员更新或修补的第三方库、插件、框架和其他软件模块。
依赖易受攻击组件的 Web 应用程序会继承其缺陷,这为威胁参与者提供了潜在的利用途径。
要测试 Web 应用程序是否存在易受攻击/过时的组件,可执行以下操作:
维护应用程序中使用的所有第三方组件、库、插件和框架的最新清单,包括其版本和依赖项。
将组件清单与漏洞数据库(如国家漏洞数据库 (NVD) 或 CVE 详细信息)交叉引用。
使用自动化工具扫描项目依赖项,并将其与已知的漏洞数据库进行比较。
7. 失效身份验证和会话管理
有缺陷的身份验证机制(如弱密码策略、缺乏多因素身份验证或未正确实的会话管理)使攻击者能够冒充合法用户或完全绕过身份验证检查。
这些故障为未经授权的数据访问、身份盗窃和潜在的用户帐户接管铺平了道路。
要测试此 OWASP 前 10 大风险,可执行以下操作:
检查最小密码长度/复杂性要求,并尝试使用常用密码或默认密码,看看应用是否接受这些密码。
检查会话在不活动或用户注销后是否适当过期。
尝试操作或重放 cookie,看看是否可以模拟会话。
尝试操作 URL、查询参数或隐藏字段以绕过身份验证检查。
8. 软件和数据完整性故障
当应用程序无法确保数据和应用程序代码的真实性和可信度时,就会发生软件和数据完整性故障。完整性是指确保数据和代码在原始状态中保持不变和真实。
软件和数据完整性方面的故障会带来未经授权的修改风险,从而导致欺诈性交易或恶意代码被插入应用程序。
若要测试这些故障可:
对传输的数据进行篡改,并在不进行任何检查的情况下观察应用程序是否接受被篡改的数据。
操作应用程序文件或库,并查看应用程序是否检测到未经授权的更改。
检查是否缺少校验和、数字签名或其他验证数据或软件组件完整性的验证机制。
9. 安全日志记录和监控故障
这种风险与应用程序中活动记录不足或无法主动检测和实时响应恶意行为有关。
缺乏详细的日志或缺乏监控会造成盲点,从而无法及时检测未经授权的访问、数据泄露或其他恶意活动。
若要评估 Web 应用程序是否存在以下风险,可执行以下操作:
定期查看日志,以确保其捕获相关的安全事件,例如登录尝试失败、访问敏感数据或系统配置更改。
确保监视所有关键组件,例如数据库、服务器和应用程序端点。
查看监视工具的配置,以确保它们已设置为捕获所有相关的安全事件。
10. 服务器端请求伪造 (SSRF)
服务器端请求伪造(server - side Request Forgery, SSRF)是一种安全漏洞,攻击者可以操纵web应用程序,使其代表服务器向内部资源或第三方系统发出不必要的请求。
这种风险促进了网络基础设施的横向移动,并使攻击者能够与后端服务交互或泄露数据。
要测试 SSRF,可以执行以下操作:
尝试使用不同的 URL 方案(如 file://、dict://、sftp:// 等)来尝试访问非 HTTP 资源。
确定主机之间的隐式信任区域,例如信任 Web 服务器的本地数据库服务器。
查找可能指示SSRF漏洞的详细错误消息。例如,如果输入内部IP,而错误显示了有关内部资源的详细信息,这是潜在的风险信号。
定期 Web 应用程序安全测试的重要性
正如 OWASP Top 10 一直强调的那样,Web 应用程序中的漏洞使组织面临从数据泄露到声誉受损的重大风险。这不仅仅是了解这些漏洞,而是定期积极测试进行测试。
随着每次代码更新、基础架构更改或新功能添加,都可能出现潜在的安全漏洞。持续的警惕是必不可少的,这就需要组织定期进行安全测试,而不是一年只进行一次测试。
参读来源:https://www.bleepingcomputer.com/news/security/the-owasp-top-10-what-they-are-and-how-to-test-them/
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)