Back

Vulnerabilites For A2OS

这是给A2OS做的关于 Web 安全的分享内容概要

Vulnerability

Introduction

What is a vulnerability ?

什么是漏洞?

{% colorquote success %} 漏洞是在硬件、软件、协议的具体实现或系统安全策略上存在的缺陷,从而可以使攻击者能够在未授权的情况下访问或破坏系统。具体举例来说,比如在Intel Pentium芯片中存在的逻辑错误,在Sendmail早期版本中的编程错误,在NFS协议中认证方式上的弱点,在 Unix 系统管理员设置匿名Ftp服务时配置不当的问题都可能被攻击者使用,威胁到系统的安全。因而这些都可以认为是系统中存在的安全漏洞。 {% endcolorquote %}

{% colorquote success %} In computer security, a vulnerability is a weakness which can be exploited by a threat actor, such as an attacker, to perform unauthorized actions within a computer system. To exploit a vulnerability, an attacker must have at least one applicable tool or technique that can connect to a system weakness. In this frame, vulnerability is also known as the attack surface. {% endcolorquote %}

漏洞是天生的吗?

既然是天生存在的,为什么设计者不去找需要安全工作者去找?被利用的叫漏洞,没被利用的能叫漏洞吗?

在计算机领域,漏洞特指系统的安全方面存在缺陷,一般被定义为信息系统设计、编码和运行当中引起的、可能被外部利用用于影响信息系统机密性、完整性、可用性的缺陷。

统计表明,程序员每写 1000 行代码,就会有 1 个缺陷,一个大型的应用系统,代码行数动辄几十万行,甚至更多。可以说,从世界上第一个操作系统或应用软件诞生的那天开始,缺陷就存在于 IT 系统的各个环节,而且始终会存在。

漏洞来源

首先漏洞来自操作缺陷。

程序员编程序时的疏忽、运维人员设置安全配置时的不当操作、用户设置的简单口令和泄露……这些人为的、无意的失误就是操作缺陷。

其次,漏洞来自认知缺陷。

2000年的“千足虫”危机,过去为了节省空间,存储年份用两位十进制数表示,例如1980就是80,1998年出生就是98-80=18,但是在2000就变成了负数,就会引起各种系统紊乱甚至崩溃。

2018年1月的 Meltdown & Spectre 。为了提升 CPU 处理性能,芯片企业用乱序执行和预测执行。通俗来说,CPU 并不完全严格按照指令的顺序来执行,而是会自己预测可能要执行的内容,以及为了更好地利用 CPU 资源将指令顺序打乱,以便能同时执行一些指令。

但设计者没有考虑到,或者没有人为这个问题时重要的,即:由于 CPU 缓存内容没有同步恢复到原始状态,导致缓存中存储的重要信息可以被漏洞利用者获取,可能会造成受保护的密码和敏感信息泄露。

最后,漏洞来自于知识缺陷。

很突出的一个例子就是工控安全。原本的工业控制系统,大多以系统功能作为第一要素,多数系统在设计之初时封闭的“单机系统”,连联网需求都没有考虑过,就更不要提在设计、研发和集成阶段考虑网络安全问题了。物联网时代到来以后,这些工控系统都开始在互联网上“裸奔”,黑客可以轻而易举地利用系统漏洞进行攻击,造成严重后果。

并不是所有的缺陷都是漏洞,只有可以被外部利用的缺陷才被称为漏洞。这句话可以换一个角度来理解,当利用缺陷的方法出现时,漏洞导致的现实威胁就出现了。就像“心脏滴血“漏洞,引发这个漏洞的缺陷在爆发前两年的版本中就已经静悄悄地存在,当黑客利用这个缺陷获取服务器里用户的敏感信息,影响了数据的机密性,就构成了漏洞。(OpenSSL)

漏洞杀伤力

参杂了很多因素,上升到政治层面会是比较恐怖的

2016-2017年,NSA 数字武器库遭到泄露,相关人士为了证明自己成功攻入 NSA 开发网络武器的“方程式组织”的系统,在网络披露了几批工具。2017年肆虐全球的 WannaCry 病毒就是从这几批泄露武器中泄露出去的。

