精华内容
下载资源
问答
  • 文章目录一、OWASP top 10简介二、OWASP top 10详解A1:2017-注入A2:2017-失效的身份认证A3:2017-敏感数据泄露A4:2017-XML外部实体(XXE)A5:2017-失效的访问控制A6:2017-安全配置错误A7:2017-跨站脚本(XSS)A8:2017-不...


    本文转载出处在文末表明,同时附上网上OWASP TOP 10的官方电子书 pdf 地址
    OWASP Top 10 - 2017

    一、OWASP top 10简介

    1.OWASP介绍
    OWASP:开放式Web应用程序安全项目(Open Web Application Security Project),OWASP是一家国际性组织机构,并且是一个开放的、非盈利组织,它致力于协助政府、企业开发、升级各类应用程序以保证其可信任性。所有OWASP的工具、文档、研讨以及所有分会都对任何就应用安全领域感兴趣的人士自由开放。
    不过OWASP每四年发布一次,现在最新的OWASP是2017年的,在2021年会更新最新的OWASP top 10。

    2.2017版的OWASP top 10
    在这里插入图片描述

    二、OWASP top 10详解

    A1:2017-注入

    1.注入攻击概念
    注入攻击是指攻击者在输入数据时向解释器提交一些非法或者未授权的命令来欺骗解释权,使解释器错误的执行了这些代码,向攻击者返回一些本不应该被看见的数据。

    2.常见注入分类
    最常见的注入有SQL注入和命令执行。

    • SQL注入

    (1):SQL注入介绍
    SQL注入就是指Web应用程序对用户输入的数据的合法性没有进行判断,前端传入后端的参数使攻击者可控的,并且参数中带有数据库查询,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作。

    (2):SQL注入原理
    SQL注入漏洞产生需要以下两个条件:

    • 参数是用户可控的:前端传给后端的参数内容是用户可以控制的
    • 参数带入数据库查询:传入的参数可以带入数据库中查询

    如果满足以上两个条件,那么攻击者就可以在前端页面中通过SQL语句拼接,将自己想要查询的SQL语句拼接到合法参数后面,这样就就可以通过构造非法的SQL语句来对数据库进行增删改查等操作。

    (3):SQL注入的防御方法

    • ①:过滤危险字符:现在很多CMS都采用过滤危险字符的方法,比如使用正则表达式匹配union、sleep、select等关键字,如果匹配到,那么就退出程序。(也可以使用PHP中mysql_real_escape_string()函数过滤一些特殊字符)
    • ②:采用PDO预编译技术:
      在使用PDO技术访问数据库时,真正的real prepared statements默认是不使用的,因此使用"setAttribute(PDO::ATTR_EMULATE_PREPARES, false);"这一句来禁掉模拟预处理语句,使用真正的预编译。
      在这里插入图片描述

    为什么预编译可以防止SQL注入?
    使用如上代码进行分析,当调用prepare()函数时,查询语句"select * from test where name = ? and password = ?“已经发送给了数据库,此时只有占位符”?"发送过去,并没有发送用户提交的数据;当调用到execute()函数时,用户提交的值才会传送给数据库,他们是分开传送的,两者是独立的。因此后面你输入的参数,无论你输入的是什么,都不会影响该sql语句的语法结构了,因为语法分析已经完成了,那么后面输入的参数,就绝对不可能作为sql命令来执行的,只会被当做字符串字面值参数来处理。
    PDO不能防御以下三种SQL注入:

    • 你不能让占位符?代替一组值:select * from users where user_id IN (?);
    • 你不能让占位符?代替数据库表名和列名:select * from users order by ?;
    • 你不能让占位符?代替任何其他SQL语句:select extract ( ? from datetime_column) as variable_datetime_element from users;
    • OS注入

    (1):OS注入介绍
    OS指令执行是为了通过网络接口在web服务器执行OS命令的一种技术。如果应用程序使用外部输入的字符串或受外部影响的字符串组装命令,并且没有经过正确的过滤,就可能导致OS命令的注入攻击。

    (2):OS注入原理
    OS注入的原理就是程序开发者对输入的数据没有进行任何过滤,攻击者在前端可以在正确输入的命令后面拼接自己想要执行的命令。如果没有对&、&&、|、||等拼接字符进行过滤,那么就会造成命令注入,这样攻击者就可以使用拼接的命令来查看各种信息,甚至执行反弹shell拿到shell。

    (3):OS注入的防御方法
    ①:过滤&、&&、|、||等字符,最好使用白名单过滤方法
    ②:不止在前端进行验证,还可以在服务器端再进行一次验证
    ③:要用最小权限去运行程序,不要给予程序多余的权限
    ④:在命令执行错误时不要显示过多的细节,这样攻击者就不能通过错误提示得到更多的信息

    A2:2017-失效的身份认证

    1.身份认证和会话管理的定义
    身份认证:身份认证最常用于系统登录,形式一般为用户名加密码的登录方式,在安全性要求较高的情况下,还有验证码、客户端证书、Ukey等。
    会话管理:HTTP利用会话机制来实现身份认证,HTTP身份认证的结果往往是获得一个令牌并放在cookie中,之后的身份识别只需读取授权令牌,如果授权令牌认证成功,那么就无需再次进行登录认证。

    2.什么是失效的身份认证和会话管理
    用户身份认证和会话管理是一个应用程序中最关键的过程,有缺陷的设计会严重破坏这个过程。在开发Web应用程序时,开发人员往往只关注Web应用程序所需的功能。由于这个原因,开发人员通常会建立自定义的认证和会话管理方案。但要正确实现这些方案却很难,结果这些自定义的方案往往在如下方面存在漏洞:退出、密码管理、超时、记住我、秘密问题、帐户更新等等。因此攻击者就可以通过破坏密码、密钥、会话令牌或攻击其他的漏洞去冒充其他用户的身份,这种身份的冒充可能是暂时的,也可能是永久的。

    3.存在失效身份认证和会话管理的漏洞例子
    (1):用户更改密码之前不验证用户,而是依靠会话的IP地址
    (2):没有会话超时限制
    (3):用户忘记密码后,密码找回功能太过简单。

    4.防御失效身份和会话管理的方法
    (1):区分公共区域和受限区域:站点的公共区域允许匿名用户访问,但是站点的受限区域只允许指定用户访问
    (2):支持密码的有效期:向用户提供可以在一段时间后修改密码的功能
    (3):能够禁用账户:在收到攻击后可以禁用账户来避免遭受进一步的损失
    (4):要求用户使用强密码
    (5):不要在网络上以纯文本方式传输用户名和密码:使用SSL对数据流进行加密,也可以对cookie进行加密

    A3:2017-敏感数据泄露

    1.敏感数据泄露介绍
    近年来,敏感数据泄露已经成为了一最常见、最具影响力的攻击,不久前就爆出过Facebook泄露了用户的大量信息,以及12306也多次泄露用户的信息。现在信息泄露已经成为了owasp top 10中排名第三的漏洞,可想而知敏感信息泄露现在已经成为十分严重的问题。

    2.敏感信息泄露原理
    攻击者不是直接攻击密码,而是在传输过程中或从客户端窃取密钥、发起中间人攻击,或从服务器端窃取明文数据,还有可能由于管理员的安全性不高,使用弱密码,被攻击者暴力破解,进入到数据库拿到敏感信息。

    3.防御敏感信息泄露的方法
    (1):对系统处理、存储或传输的数据分类,并根据分类进行访问控制
    (2):对重要数据进行加密存放,数据在传输过程中使用密文进行传输
    (3):及时清理没有用的敏感数据,只能使用指定用户访问敏感数据

    A4:2017-XML外部实体(XXE)

    1.XXE介绍
    XXE(XML External Entity)指的是XML外部实体注入,XML用于标识电子文件使其具有结构性的标识语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声名、DTD文档类型定义、文档元素。

    2.XXE攻击原理
    如果攻击者可以上传XML文档或者在XML文档中添加恶意内容,通过易受攻击的代码、依赖项或集成,他们就能够攻击含有缺陷的XML处理器。XXE缺陷可用于提取数据、执行远程服务器请求、扫描内部系统、执行拒绝服务攻击和其他攻击。

    3.防御XXE的方法
    (1):尽可能使用简单的数据格式(如:JSON),避免对敏感数据进行序列化
    (2):禁止使用外部实体,例如libxml_disable_entity_loader(true)
    (3):过滤用户提交的XML数据,防止出现非法内容

    A5:2017-失效的访问控制

    1.什么是失效的访问控制
    访问控制:即保护资源不被非法访问和使用,目前应用最多的是基于角色的访问控制机制。失效的访问控制就是攻击者通过各种手段提升自己的权限,越过访问控制,使访问控制失效,这样攻击者就可以冒充用户、管理员或拥有特权的用户,或者创建、访问、更新或删除任何记录。

    2.失效的访问控制攻击原理
    (1):攻击者通过修改 URL、内部应用程序状态或 HTML 页面绕过访问控制检查,或简单地使用自定义的 API 攻击工具
    (2):特权提升:在不登录的情况下假扮用户,或以用户身份登录时充当管理员
    (3):元数据操作:如重放或篡改 JWT 访问控制令牌,以此来修改cookie提升权限

    3.防御失效的访问控制的方法
    (1):除公有资源外,其他资源默认情况下拒绝访问
    (2):使用一次性的访问控制机制,并在整个应用程序中不断重用它们
    (3):建立访问控制模型以强制执行所有权记录,而不是接受用户创建、读取、更新或删除的任何记录
    (4):当用户注销后,服务器上的JWT令牌应失效

    A6:2017-安全配置错误

    1.安全配置介绍
    由于系统管理员的疏忽,可能会产生一些安全配置错误。安全配置错误可以发生在一个应用程序堆栈的任何层面,包括网络服务、平台、Web服务器、应用服务器、数据库、框架、自定义代码和预安装的虚拟机、容器和存储。可以使用自动扫描器来检测错误的安全配置、默认帐户的使用或配置、不必要的服务、遗留选项等。

    2.安全配置错误攻击原理
    攻击者能够通过未修复的漏洞、访问默认账户、不再使用的页面、未受保护的文件和目录、开放的不必要的端口等来取得对系统的未授权的访问,比如如果由于管理员的疏忽,/etc/passwd文件具有777的访问权限,这样攻击者就可以在拿到普通用户的身份后通过修改该文件拿到root权限。

    3.防御安全配置错误的方法
    (1):使用的服务不包含任何不必要的功能、组件、文档和示例。移除或不安装不适用的功能和框架
    (2):及时检测系统服务版本,为已发现的漏洞打补丁
    (3):在对文件等分配权限时,根据其工作需要采取最小权限原则的方法

    A7:2017-跨站脚本(XSS)

    1.XSS介绍
    XSS(Cross-Site Scripting,实际上应该是CSS,但是这与前端中的CSS重名,因此改名为XSS)简称为跨站脚本攻击,这是一种针对网站的应用程序的安全漏洞攻击技术,是代码注入的一种。它允许用户将恶意代码注入网页,其他用户在访问时就会收到影响。恶意用户利用XSS代码攻击成功后,可以进行重定向、获取cookie值等内容。

    2.XSS分类
    XSS分为三类:反射型XSS、存储型XSS、DOM型XSS

    3.XSS原理
    (1):反射型XSS原理
    反射型XSS又称为非持久型XSS,这种攻击方式往往具有一次性。
    攻击原理:攻击者向服务器一个带有恶意JS代码的请求,服务器会向攻击者返回一个带有JS脚本的页面,攻击者将带有恶意JS脚本的页面发送给目标用户,用户点击后就会触发XSS漏洞,从而被盗取cookie值或者被重定向到第三方网站。
    (2):存储型XSS
    存储型XSS又称为持久性XSS,攻击脚本将被永久地存放到目标服务器的数据库或者文件中,具有很高的隐蔽性。
    攻击原理:攻击者向服务器一个带有恶意JS代码的请求,服务器会先在服务器上存储一份,然后会向攻击者返回一个带有JS脚本的页面。此时,当其他用户登录这个网站时,都会被盗取cookie值或者被重定向到第三方网站。
    (3):DOM型XSS
    DOM全称Document Object Model,DOM型XSS实际上是一种特殊类型的反射型XSS,它是一种基于DOM文档对象模型的一种漏洞
    攻击原理:攻击者向服务器一个带有恶意JS代码的请求,服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。

    4.防御XSS的方法
    (1):对于截取cookie的XSS的防御可以在cookie上添加HttpOnly
    (2):过滤输入的数据,过滤"

    A8:2017-不安全的反序列化

    1.什么是序列化
    有些时候我们需要把应用程序中的数据以另一种形式进行表达,以便于将数据存储起来,并在未来某个时间点再次使用,或者便于通过网络传输给接收方。这一过程我们把它叫做序列化。

    2.什么是反序列化
    反序列化和序列化是两个正好相反的过程。当我们要再次使用这些数据的时候,应用程序读取序列化之后的数据,并将其恢复成应用程序中的数据。

    3.反序列化有什么安全问题
    尽管反序列化最严重可导致远程代码执行(RCE,Remote Code Execution),但最常见的反序列化安全问题却是通过修改序列化之后的数据字段,从而进行提权或越权操作。

    4.反序列化攻击原理
    序列化即是把对象转变为字节流,存放在内存、文件数据库中,而反序列化即是把字节流转变为对象。在java中有一个ObjectOutputStream类的writeobject方法可以实现序列化,而ObjectInputStream类的Readobject方法可以实现反序列化。该漏洞的原因出自于如果应用对恶意构造的用户输入的数据进行反序列化,这样就会产生非预期的对象,从而有可能产生远程代码执行。或者应用中存在可以在反序列化过程中或者之后被改变行为的类,则攻击者可以通过改变应用逻辑或者实现远程代码执行攻击。我们将其称为对象和数据结构攻击。

    5.防御反序列化的方法
    (1):最安全的方法是不接受来自不受信源的序列化对象,或使用只允许原始数据类型的序列化媒体
    (2):反序列化之前,先进行严格的数据类型校验。由于校验规则容易被攻击者探索出来,进而容易被绕过,因此防御不能仅依赖这一个手段,但可以作为完整性校验防御方案的补充
    (3):隔离运行那些在低特权环境中反序列化的代码
    (4):对反序列化过程进行详尽的日志记录,监控反序列化过程,在发现疑似反序列化攻击时进行警报

    A9:2017-使用含有已知漏洞的组件

    1.攻击原理
    由于现在的服务器都需要使用很多的组件,管理员并不能保证所使用的组件都是没有最新的,因此可能会存在一些版本是存在已知漏洞的(实际上比较新的版本的组件也是会存在漏洞的),攻击者可以使用这些已知的漏洞来进行攻击,甚至获得管理员权限。

    2.防御方法
    (1):移除不使用的依赖、不需要的功能、组件、文件和文档
    (2):从官方渠道安全的获取组件,并使用签名机制来降低组件被篡改或加入恶意漏洞的风险
    (3):关注最新的漏洞报告,及时为需要的组件进行升级或者打补丁

    A10:2017-不足的日志记录和监控

    1.日志记录介绍
    日志记录是一个系统的最重要的功能之一。日志记录包括登录成功记录、登录失败记录、访问控制记录等,用来记录服务器的各种信息。

    2.攻击原理
    攻击者依靠监控的不足和响应的不及时来达成他们的目标而不被知晓。比如日志没有记录登录失败,那么攻击者可能就可以通过暴力破解多次进行登录尝试,但是日志中却没有记录。这就可能让攻击者成功入侵系统并隐匿自己的行踪。这个看似危害不大但却是十分严重的危害,因为一个日志系统不完善的服务器很容易遭受攻击并且在遭受攻击后无法判断攻击来源,这样就无法做出相应的防御,很可能再次遭受同样的攻击。

    3.防御方法
    (1):确保所有登录、访问控制失败、输入验证失败能够被记录到日志中去,并保留足够的用户上下文信息,以识别可疑或恶意帐户,并为后期取证预留足够时间
    (2):建立有效的监控和告警机制,使可疑活动在可接受的时间内被发现和应对
    (3):完善日志系统,使其可以监控各种日志信息
    (4):及时对日志系统进行备份,并保存足够长时间


    本文转载自OWASP top 10漏洞原理及防御(2017版官方)

    展开全文
  • OWASP top 10漏洞原理及防御(2017版官方)

    千次阅读 多人点赞 2019-08-08 23:31:15
    文章目录一、OWASP top 10简介二、OWASP top 10详解A1:2017-注入 一、OWASP top 10简介 1.OWASP介绍 OWASP:开放式Web应用程序安全项目(Open Web Application Security Project),OWASP是一家国际性组织机构,并且是...

    一、OWASP top 10简介

    1.OWASP介绍
    OWASP:开放式Web应用程序安全项目(Open Web Application Security Project),OWASP是一家国际性组织机构,并且是一个开放的、非盈利组织,它致力于协助政府、企业开发、升级各类应用程序以保证其可信任性。所有OWASP的工具、文档、研讨以及所有分会都对任何就应用安全领域感兴趣的人士自由开放。
    不过OWASP每四年发布一次,现在最新的OWASP是2017年的,在2021年会更新最新的OWASP top 10。

    2.2017版的OWASP top 10
    在这里插入图片描述

    二、OWASP top 10详解

    A1:2017-注入

    1.注入攻击概念
    注入攻击是指攻击者在输入数据时向解释器提交一些非法或者未授权的命令来欺骗解释权,使解释器错误的执行了这些代码,向攻击者返回一些本不应该被看见的数据。

    2.常见注入分类
    最常见的注入有SQL注入和命令执行。

    • SQL注入

    (1):SQL注入介绍
    SQL注入就是指Web应用程序对用户输入的数据的合法性没有进行判断,前端传入后端的参数使攻击者可控的,并且参数中带有数据库查询,攻击者可以通过构造不同的SQL语句来实现对数据库的任意操作。

    (2):SQL注入原理
    SQL注入漏洞产生需要以下两个条件:

    • 参数是用户可控的:前端传给后端的参数内容是用户可以控制的
    • 参数带入数据库查询:传入的参数可以带入数据库中查询

    如果满足以上两个条件,那么攻击者就可以在前端页面中通过SQL语句拼接,将自己想要查询的SQL语句拼接到合法参数后面,这样就就可以通过构造非法的SQL语句来对数据库进行增删改查等操作。

    (3):SQL注入的防御方法
    ①:过滤危险字符:现在很多CMS都采用过滤危险字符的方法,比如使用正则表达式匹配union、sleep、select等关键字,如果匹配到,那么就退出程序。(也可以使用PHP中mysql_real_escape_string()函数过滤一些特殊字符)
    ②:采用PDO预编译技术:
    在使用PDO技术访问数据库时,真正的real prepared statements默认是不使用的,因此使用"setAttribute(PDO::ATTR_EMULATE_PREPARES, false);"这一句来禁掉模拟预处理语句,使用真正的预编译。
    在这里插入图片描述
    为什么预编译可以防止SQL注入?
    使用如上代码进行分析,当调用prepare()函数时,查询语句"select * from test where name = ? and password = ?“已经发送给了数据库,此时只有占位符”?"发送过去,并没有发送用户提交的数据;当调用到execute()函数时,用户提交的值才会传送给数据库,他们是分开传送的,两者是独立的。因此后面你输入的参数,无论你输入的是什么,都不会影响该sql语句的语法结构了,因为语法分析已经完成了,那么后面输入的参数,就绝对不可能作为sql命令来执行的,只会被当做字符串字面值参数来处理。
    PDO不能防御以下三种SQL注入:

    • 你不能让占位符?代替一组值:select * from users where user_id IN (?);
    • 你不能让占位符?代替数据库表名和列名:select * from users order by ?;
    • 你不能让占位符?代替任何其他SQL语句:select extract ( ? from datetime_column) as variable_datetime_element from users;
    • OS注入

    (1):OS注入介绍
    OS指令执行是为了通过网络接口在web服务器执行OS命令的一种技术。如果应用程序使用外部输入的字符串或受外部影响的字符串组装命令,并且没有经过正确的过滤,就可能导致OS命令的注入攻击。

    (2):OS注入原理
    OS注入的原理就是程序开发者对输入的数据没有进行任何过滤,攻击者在前端可以在正确输入的命令后面拼接自己想要执行的命令。如果没有对&、&&、|、||等拼接字符进行过滤,那么就会造成命令注入,这样攻击者就可以使用拼接的命令来查看各种信息,甚至执行反弹shell拿到shell。

    (3):OS注入的防御方法
    ①:过滤&、&&、|、||等字符,最好使用白名单过滤方法
    ②:不止在前端进行验证,还可以在服务器端再进行一次验证
    ③:要用最小权限去运行程序,不要给予程序多余的权限
    ④:在命令执行错误时不要显示过多的细节,这样攻击者就不能通过错误提示得到更多的信息

    A2:2017-失效的身份认证

    1.身份认证和会话管理的定义
    身份认证:身份认证最常用于系统登录,形式一般为用户名加密码的登录方式,在安全性要求较高的情况下,还有验证码、客户端证书、Ukey等。
    会话管理:HTTP利用会话机制来实现身份认证,HTTP身份认证的结果往往是获得一个令牌并放在cookie中,之后的身份识别只需读取授权令牌,如果授权令牌认证成功,那么就无需再次进行登录认证。

    2.什么是失效的身份认证和会话管理
    用户身份认证和会话管理是一个应用程序中最关键的过程,有缺陷的设计会严重破坏这个过程。在开发Web应用程序时,开发人员往往只关注Web应用程序所需的功能。由于这个原因,开发人员通常会建立自定义的认证和会话管理方案。但要正确实现这些方案却很难,结果这些自定义的方案往往在如下方面存在漏洞:退出、密码管理、超时、记住我、秘密问题、帐户更新等等。因此攻击者就可以通过破坏密码、密钥、会话令牌或攻击其他的漏洞去冒充其他用户的身份,这种身份的冒充可能是暂时的,也可能是永久的。

    3.存在失效身份认证和会话管理的漏洞例子
    (1):用户更改密码之前不验证用户,而是依靠会话的IP地址
    (2):没有会话超时限制
    (3):用户忘记密码后,密码找回功能太过简单。

    4.防御失效身份和会话管理的方法
    (1):区分公共区域和受限区域:站点的公共区域允许匿名用户访问,但是站点的受限区域只允许指定用户访问
    (2):支持密码的有效期:向用户提供可以在一段时间后修改密码的功能
    (3):能够禁用账户:在收到攻击后可以禁用账户来避免遭受进一步的损失
    (4):要求用户使用强密码
    (5):不要在网络上以纯文本方式传输用户名和密码:使用SSL对数据流进行加密,也可以对cookie进行加密

    A3:2017-敏感数据泄露

    1.敏感数据泄露介绍
    近年来,敏感数据泄露已经成为了一最常见、最具影响力的攻击,不久前就爆出过Facebook泄露了用户的大量信息,以及12306也多次泄露用户的信息。现在信息泄露已经成为了owasp top 10中排名第三的漏洞,可想而知敏感信息泄露现在已经成为十分严重的问题。

    2.敏感信息泄露原理
    攻击者不是直接攻击密码,而是在传输过程中或从客户端窃取密钥、发起中间人攻击,或从服务器端窃取明文数据,还有可能由于管理员的安全性不高,使用弱密码,被攻击者暴力破解,进入到数据库拿到敏感信息。

    3.防御敏感信息泄露的方法
    (1):对系统处理、存储或传输的数据分类,并根据分类进行访问控制
    (2):对重要数据进行加密存放,数据在传输过程中使用密文进行传输
    (3):及时清理没有用的敏感数据,只能使用指定用户访问敏感数据

    A4:2017-XML外部实体(XXE)

    1.XXE介绍
    XXE(XML External Entity)指的是XML外部实体注入,XML用于标识电子文件使其具有结构性的标识语言,可以用来标记数据、定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言。XML文档结构包括XML声名、DTD文档类型定义、文档元素。

    2.XXE攻击原理
    如果攻击者可以上传XML文档或者在XML文档中添加恶意内容,通过易受攻击的代码、依赖项或集成,他们就能够攻击含有缺陷的XML处理器。XXE缺陷可用于提取数据、执行远程服务器请求、扫描内部系统、执行拒绝服务攻击和其他攻击。

    3.防御XXE的方法
    (1):尽可能使用简单的数据格式(如:JSON),避免对敏感数据进行序列化
    (2):禁止使用外部实体,例如libxml_disable_entity_loader(true)
    (3):过滤用户提交的XML数据,防止出现非法内容

    A5:2017-失效的访问控制

    1.什么是失效的访问控制
    访问控制:即保护资源不被非法访问和使用,目前应用最多的是基于角色的访问控制机制。失效的访问控制就是攻击者通过各种手段提升自己的权限,越过访问控制,使访问控制失效,这样攻击者就可以冒充用户、管理员或拥有特权的用户,或者创建、访问、更新或删除任何记录。

    2.失效的访问控制攻击原理
    (1):攻击者通过修改 URL、内部应用程序状态或 HTML 页面绕过访问控制检查,或简单地使用自定义的 API 攻击工具
    (2):特权提升:在不登录的情况下假扮用户,或以用户身份登录时充当管理员
    (3):元数据操作:如重放或篡改 JWT 访问控制令牌,以此来修改cookie提升权限

    3.防御失效的访问控制的方法
    (1):除公有资源外,其他资源默认情况下拒绝访问
    (2):使用一次性的访问控制机制,并在整个应用程序中不断重用它们
    (3):建立访问控制模型以强制执行所有权记录,而不是接受用户创建、读取、更新或删除的任何记录
    (4):当用户注销后,服务器上的JWT令牌应失效

    A6:2017-安全配置错误

    1.安全配置介绍
    由于系统管理员的疏忽,可能会产生一些安全配置错误。安全配置错误可以发生在一个应用程序堆栈的任何层面,包括网络服务、平台、Web服务器、应用服务器、数据库、框架、自定义代码和预安装的虚拟机、容器和存储。可以使用自动扫描器来检测错误的安全配置、默认帐户的使用或配置、不必要的服务、遗留选项等。

    2.安全配置错误攻击原理
    攻击者能够通过未修复的漏洞、访问默认账户、不再使用的页面、未受保护的文件和目录、开放的不必要的端口等来取得对系统的未授权的访问,比如如果由于管理员的疏忽,/etc/passwd文件具有777的访问权限,这样攻击者就可以在拿到普通用户的身份后通过修改该文件拿到root权限。

    3.防御安全配置错误的方法
    (1):使用的服务不包含任何不必要的功能、组件、文档和示例。移除或不安装不适用的功能和框架
    (2):及时检测系统服务版本,为已发现的漏洞打补丁
    (3):在对文件等分配权限时,根据其工作需要采取最小权限原则的方法

    A7:2017-跨站脚本(XSS)

    1.XSS介绍
    XSS(Cross-Site Scripting,实际上应该是CSS,但是这与前端中的CSS重名,因此改名为XSS)简称为跨站脚本攻击,这是一种针对网站的应用程序的安全漏洞攻击技术,是代码注入的一种。它允许用户将恶意代码注入网页,其他用户在访问时就会收到影响。恶意用户利用XSS代码攻击成功后,可以进行重定向、获取cookie值等内容。

    2.XSS分类
    XSS分为三类:反射型XSS、存储型XSS、DOM型XSS

    3.XSS原理
    (1):反射型XSS原理
    反射型XSS又称为非持久型XSS,这种攻击方式往往具有一次性。
    攻击原理:攻击者向服务器一个带有恶意JS代码的请求,服务器会向攻击者返回一个带有JS脚本的页面,攻击者将带有恶意JS脚本的页面发送给目标用户,用户点击后就会触发XSS漏洞,从而被盗取cookie值或者被重定向到第三方网站。
    (2):存储型XSS
    存储型XSS又称为持久性XSS,攻击脚本将被永久地存放到目标服务器的数据库或者文件中,具有很高的隐蔽性。
    攻击原理:攻击者向服务器一个带有恶意JS代码的请求,服务器会先在服务器上存储一份,然后会向攻击者返回一个带有JS脚本的页面。此时,当其他用户登录这个网站时,都会被盗取cookie值或者被重定向到第三方网站。
    (3):DOM型XSS
    DOM全称Document Object Model,DOM型XSS实际上是一种特殊类型的反射型XSS,它是一种基于DOM文档对象模型的一种漏洞
    攻击原理:攻击者向服务器一个带有恶意JS代码的请求,服务器的响应不会以任何形式包含攻击者的脚本。当用户的浏览器处理这个响应时,DOM对象就会处理XSS代码,导致存在XSS漏洞。

    4.防御XSS的方法
    (1):对于截取cookie的XSS的防御可以在cookie上添加HttpOnly
    (2):过滤输入的数据,过滤"

    A8:2017-不安全的反序列化

    1.什么是序列化
    有些时候我们需要把应用程序中的数据以另一种形式进行表达,以便于将数据存储起来,并在未来某个时间点再次使用,或者便于通过网络传输给接收方。这一过程我们把它叫做序列化。

    2.什么是反序列化
    反序列化和序列化是两个正好相反的过程。当我们要再次使用这些数据的时候,应用程序读取序列化之后的数据,并将其恢复成应用程序中的数据。

    3.反序列化有什么安全问题
    尽管反序列化最严重可导致远程代码执行(RCE,Remote Code Execution),但最常见的反序列化安全问题却是通过修改序列化之后的数据字段,从而进行提权或越权操作。

    4.反序列化攻击原理
    序列化即是把对象转变为字节流,存放在内存、文件数据库中,而反序列化即是把字节流转变为对象。在java中有一个ObjectOutputStream类的writeobject方法可以实现序列化,而ObjectInputStream类的Readobject方法可以实现反序列化。该漏洞的原因出自于如果应用对恶意构造的用户输入的数据进行反序列化,这样就会产生非预期的对象,从而有可能产生远程代码执行。或者应用中存在可以在反序列化过程中或者之后被改变行为的类,则攻击者可以通过改变应用逻辑或者实现远程代码执行攻击。我们将其称为对象和数据结构攻击。

    5.防御反序列化的方法
    (1):最安全的方法是不接受来自不受信源的序列化对象,或使用只允许原始数据类型的序列化媒体
    (2):反序列化之前,先进行严格的数据类型校验。由于校验规则容易被攻击者探索出来,进而容易被绕过,因此防御不能仅依赖这一个手段,但可以作为完整性校验防御方案的补充
    (3):隔离运行那些在低特权环境中反序列化的代码
    (4):对反序列化过程进行详尽的日志记录,监控反序列化过程,在发现疑似反序列化攻击时进行警报

    A9:2017-使用含有已知漏洞的组件

    1.攻击原理
    由于现在的服务器都需要使用很多的组件,管理员并不能保证所使用的组件都是没有最新的,因此可能会存在一些版本是存在已知漏洞的(实际上比较新的版本的组件也是会存在漏洞的),攻击者可以使用这些已知的漏洞来进行攻击,甚至获得管理员权限。

    2.防御方法
    (1):移除不使用的依赖、不需要的功能、组件、文件和文档
    (2):从官方渠道安全的获取组件,并使用签名机制来降低组件被篡改或加入恶意漏洞的风险
    (3):关注最新的漏洞报告,及时为需要的组件进行升级或者打补丁

    A10:2017-不足的日志记录和监控

    1.日志记录介绍
    日志记录是一个系统的最重要的功能之一。日志记录包括登录成功记录、登录失败记录、访问控制记录等,用来记录服务器的各种信息。

    2.攻击原理
    攻击者依靠监控的不足和响应的不及时来达成他们的目标而不被知晓。比如日志没有记录登录失败,那么攻击者可能就可以通过暴力破解多次进行登录尝试,但是日志中却没有记录。这就可能让攻击者成功入侵系统并隐匿自己的行踪。这个看似危害不大但却是十分严重的危害,因为一个日志系统不完善的服务器很容易遭受攻击并且在遭受攻击后无法判断攻击来源,这样就无法做出相应的防御,很可能再次遭受同样的攻击。

    3.防御方法
    (1):确保所有登录、访问控制失败、输入验证失败能够被记录到日志中去,并保留足够的用户上下文信息,以识别可疑或恶意帐户,并为后期取证预留足够时间
    (2):建立有效的监控和告警机制,使可疑活动在可接受的时间内被发现和应对
    (3):完善日志系统,使其可以监控各种日志信息
    (4):及时对日志系统进行备份,并保存足够长时间

    展开全文
  • 2019OWASP漏洞top10

    千次阅读 2020-04-13 19:25:41
    旧版(2013) A1 注入 Injection A2 失效的身份认证和会话管理 A3 跨站脚本-XSS A4 直接引用不安全的对象 A5 安全配置错误 A6 敏感信息泄露 A7 缺少功能级访问控制 A8 跨站请求伪造 CSRF A9 使用含有已知漏洞的组件 ...

    旧版(2013)

        A1 注入 Injection
        A2 失效的身份认证和会话管理 
        A3 跨站脚本-XSS
        A4 直接引用不安全的对象
        A5 安全配置错误
        A6 敏感信息泄露
        A7 缺少功能级访问控制
        A8 跨站请求伪造 CSRF
        A9 使用含有已知漏洞的组件
        A10 未验证的重定向和转发

    新版(2017)

        A1 注入 Injection
        A2 失效的身份认证
        A3 敏感信息泄露
        A4 XML外部实体(XXE)
        A5 失效的访问控制
        A6 安全配置错误
        A7 跨站脚本(XSS)
        A8 不安全的反序列化
        A9 使用含有已知漏洞的组件
        A10 不足的日志记录和监控

    对比图

    展开全文
  • 使用含有已知漏洞的组件10. 不足的日志记录和监控详细介绍和应对策略PDF中文版下载 1. 注入 当将不受信任的数据作为命令或查询的一部分发送到解释器时,会发生注入缺陷,例如SQL,NoSQL,OS和LDAP注入。攻击者的...

    原文地址:https://owasp.org/www-project-top-ten/

    1. 注入

    当将不受信任的数据作为命令或查询的一部分发送到解释器时,会发生注入缺陷,例如SQL,NoSQL,OS和LDAP注入。攻击者的敌对数据可能会诱使解释器执行未经预期的命令或未经适当授权而访问数据。

    2. 失效的身份验证

    与身份验证和会话管理相关的应用程序功能通常会错误地实现,从而使攻击者能够破坏密码,密钥或会话令牌,或者利用其他实现缺陷来临时或永久地假定其他用户的身份。

    3. 敏感数据泄露

    许多Web应用程序和API无法正确保护敏感数据,例如金融,医疗保健和PII。攻击者可能会窃取或修改这些受保护程度不高的数据,以进行信用卡欺诈,身份盗用或其他犯罪。敏感数据可能会在没有额外保护的情况下受到损害,例如静态加密或传输中加密,并且与浏览器进行交换时需要采取特殊的预防措施。

    4. XML外部实体(XXE)

    许多较旧的或配置不当的XML处理器都会评估XML文档中的外部实体引用。外部实体可以使用文件URI处理程序,内部文件共享,内部端口扫描,远程代码执行和拒绝服务攻击来公开内部文件。

    5. 失效的访问控制

    通常,对身份验证用户允许执行的操作的限制通常未得到正确执行。攻击者可以利用这些缺陷来访问未经授权的功能和/或数据,例如访问其他用户的帐户,查看敏感文件,修改其他用户的数据,更改访问权限等。

    6. 安全配置错误

    安全配置错误是最常见的问题。这通常是由于不安全的默认配置,不完整或临时的配置,开放的云存储,错误配置的HTTP标头以及包含敏感信息的冗长错误消息的结果。不仅必须安全地配置所有操作系统,框架,库和应用程序,而且还必须及时对其进行补丁/升级。

    7. 跨站点脚本XSS

    每当应用程序在未经适当验证或转义的情况下在新网页中包含不受信任的数据,或者使用可以创建HTML或JavaScript的浏览器API用用户提供的数据更新现有网页时,都会发生XSS漏洞。XSS允许攻击者在受害者的浏览器中执行脚本,这些脚本可以劫持用户会话,破坏网站或将用户重定向到恶意网站。

    8. 不安全的反序列化

    不安全的反序列化通常会导致远程执行代码。即使反序列化缺陷不会导致远程执行代码,也可以将它们用于执行攻击,包括重播攻击,注入攻击和特权提升攻击。

    9. 使用含有已知漏洞的组件

    诸如库,框架和其他软件模块之类的组件以与应用程序相同的特权运行。如果利用了易受攻击的组件,则此类攻击可能会导致严重的数据丢失或服务器接管。使用具有已知漏洞的组件的应用程序和API可能破坏应用程序防御,并造成各种攻击和影响。

    10. 不足的日志记录和监控

    日志和监视的不足,再加上事件响应的缺失或无效集成,使攻击者可以进一步攻击系统,保持持久性,转向更多系统以及篡改,提取或破坏数据。大多数违规研究表明,发现违规的时间超过200天,通常是由外部各方而不是内部流程或监视来检测。

    详细介绍和应对策略PDF中文版下载

    在这里插入图片描述

    关注我的公众号【Java大厂面试官】,回复:安全,即可下载

    展开全文
  • owasp top 10 的漏洞原理和测试方法

    千次阅读 2020-03-08 08:28:28
    1. Top10 漏洞概述 译自:https://owasp.org/www-project-top-ten/ 1.1 Injection Injection flaws, such as SQL, NoSQL, OS, and LDAP injection, occur when untrusted data is sent to an interpreter as part ...
  • XSS原理:将一段恶意攻击的脚本写入网站参数中,当普通用户访问网站时会自动执行攻击者留 下的攻击代码,如果xss类型为反射型,则用户会出现弹窗警告;如果类型为存储型, 那么用户访问网站的cookie值将会发送给攻击...
  • 文件上传漏洞原理:在具有上传功能的网站上传恶意脚本文件(webshell文件),并找到文件所 在目录位置,最后将恶意文件传递给php解释器执行。 文件上传绕过waf:白名单:MIME绕过、%00截断、0x00截断、0x0a截断 ...
  • 原理:攻击者将sql语句插入到网站的参数或链接中,从而恶意查询数据库的敏感信息。 SQL注入的数据类型:数字型、字符型、搜索型。 SQL注入的方式/方法:盲注、报错注入、布尔注入、宽字节注入。 数据库版本在...
  • OWASP 十大漏洞研究

    千次阅读 2021-03-10 10:26:05
    (19条消息) OWASP top 10漏洞原理及防御(2017版官方)_wwl012345的博客-CSDN博客_top10漏洞原理 但是在此文的基础上,我又新增了其他内容,以作自己的知识体系。 所谓的OWASP 十大漏洞,每年并不完全一样,所以在我...
  • 结和学习了2017年新发布的owasp top 10 十大漏洞,每个漏洞原理、案列、解决方法上进行阐述
  • owasp top10漏洞讲解

    2018-07-22 09:20:40
    web渗透之逻辑漏洞,1. 注入 2. 失效的身份认证和会话管理 3. 跨站攻击 4. 不安全的对象直接引用 5. 伪造跨站请求 6. 安全配置错误 7. 限制URL访问失败 8. 未验证的重定向和转发 9. 应用已知脆弱性的组件 10. 敏感...
  • DVWA靶场,集成了owasp top 10漏洞,可以在这里面进行学习漏洞原理、利用和危害
  • OWASP TOP 10 漏洞原理与危害

    千次阅读 2018-08-28 17:08:45
    这个漏洞也是与认证相关的,这种漏洞具体是指在系统已经对url的访问做了限制的情况下,但这种限制并没有生效。常见的例子是系统没有对用户进行角色的检查,以及用户通过修改URL的action并指向未被授权页面就能访问该...
  • OWASP十大安全漏洞

    2019-01-12 00:21:04
    总结和学习了2017年新发布的owasp top 10 十大漏洞,每个漏洞原理、案列、解决方法上进行阐述,详见ppt
  • 目录2013VS2017应用程序安全风险注入介绍形成原因利用场景防御失效的身份认证介绍形成原因利用场景防御敏感数据泄露...漏洞的组件介绍形成原因利用场景防御不足的日志记录和监控(新增)介绍形成原因利用场景防御总结...
  • 文章目录XML学习一、XML概述1.... 漏洞原理2. PHP相关函数- file_get_contents()- php://input- simplexml_load_string()3. XML注入回显 输出函数 XML学习 一、XML概述 1. 简述 XML 指可扩展标记语言
  • 大致原理如下图。 1.本地文件包含(LFI) low和medium时相同。 在调用本机的文件时,可能里面含有木马。 在OWASP靶机中,向靶机中先上传一个含有php一句话木马隐写的图片,这时的本机中就含有了恶意的图片文件,...
  • OWASP top 10漏洞详解

    千次阅读 多人点赞 2020-10-11 19:26:54
    一、漏洞介绍  Weblogic的WLS Security组件对外提供webservice服务,其中使用了XMLDecoder来解析用户传入的XML数据,在解析的过程中出现反序列化漏洞,导致可执行任意命令。 二、漏洞详情 Oracle Fusion ...
  • OWASP top 10 漏洞的总结笔记

    千次阅读 2017-05-26 12:49:35
    这里简单地写一些关于OWASP top 10 漏洞的一些利用技巧以及检测方法、防御方法等的笔记(很多是参考了《Web漏洞讲解》),有新的理解和学会好的方法之后会更新~ 转载 ...
  • Web 安全恩仇录:漏洞原理

    千次阅读 2018-04-12 10:41:44
    本课程主要内容为 Web 常见漏洞分析,同时会介绍在各个阶段需要做什么事,该课程利用的攻防平台是 Kali Linux 以及一些 Linux 和 Windows 靶机,按照主次会依次介绍 OWASP 10 的漏洞类型。通过学习本课内容,能够...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,524
精华内容 1,009
关键字:

owasp漏洞原理