希拉里邮件门等。

Classification

基于技术类型的分类

基于漏洞成因技术的分类相比上述的两种维度要复杂得多,对于目前我所见过的漏洞大致归纳为以下几类:

  • 内存破坏类
  • 逻辑错误类
  • 输入验证类
  • 设计错误类
  • 配置错误类

Web Vulnerabilities

指的是在网站程序上的漏洞。

Classification

根据严重程度,以教育行业漏洞报告平台为例

严重

  1. 直接获取重要服务器(客户端)权限的漏洞。包括但不限于远程任意命令执行、上传 webshell、可利用远程缓冲区溢出、可利用的 ActiveX 堆栈溢出、可利用浏览器 use after free 漏洞、可利用远程内核代码执行漏洞以及其它因逻辑问题导致的可利用的远程代码执行漏洞;
  2. 直接导致严重的信息泄漏漏洞。包括但不限于重要系统中能获取大量信息的SQL注入漏洞;
  3. 能直接获取目标单位核心机密的漏洞;

高危

  1. 直接获取普通系统权限的漏洞。包括但不限于远程命令执行、代码执行、上传webshell、缓冲区溢出等;
  2. 严重的逻辑设计缺陷和流程缺陷。包括但不限于任意账号密码修改、重要业务配置修改、泄露;
  3. 可直接批量盗取用户身份权限的漏洞。包括但不限于普通系统的SQL注入、用户订单遍历;
  4. 严重的权限绕过类漏洞。包括但不限于绕过认证直接访问管理后台、cookie欺骗。
  5. 运维相关的未授权访问漏洞。包括但不限于后台管理员弱口令、服务未授权访问。

中危

  1. 需要在一定条件限制下,能获取服务器权限、网站权限与核心数据库数据的操作。包括但不限于交互性代码执行、一定条件下的注入、特定系统版本下的getshell等;
  2. 任意文件操作漏洞。包括但不限于任意文件写、删除、下载,敏感文件读取等操作;
  3. 水平权限绕过。包括但不限于绕过限制修改用户资料、执行用户操作。

低危

  1. 能够获取一些数据,但不属于核心数据的操作;
  2. 在条件严苛的环境下能够获取核心数据或者控制核心业务的操作;
  3. 需要用户交互才可以触发的漏洞。包括但不限于XSS漏洞、CSRF漏洞、点击劫持;

存在以下情况我们将酌情将漏洞等级降低:

  • 漏洞真实存在,但因为各种问题(如WAF),白帽子无法说明利用方法的
  • 漏洞提交前,相关单位已经知晓,但暂未修复的已知漏洞
  • 漏洞触发需要一定条件的,具有一定的偶然性
  • 同一单位多处相似漏洞
  • 恶意夸大漏洞危害的

如下漏洞将被忽略:

  • 非(不确定)教育相关行业单位
  • 不在奖励范围内的高校
  • 虚假漏洞
  • 本平台上已有其他白帽子提交过的漏洞
  • 互联网上已经被公开的漏洞
  • 提交到本平台后又提交到其他平台的漏洞
  • 没有链接、截图、利用方法等漏洞详情不详细的漏洞
  • 需要登录管理员后台才能触发的漏洞
  • 需要中间人攻击的漏洞
  • Self-XSS
  • 无敏感操作的CSRF漏洞
  • 钓鱼漏洞
  • 无敏感信息的 JSON Hijacking
  • 扫描器取得结果,但白帽子无法提供利用方法的漏洞
  • 无意义的源码泄露、内网IP、域名泄露
  • 拒绝服务漏洞

技术漏洞与非技术漏洞,即技术漏洞与业务漏洞

OWASP Top 10

OWASPOpen Web Application Security Project,即开放式Web应用程序安全项目是一个在线社区,在Web应用程序安全性领域提供免费的文章,方法,文档,工具和技术

Top 1 Injection Flaws 注入

将不受信任的数据作为命令或查询的一部分发送到解析器时,会产生诸如SQL注入、NoSQL注入、OS注入和LDAP注入的注入缺陷。攻击者的恶意数据可以诱使解析器在没有适当授权的情况下执行非预期命令或访问数据。

一些常见的注入,包括:SQL、OS命令、ORM、LDAP和表达式语言(EL)或OGNL注入。所有解释器的概念都是相同的。代码评审是最有效的检测应用程序的注入风险的办法之一,紧随其后的是对所有参数、字段、头、cookie、JSON和XML数据输入的彻底的 DAST 扫描,即 Dynamic Application Security Testing。

Top 2 Broken Authentication and Session Management 失效的身份认证

通常,通过错误使用应用程序的身份认证和会话管理功能,攻击者能够破译密码、密钥或会话令牌,或者利用其它开发缺陷来暂时性或永久性冒充其他用户的身份。

Top 3 Sensitive Data Exposure 敏感数据泄露

许多Web应用程序和API都无法正确保护敏感数据,例如:财务数据、医疗数据和PII数据。攻击者可以通过窃取或修改未加密的数据来实施信用卡诈骗、身份盗窃或其他犯罪行为。未加密的敏感数据容易受到破坏,因此,我们需要对敏感数据加密,这些数据包括:传输过程中的数据、存储的数据以及浏览器的交互数据。

Top 4 XML External Entity XML 外部实体

许多较早的或配置错误的XML处理器评估了XML文件中的外部实体引用。攻击者可以利用外部实体窃取使用URI文件处理器的内部文件和共享文件、监听内部扫描端口、执行远程代码和实施拒绝服务攻击。

Top 5 Broken Access Control 失效的访问控制

未对通过身份验证的用户实施恰当的访问控制。攻击者可以利用这些缺陷访问未经授权的功能或数据,例如:访问其他用户的帐户、查看敏感文件、修改其他用户的数据、更改访问权限等。

Top 6 Security Misconfiguration 安全配置错误

安全配置错误是最常见的安全问题,这通常是由于不安全的默认配置、不完整的临时配置、开源云存储、错误的HTTP标头配置以及包含敏感信息的详细错误信息所造成的。因此,我们不仅需要对所有的操作系统、框架、库和应用程序进行安全配置,而且必须及时修补和升级它们。

Top 7 Cross-Site Scripting 跨站脚本

当应用程序的新网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建HTML或JavaScript的浏览器API更新现有的网页时,就会出现XSS缺陷。XSS让攻击者能够在受害者的浏览器中执行脚本,并劫持用户会话、破坏网站或将用户重定向到恶意站点。

Top 8 Insecure deserialization 不安全的反序列化

不安全的反序列化会导致远程代码执行。即使反序列化缺陷不会导致远程代码执行,攻击者也可以利用它们来执行攻击,包括:重播攻击、注入攻击和特权升级攻击。

Top 9 Using Components With Known Vulnerabilities 使用含有已知漏洞的组件

组件(例如:库、框架和其他软件模块)拥有和应用程序相同的权限。如果应用程序中含有已知漏洞的组件被攻击者利用,可能会造成严重的数据丢失或服务器接管。同时,使用含有已知漏洞的组件的应用程序和API可能会破坏应用程序防御、造成各种攻击并产生严重影响。

Top 10 Insufficient Logging and Monitoring 不足的日志记录和监控

不足的日志记录和监控,以及事件响应缺失或无效的集成,使攻击者能够进一步攻击系统、保持持续性或转向更多系统,以及篡改、提取或销毁数据。大多数缺陷研究显示,缺陷被检测出的时间超过200天,且通常通过外部检测方检测,而不是通过内部流程或监控检测。

Licensed under CC BY-NC-SA 4.0

I am looking for some guys who have a strong interest in CTFs to build a team focused on international CTFs that are on the ctftime.org, if anyone is interested in this idea you can take a look at here: Advertisements


想了解更多有意思的国际赛 CTF 中 Web 知识技巧,欢迎加入我的 知识星球 ; 另外我正在召集一群小伙伴组建一支专注国际 CTF 的队伍,如果有感兴趣的小伙伴也可在 International CTF Team 查看详情


comments powered by Disqus
Built with Hugo
Theme Stack designed by Jimmy