精华内容
下载资源
问答
  • 安全性测试的方法

    2018-01-03 11:43:02
    针对于安全性测试,会遇到一些具体问题,针对一些具体问题同样会有具体解决方法,下面简单阐述一下。 功能验证功能验证是采用软件测试当中黑盒测试方法,对涉及安全软件功能,如:用户管理模块,权限管理...

    针对于安全性测试,会遇到一些具体的问题,针对一些具体的问题同样会有具体的解决方法,下面简单阐述一下。

    1. 功能验证
      功能验证是采用软件测试当中的黑盒测试方法,对涉及安全的软件功能,如:用户管理模块,权限管理模块,加密系统,认证系统等进行测试,主要验证上述功能是否有效,具体方法可使用黑盒测试方法。
    2. 漏洞扫描
      安 全漏洞扫描通常都是借助于特定的漏洞扫描器完成的。漏洞扫描器是一种自动检测远程或本地主机安全性弱点的程序。通过使用漏洞扫描器,系统管理员能够发现所 维护信息系统存在的安全漏洞,从而在信息系统网络安全保卫站中做到“有的放矢”,及时修补漏洞。按常规标准,可以将漏洞扫描分为两种类型:主机漏洞扫描器 (Host Scanner)和网络漏洞扫描器(Net Scanner)。主机漏洞扫描器是指在系统本地运行检测系统漏洞的程序,如著名的COPS、Tripewire、Tiger等自由软件。网络漏洞扫描器是指基于网络远程检测目标网络和主机系统漏洞的程序,如Satan、ISS Internet Scanner等。
      安全漏洞扫描是可以用于日常安全防护,同时可以作为对软件产品或信息系统进行测试的手段,可以在安全漏洞造成严重危害前,发现漏洞并加以防范。
    3. 模拟***实验
      对 于安全测试来说,模拟***测试是一组特殊的黑盒测试案例,我们以模拟***来验证软件或信息系统的安全防护能力,下面简要列举在数据处理与数据通信环境中特 别关心的几种***。在下列各项中,出现了“授权”和“非授权”两个术语。“授权”意指“授予权力”,包含两层意思:这里的权力是指进行某种活动的权力(例 如访问数据);这样的权力被授予某个实体、代理人或进程。于是,授权行为就是履行被授予权力(未被撤销)的那些活动
      冒充:就是意个实体假装成一个不同的实体。冒充常与某些别的主动***形式一起使用,特别是消息的重演与篡改。例如,截获鉴别序列,并在一个有效的鉴别序列使用过一次后再次使用。特权很少的实体为了得到额外的特权,可能使用冒充成具有这些特权的实体,举例如下。
      1) 口令猜测:一旦***识别了一台主机,而且发现了基于NetBIOS、Telnet或NFS服务的可利用的用户帐号,并成功地猜测出了口令,就能对机器进行控制。
      2) 缓冲区溢出:由于在很多地服务程序中大意的程序员使用类似于“strcpy(),strcat()”不进行有效位检查的函数,最终可能导致恶意用户编写一小段程序来进一步打开安全缺口,然后将该代码放在缓冲区有效载荷末尾,这样,当发生缓冲区溢出时,返回指针指向恶意代码,执行恶意指令,就可以得到系统的控制权。
      重演:当一个消息或部分消息为了产生非授权效果而被重复时,出现重演。例如,一个含有鉴别信息的有效消息可能被另一个实体所重演,目的是鉴别它自己(把它当作其他实体)。
      消息篡改:数据所传送的内容被改变而未被发觉,并导致非授权后果,如下所示。
      1) DNS高速缓存污染:由于DNS服务器与其他名称服务器交换信息的时候并不进行身份验证,这就使得***可以加入不正确得信息,并把用户引向***自己的主机。
      2) 伪造电子邮件:由于SMTP并不对邮件发送者的身份进行鉴定,因此***可以对内部客户伪造电子邮件,声称是来自某个客户认识并相信的人,并附上可安装的特洛伊***程序,或者是一个指向恶意网站的链接。
      服务拒绝:当 溢个实体不能执行它的正常功能,或它的动作防碍了别的实体执行它们的正常功能的时候,便发生服务拒绝。这种***可能是一般性的,比如一个实体抑制所有的消 息,也可能是有具体目标的。例如,一个实体抑制所有流向某一特定目的端的消息,如安全审计服务。这种***可以是对通信业务流的抑制,或产生额外的通信业务 流。也可能制造出试图破坏网络操作的消息,特别是如果网络具有中继实体,这些中继实体根据从别的中继实体那里接收到的状态报告,来做出路由选择的决定。拒 绝服务***种类很多,举例如下。
      1) 死亡之ping(ping of death):由于在早期的阶段,路由器对包的最大尺寸都有限制,许多操作系统对TCP/IP栈的实现在ICMP包上都规定为64KB,并且在读取包的标题后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。当产生畸形的、声称自己的尺寸超过ICMP上限,也就是加载尺寸超过64K上限的包时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方宕机。
      2) 泪滴(Teardorop):泪滴***利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的***。IP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括Service Pack 4 以前的NT)在收到含有重叠偏移的伪造分段时将崩溃。
      3) UDP洪水(UDP Flood): 各种各样的假冒***利用简单的TCP/IP服务,如Chargen和Echo 来传送毫无用处的数据以占满带宽。通过伪造与某一主机的Chargen服务之间的一次的UDP连接,回复地址指向开着Echo服务的一台主机,这样就生成在两台主机之间的足够多的无用数据流,如果数据流足够多,就会导致带宽的服务***。
      4) SYN洪水(SYN Flood):一些TCP/IP栈的实现,只能等待从有限数量的计算机发来的ACK消息,因为它们只有有限的内存缓冲区用于创建连接,如果这一缓冲区充满了虚假连接的初始信息,该服务器就会对接下来的连接请求停止响应,直到缓冲区里的连接企图超时为止。在一些创建连接不受限制的实现里,SYN洪水也具有类似的影响。
      5) Land***:在Land***中,一个特别打造的SYN包的原地址和目标地址都被设置成某一个服务器地址,这将导致接受服务器向它自己的地址发送SYN-ACK消息,结果,这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留,直到超时。各种系统对Land***的反应不同,许多UNIX实现将崩溃,NT变得极其缓慢(大约持续5分钟)。
      6) Smurf***:一个简单的Smurf***,通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包,来淹没受害主机的方式进行,最终导致该网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞,比“Ping of Death”洪水的流量高出一个或两个数量级。更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方雪崩。
      7) Fraggle***:Fraggle***对Smurf***作了简单的修改,使用的是UDP应答消息,而非ICMP。
      8) 电子邮件×××:电子邮件×××是最古老的匿名***之一,通过设置一台机器,不断大量地向同一地址发送电子邮件,***者能够耗尽接收者网络的带宽。
      9) 畸形消息***:各类操作系统上的许多服务都存在此类问题,由于这些服务在处理信息之前没有进行适当正确的错误校验,在收到畸形的信息时可能会崩溃。
      内部***:当 系统的合法用户以非故意或非授权方式进行动作时就成为内部***。多数已知的计算机犯罪都和使系统安全遭受损害的内部***有密切的关系。能用来防止内部*** 的保护方法包括:所有管理数据流进行加密;利用包括使用强口令在内的多级控制机制和集中管理机制来加强系统的控制能力;为分布在不同场所的业务部门划分VLAN,将数据流隔离在特定部门;利用防火墙为进出网络的用户提供认证功能,提供访问控制保护;使用安全日志记录网络管理数据流等。
      外部***:外部***可以使用的方法有:搭线(主动的与被动的)、截取辐射、冒充为系统的授权用户、冒充为系统的组成部分、为鉴别或访问控制机制设置旁路等。
      陷阱门:当系统的实体受到改变,致使一个***者能对命令或对预定的事件或事件序列产生非授权的影响时,其结果就称为陷阱门。例如,口令的有效性可能被修改,使得除了其正常效力之外也使***者的口令生效。
      特洛伊***:对系统而言的特洛伊***,是指它不但具有自己的授权功能,而且还有非授权功能。一个向非授权信道拷贝消息的中继就是一个特洛伊***。典型的特洛伊***有NetBus、BackOrifice和BO2k 等。
    4. 侦听技术
      侦听技术实际上是在数据通信或数据交互过程,对数据进行截取分析的过程。目前最为流行的是网络数据包的捕获技术,通常我们称为 Capture,***可以利用该项技术实现数据的盗用,而测试人员同样可以利用该项技术实现安全测试。
      该项技术主要用于对网络加密的验证。
      功能验证 采用黑盒测试方法,对涉及安全的软件功能进行测试
      漏洞扫描 采用主机或系统漏洞扫描器自动检测远程或本机安全性弱点
      模拟***试验 采用冒充、重演、消息篡改、服务拒绝、内部***、外部***、陷阱门、特洛伊***方法进行测试
      侦听技术 对数据进行截取分析的过程,主要用于对网络加密的验证

    转载于:https://blog.51cto.com/13559040/2056967

    展开全文
  • Web方法论:高质量Web应用程序安全性测试的方法论-https:github.comtprynnweb-methodologywiki
  • 基于安全规则变异Web Services安全性测试方法
  • 安全性测试方法

    千次阅读 2013-08-01 16:04:38
    安全性测试方法采用访谈、检查、测试三种基本的方法并按照提供的系统安全解决方案,结合功能测试和安全性测试工具完成,最终通过安全性测试结果对系统整体安全体系进行评估。 1) 访谈。主要是通过与技术开发和管理...

    安全性测试方法采用访谈、检查、测试三种基本的方法并按照提供的系统安全解决方案,结合功能测试和安全性测试工具完成,最终通过安全性测试结果对系统整体安全体系进行评估。

    1)  访谈。主要是通过与技术开发和管理人员交流和访谈等,获取相关安全测试的证据。

    2)   检查。包括文档查阅和现场核查,文档查阅通过检查技术及管理相关文档和记录,获取相关证据;现场核查主要通过对检查对象进行现场观察、查验、分析等活动,获取相关证据以证明信息系统安全保护措施是否得以有效实施。

    3)   测试。包括人工测试和工具测试,人工测试通过人工执行相关的命令或程序,查看被信息系统产生的特定响应,分析响应输出的结果,获取证据以证明信息系统安全保护措施是否得以有效实施;工具测试采用自动化工具对测评对象产生的特定响应等活动进行查看,分析响应输出结果,获取证据以证明信息系统安全保护措施是否得以有效实施。

    展开全文
  • 安全性测试安全性测试安全测试验证被测对象的安全保护机制能否在实际应用中保护系统不受非法侵入用来保证系统本身数据的完整性和保密性例如受到...解密通信协议安全等安全性测试安全测试可使用人工数据验证的方法也可
  • 安全性测试介绍

    2015-09-10 20:09:26
    模糊测试(fuzz testing)是一类安全性测试的方法。说起安全性测试,大部分人头脑中浮现出的可能是一个标准的“黑客”场景:某个不修边幅、脸色苍白的年轻人,坐在黑暗的房间中,正在熟练地使用各种工具尝试进入某个...

    1.模糊测试

    2.渗透测试


    模糊测试(fuzz testing)是一类安全性测试的方法。说起安全性测试,大部分人头脑中浮现出的可能是一个标准的“黑客”场景:某个不修边幅、脸色苍白的年轻人,坐在黑暗的房间中,正在熟练地使用各种工具尝试进入某个系统。这种由安全人员“模拟黑客进入系统”的测试方法的确是安全性测试中的一种有效测试手段,名叫“渗透测试”。渗透测试方法完全依靠测试执行者的能力,能力强的“白客”能够发现有价值的安全性漏洞,而不具备很强的攻击能力的测试者就无法有效发现系统中的安全性漏洞。必须承认,渗透测试是一种有效的安全性测试手段,当然,前提是你要能够找到足够好的测试执行者。

    渗透测试是一种有效的测试方法,但由于它对执行者的能力要求太高,因此很难被大规模应用。站在测试的角度,我们是否能够用“自动化测试”这个强有力的武器帮助降低安全性测试的门槛呢?一个容易想到的“录制/回放”方法是:将渗透测试的执行者们的操作录制下来,形成脚本,期望这些脚本可以在不加修改或是稍加修改时应用在对其他应用的安全性测试中。但由于渗透测试的过程并不具有可重复的特点(测试执行主要依赖执行者的经验,类似调试),这种想法在真实的安全性测试环境下完全不可行。完全自动化的工具通常只能发现那些可被用标准化方式发现的特定安全漏洞(如简单的SQL注入漏洞)。

    模糊测试是一种介于完全的手工渗透测试与完全的自动化测试之间的安全性测试类型。它充分利用了机器的能力:随机生成和发送数据;同时,也尝试将安全专家在安全性方面的经验引入进来。从执行过程来说,模糊测试的执行过程非常简单:

    1. 测试工具通过随机或是半随机的方式生成大量数据;
    2. 测试工具将生成的数据发送给被测试的系统(输入);
    3. 测试工具检测被测系统的状态(如是否能够响应,响应是否正确等);
    4. 根据被测系统的状态判断是否存在潜在的安全漏洞。

    显然,模糊测试的整个执行过程是依靠工具进行的自动化测试。但是,看起来它完全是一个类似MonkeyTest工具的随机数据生成器嘛,这怎么能和安全专家的经验结合起来呢?别着急,我们用一个例子来演示一下。

    为了简单起见,假定我们要测试的应用是一个C/S应用的服务端程序。这个程序运行在Unix平台上,名字叫做TgServer。我们唯一知道的信息就是客户端和TgServer之间使用基于TCP/IP的自定义协议进行通讯。这种情况下,我们该如何尝试找到应用系统中可能的漏洞?

    方法1:
    如果我们手头上有TgServer的源代码,通过代码审查显然可以找到可能的漏洞。就算没有源代码,通过逆向工程方式,用代码审查的方式也可以达到找到漏洞的目的。当然,这必然要求审查者具有足够好的技能,而且,被测应用规模越大,需要付出的成本也就越高。

    方法2:
    尝试抓取到客户端和服务器之间的通信数据,根据这些数据分析出客户端与服务器之间的通信协议,然后根据协议的定义,自行编造数据发起攻击,尝试找到可能的漏洞。

    方法2在成本上比方法1要低,而且由于方法2关注的是协议层面的攻击,效率会更高。但是,稍微想一下,方法2还是存在一些问题:

    1. 完整的协议分析难度很大;
    2. 人工编造数据的成本很高;

    在方法2的基础上,我们尝试引入模糊测试的概念,由于机器生成和发送数据的能力足够强,因此我们完全可以把生成数据的任务交给机器去完成。当然,协议的分析主要还是依赖人工来进行,模糊测试领域内有一些自动化的协议分析手段(《模糊测试》一书中有专门的章节描述),但从效率和效果上来说,在面对复杂协议的时候,人工分析的方式更为有效

    假如根据抓取到的数据包,我们发现被测应用使用的协议如下(|仅表示字段间的分割,不是实际的数据内容):

    |00 01| GET | 11 | user:dennis

    • 2字节的包头(00 01)
    • 10字节定长的命令(GET)
    • 一个1字节的数据,表示命令参数的长度
    • 不定长的命令参数

    根据这些信息,使用模糊测试方法,我们就可以借助通用的模糊测试工具(如Spike),用模板方式将协议描述出来,并让模糊测试工具自动填充可变字段的内容,生成大量的测试用例并发送给TgServer。同时,通过模糊测试工具提供的功能监视TgServer,一旦TgServer出现可被识别的问题(如性能下降,不再响应,或是返回异常数据等),我们就可以停止模糊测试,并通过日志找到导致问题的请求,进而确认问题。

    简单的说,模糊测试尝试降低安全性测试的门槛,通过半随机方式的数据发送来找出被测系统的漏洞。显然,测试这对被测应用越了解,模糊测试的生成就能越准确。但与渗透测试或是代码审查相比,模糊测试显然更加易于进行。而且,通过自动化工具,模糊测试可以把安全方面的经验积累到工具中,为组织持续的安全性测试提供帮助。

    (这是本系列的第一篇,后续还将写两篇来介绍不同类型应用的模糊测试,以及常用的模糊测试工具)


    展开全文
  • web应用程序安全性测试As developers, it’s not only our job to write code. We are responsible for delivering software that is tested, fully functional, and secure. All of these requirements are equally...

    web应用程序安全性测试

    As developers, it’s not only our job to write code. We are responsible for delivering software that is tested, fully functional, and secure. All of these requirements are equally complex. But I feel these are not always treated equally.

    作为开发人员,编写代码不仅是我们的工作。 我们负责提供经过测试,功能齐全且安全的软件。 所有这些要求都同样复杂。 但是我觉得这些并不总是得到平等对待。

    Application security is not always a first-class citizen. But it should be. Customers give us their data and expect us to keep it in a safe place. By leaving them vulnerable to exploitation, we risk losing our customers’ trust and their business.

    应用程序安全性并不总是一流的公民。 但这应该是。 客户向我们提供他们的数据,并希望我们将其保存在安全的地方。 使他们容易受到剥削,我们就有失去客户信任和业务的风险。

    I write this story to help you improve your web app’s security. I will present mitigations that you can implement quickly in any web application. Therefore, I picked five of the ten most common security risks and added a dedicated chapter for Cross-Site-Request-Forgery. Each section consists of one or more vulnerabilities and multiple mitigations.

    我写这个故事是为了帮助您提高Web应用程序的安全性。 我将介绍一些缓解措施,您可以在任何Web应用程序中快速实施这些缓解措施。 因此,我从十种最常见的安全风险中选择了五种,并为跨站点请求伪造添加了专门的章节。 每个部分均包含一个或多个漏洞和多种缓解措施。

    1. Cross-Site-Request-Forgery

      跨站请求伪造

    2. Cross-Site Scripting

      跨站脚本

    3. Security Misconfiguration

      安全配置错误

    4. Broken Authentication

      认证失败

    5. Sensitive Data Exposure

      敏感数据暴露

    6. Using Components with Known Vulnerabilities

      使用具有已知漏洞的组件

    跨站请求伪造 (Cross-Site-Request-Forgery)

    Cross-Site Request Forgery (CSRF) is an attack that forces an end user to execute unwanted actions on a web application in which they’re currently authenticated.owasp.org/www-community/attacks/csrf/

    跨站点请求伪造(CSRF)是一种攻击,它迫使最终用户在当前已通过身份验证的Web应用程序上执行不需要的操作。 owasp.org/www-community/attacks/csrf /

    攻击 (Attack)

    A CSRF attack happens if an attacker can execute actions on the user’s behalf without notice.

    如果攻击者可以代表用户执行操作而无需另行通知,则CSRF攻击会发生。

    1. Our user logs into trustful.site.com.

      我们的用户登录到trustful.site.com。

    2. trustful.site.com sets a session cookie.

      trustful.site.com设置会话cookie。

    3. The attacker tricks the user into navigating to evil.syte.com.

      攻击者诱使用户导航到evil.syte.com。

    4. evil.syte.com calls the backend of trustful.site.com.

      evil.syte.com称为trustful.site.com的后端。

    5. The backend application validates the session cookie and executes the request.

      后端应用程序验证会话cookie并执行请求。

    Image for post

    Scary, isn’t it? Why is this possible? Cookies, by default, are sent to hostnames that match their domain value. But not all browsers check if the current webpage matches the cookies’ domain value. They use the target host of an HTTP request to determine which cookies to attach.

    吓人,不是吗? 为什么会这样呢? 默认情况下,Cookie将发送到与其域名匹配的主机名。 但是,并非所有浏览器都会检查当前网页是否与Cookie的域名匹配。 他们使用HTTP请求的目标主机来确定要附加的cookie。

    The Domain attribute specifies those hosts to which the cookie will be sent. For example, if the value of the Domain attribute is “example.com”, the user agent will include the cookie in the Cookie header when making HTTP requests to example.com [..].tools.ietf.org/html/rfc6265#section-4.1.2

    域属性指定将向其发送Cookie的那些主机。 例如,如果“域”属性的值为“ example.com”,则在对example.com [..]进行HTTP请求时,用户代理会将cookie包含在Cookie标头中。 tools.ietf.org/html/rfc6265#section-4.1.2

    Thus, as long as the session cookie is valid, evil.syte.com can perform actions on the user’s behalf.

    因此,只要会话cookie有效, evil.syte.com就可以代表用户执行操作。

    缓解措施 (Mitigations)

    We can do three things to mitigate the risk of CSRF:

    我们可以做三件事来减轻CSRF的风险:

    • Send cookies only over secure HTTPs connections,

      仅通过安全的HTTPs连接发送Cookie,
    • restrict access to cookies, and

      限制访问cookie,以及
    • prevent the browser from sending the cookie from 3rd party websites.

      阻止浏览器从第三方网站发送cookie。

    To achieve this, set the following cookie attributes:

    为此,请设置以下cookie属性:

    • Secure

      Secure

    • HttpOnly

      HttpOnly

    • SameSite=strict

      SameSite=strict

    跨站脚本 (Cross-Site Scripting)

    Cross-Site Scripting (XSS) attacks are a type of injection, in which malicious scripts are injected into otherwise benign and trusted websites. XSS attacks occur when an attacker uses a web application to send malicious code, generally in the form of a browser side script, to a different end user.owasp.org/www-community/attacks/xss/

    跨站点脚本(XSS)攻击是一种注入,其中恶意脚本被注入到原本良性和可信任的网站中。 当攻击者使用Web应用程序将恶意代码(通常以浏览器端脚本的形式)发送给其他最终用户时,就会发生XSS攻击。 owasp.org/www-community/attacks/xss/

    攻击 (Attack)

    An XSS attack needs two preconditions. First, the attacker must inject code into the web application. Second, the web application has to execute all scripts it gets blindly. In contrast to the CSRF attack, there’s not necessarily a third party website involved.

    XSS攻击需要两个前提条件。 首先,攻击者必须将代码注入Web应用程序。 其次,Web应用程序必须执行盲目执行的所有脚本。 与CSRF攻击相比,不一定要涉及第三方网站。

    Cross-Site Scripting attacks can involve code persisted in a database, or code injected at runtime. For the following example, we will focus on the former.

    跨站点脚本攻击可能涉及将代码保留在数据库中,或者涉及在运行时注入的代码。 对于以下示例,我们将重点放在前一个示例上。

    1. The attacker inserts a malicious script into our database through a field not validated by our server.

      攻击者通过未经服务器验证的字段将恶意脚本插入我们的数据库。
    2. The attacker sends our user a link to trustful.site.com. He knows this page will return dangerous script.

      攻击者向我们的用户发送一个链接到trustful.site.com。 他知道此页面将返回危险脚本。

    3. Our user clicks on the link, and unknowingly receives the malicious code snippet.

      我们的用户单击链接,在不知不觉中收到恶意代码段。

    4. The browser executes our attacker’s prepared code. The script sends sensitive information to our attacker.

      浏览器执行攻击者准备的代码。 该脚本会将敏感信息发送给我们的攻击者。

    Image for post

    Are you interested in seeing an XSS vulnerability in action? Click the following link: Google XSS Game Demo. It will open a playground provided by Google and show a JavaScript alert. The text of the popup is in the URL parameter named query. We call this a reflected XSS attack because the server reflects the query parameter.

    您是否有兴趣了解实际使用的XSS漏洞? 单击以下链接: Google XSS Game Demo 。 它将打开Goog​​le提供的游乐场,并显示JavaScript警报。 弹出窗口的文本位于名为query的URL参数中。 我们称其为反射XSS攻击,因为服务器反映了查询参数。

    缓解措施 (Mitigations)

    Validate all data twice. First, frontend applications need to validate all user input. Validation will decrease the risk of malicious data entering the app in the first place. Nevertheless, hackers can still call servers directly. Hence, second, we need to validate all data on the server-side, too. To mitigate the XSS risk, we need to verify every JSON or XML field’s value. These fields should only contain explicitly permitted characters and have an acceptable length.

    验证所有数据两次 。 首先,前端应用程序需要验证所有用户输入。 验证将首先降低恶意数据进入应用程序的风险。 尽管如此,黑客仍然可以直接呼叫服务器。 因此,第二,我们也需要在服务器端验证所有数据。 为了减轻XSS风险,我们需要验证每个JSON或XML字段的值。 这些字段应仅包含明确允许的字符,并且具有可接受的长度

    Encode all data to prevent reflected XSS attacks. The OWASP® Foundation builds appropriate libraries for both NodeJS and Java. Encoding ensures that web browsers display code instead of executing it.

    对所有数据进行编码,以防止反射的XSS攻击。 该OWASP®基金会建立两个相应的库的NodeJSJava的 。 编码可确保Web浏览器显示代码而不是执行代码。

    Tell the browser which type of resources to fetch from third-party servers. Such a content policy is a significant security improvement, as it limits the scope of an XSS attack.

    告诉浏览器要从第三方服务器获取哪种资源 。 这样的内容策略是对安全性的重大改进,因为它限制了XSS攻击的范围。

    • If you use a CDN or load resources from other servers, use the appropriate content security policy with the expected domain. Such as Content-Security-Policy: font-src https://fonts.cdn.com.

      如果您使用CDN或从其他服务器加载资源,请对预期的域使用适当的内容安全策略。 例如Content-Security-Policy: font-src https://fonts.cdn.com

    • If you don’t use a CDN, set the response header Content-Security-Policy with value default-src ‘none'.

      如果您不使用CDN,请设置响应标头Content-Security-Policy 有价值 default-src 'none'

    安全配置错误 (Security Misconfiguration)

    Security misconfiguration is the most commonly seen issue. This is commonly a result of insecure default configurations, incomplete or ad hoc configurations, open cloud storage, misconfigured HTTP headers, and verbose error messages containing sensitive information.owasp.org/www-project-top-ten/

    安全配置错误是最常见的问题。 这通常是由于不安全的默认配置,不完整或临时的配置,开放的云存储,错误配置的HTTP标头以及包含敏感信息的冗长错误消息的结果。 owasp.org/www-project-top-ten/

    An improper configuration of any component can help attackers discover security holes and identify an attack surface. In the context of web application security, a properly configured system

    任何组件的不正确配置都可以帮助攻击者发现安全漏洞并识别攻击面。 在Web应用程序安全性的上下文中,一个正确配置的系统

    • hides information about used components and frameworks, and

      隐藏有关使用过的组件和框架的信息,以及
    • does not permit unauthenticated and unauthorized access.

      不允许未经身份验证和未经授权的访问。

    The Attack Surface describes all of the different points where an attacker could get into a system, and where they could get data out.cheatsheetseries.owasp.org/cheatsheets/Attack_Surface_Analysis_Cheat_Sheet.html

    攻击面描述了攻击者可以进入系统以及从何处获取数据的所有不同点。 cheatsheetseries.owasp.org/cheatsheets/Attack_Surface_Analysis_Cheat_Sheet.html

    攻击 (Attack)

    Information about a system can appear in HTTP headers and HTTP response bodies. Standard HTTP headers that contain server information are:

    有关系统的信息可以显示在HTTP标头和HTTP响应正文中。 包含服务器信息的标准HTTP标头是:

    • server (Apache, NGINX),

      服务器(Apache,NGINX),

    • x-powered-by (ExpressJS, PHP),

      x-by-by(ExpressJS,PHP),

    • x-application-context (Spring Boot),

      x-application-context(Spring启动),

    • via (varnish)

      通过(清漆)

    Frameworks like ExpressJS or Spring Boot provide a default error handling mechanism. By default, both return a stack trace, if they handle an uncaught error or exception. Stack traces give an attacker a detailed impression of an application. They reveal which types and instances are in use and processed the request. With this in-depth knowledge, an attacker can launch a more sophisticated attack.

    诸如ExpressJSSpring Boot之类的框架提供了默认的错误处理机制。 默认情况下,如果它们都处理未捕获的错误或异常,则两者都将返回堆栈跟踪。 堆栈跟踪使攻击者对应用程序有详细的印象。 它们显示正在使用哪些类型和实例并处理了请求 。 有了这些深入的知识,攻击者就可以发起更复杂的攻击。

    Furthermore, if an application returns error messages and user input, it can be vulnerable to Reflected File Downloads (RFD). RFD will allow an attacker to build an URL to a web page, that when opened, will download a script to the user’s machine. Since the attacker controls the link, he is also in charge of the downloaded file’s content.

    此外,如果应用程序返回错误消息和用户输入,则可能容易受到“ 反射文件下载(RFD)”的影响 。 RFD允许攻击者建立指向网页的URL,打开该URL后,会将脚本下载到用户的计算机上。 由于攻击者控制链接,因此他也负责下载文件的内容。

    How could such a link look like?

    这样的链接看起来如何?

    • https://search.yoursite.com/;chrome.bat?q=<encoded bash script here>

      https://search.yoursite.com/;chrome.bat?q= <此处已编码bash脚本>

    An incorrectly configured server would download the reflected parameter q to a file named chrome.cmd. What do you think, how likely is it for a non-technical user to run chrome.cmd in the downloads folder?

    错误配置的服务器会将反射的参数q下载到名为chrome.cmd的文件中。 您认为,非技术用户在downloads文件夹中运行chrome.cmd的可能性有多大?

    减轻 (Mitigation)

    Disable component and framework-specific HTTP headers. Make it harder for a hacker to launch specific attacks.

    禁用组件和特定于框架的HTTP标头。 使黑客更难发动特定的攻击。

    Do not expose detailed information or user info in error pages. Hide information about frameworks and application runtime and prevent reflected file downloads.

    不要在错误页面中显示详细信息或用户信息。 隐藏有关框架和应用程序运行时的信息,并防止反映文件下载。

    Disable HTTP path parameters. Path parameters are the part of an URL that comes after a semicolon: https://search.yoursite.com/;chrome.bat. They play a vital role in RFD attacks, as they can fool the browser into downloading a binary file. Reject requests containing a semicolon, by merely returning HTTP status 404.

    禁用HTTP路径参数。 路径参数是分号后面的URL的一部分: https://search.yoursite.com/; chrome.bat : https://search.yoursite.com/; chrome.bat https://search.yoursite.com/; chrome.bat 。 它们在RFD攻击中起着至关重要的作用,因为它们可以欺骗浏览器以下载二进制文件。 仅返回HTTP状态404,以拒绝包含分号的请求。

    Additionally, to limit the risk of RFDs, don’t let a browser guess the content type of an HTTP response. Always set the response header X-Content-Type-Options: nosniff.

    另外,为了限制RFD的风险, 请不要让浏览器猜测HTTP响应的内容类型 。 始终设置响应头X-Content-Type-Options: nosniff

    认证失败 (Broken Authentication)

    Restrictions on what authenticated users are allowed to do are often not properly enforced. Attackers can exploit these flaws to access unauthorized functionality and/or data, such as access other users’ accounts, view sensitive files, modify other users’ data, change access rights, etc.owasp.org/www-project-top-ten/

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

    攻击 (Attack)

    A Cross-Origin Resource Sharing (CORS) policy defines which web pages are allowed to request resources from a server. Application servers determine allowance by inspecting the HTTP header Origin. This header is set by browsers and contains the current website’s domain.

    跨域资源共享(CORS)策略定义了允许哪些网页从服务器请求资源。 应用服务器通过检查HTTP标头Origin来确定配额。 该标头由浏览器设置,并包含当前网站的域。

    This means that a web application [..] can only request resources from the same origin the application was loaded from unless the response from other origins includes the right CORS headers.developer.mozilla.org/en-US/docs/Web/HTTP/CORS/

    这意味着,除非来自其他来源的响应包括正确的CORS标头,否则Web应用程序[..]只能从加载该应用程序的相同来源请求资源。 developer.mozilla.org/zh-CN/docs/Web/HTTP/CORS /

    In the image below, we can see multiple webpages sharing the same backend application. With enabled CORS policy, the server can allow requests from signup.mailinglist.com and signup.blogs.com and deny calls from signup.evil.com. These policies can also permit only a subset of HTTP methods for specific origins.

    在下图中,我们可以看到多个网页共享同一个后端应用程序。 使用启用的CORS策略,服务器可以允许来自signup.mailinglist.com和signup.blogs.com的请求,并拒绝来自signup.evil.com的呼叫。 这些策略也仅允许特定来源的HTTP方法的子集。

    Image for post

    Please note: An attacker may simply call an application server directly, therefore bypassing the browser and circumventing CORS policies by not setting the Origin request header. Nevertheless, configured CORS rules prevent the attacker from, i.e., building a website that looks and feels like the target application and uses the same backend.

    请注意:攻击者可能只是直接调用应用服务器,因此绕过浏览器并通过不设置Origin请求标头来绕开CORS策略。 但是,配置的CORS规则可以防止攻击者进行攻击,即,建立一个外观和感觉都类似于目标应用程序并使用相同后端的网站。

    减轻 (Mitigation)

    Configure CORS headers adequately. Even if an application does not share resources with other applications or domains, you should add CORS headers to every HTTP response.

    充分配置CORS标头 。 即使一个应用程序不与其他应用程序或域共享资源,您也应该在每个HTTP响应中添加CORS标头。

    In a CORS configuration, do only grant access to well-known and trusted origins. Custom HTTP headers must be configured explicitly. Additionally, in the CORS context, the value of the Content-Type header is restricted. We can circumvent this by explicitly allowing the Content-Type header.

    在CORS配置中,请仅授予对知名和可信来源的访问权限。 自定义HTTP标头必须显式配置。 此外,在CORS上下文中, Content-Type标头的值是limited 。 我们可以通过显式允许Content-Type标头来避免这种情况。

    CORS Policies are defined using these HTTP response headers:

    使用以下HTTP响应标头定义CORS策略:

    • Access-Control-Allow-Origin

      Access-Control-Allow-Origin

    • Access-Control-Allow-Methods

      Access-Control-Allow-Methods

    • Access-Control-Allow-Headers: Content-Type

      Access-Control-Allow-Headers: Content-Type

    • Access-Control-Max-Age

      Access-Control-Max-Age

    Please be careful adding these HTTP headers. Return them only if you trust the origin. I suggest using built-in CORS support of application frameworks instead of building it from the ground up.

    请小心添加这些HTTP标头。 仅当您信任来源时才退还它们。 我建议使用对应用程序框架的内置CORS支持,而不是从头开始构建它。

    敏感数据暴露 (Sensitive Data Exposure)

    Rather than directly attacking crypto, attackers steal keys, execute man-in-the-middle attacks, or steal clear text data off the server, while in transit, or from the user’s client, e.g. browser. A manual attack is generally required.owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10–2017_A3-Sensitive_Data_Exposure

    攻击者不是在直接攻击加密货币,而是在传输过程中或从用户的客户端(例如浏览器)窃取密钥,执行中间人攻击或从服务器窃取明文数据。 通常需要手动攻击。 owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10–2017_A3-Sensitive_Data_Exposure

    攻击 (Attack)

    A classic man-in-the-middle-attack allows an attacker to intercept and manipulate unencrypted HTTP messages. Even easier, if customer data is stored or cached on a shared device, i.e., in a public library, it will be available to everyone having access to this device.

    经典的中间人攻击允许攻击者拦截和操纵未加密的HTTP消息。 更简单的是,如果客户数据存储或缓存在共享设备上(即公共图书馆中),则所有访问此设备的人都可以使用。

    减轻 (Mitigation)

    Use HTTPS everywhere and all the time. Period.

    随时随地使用HTTPS 。 期。

    Disable form autocompletion. On your smartphone, your browser has probably already cached your address. That is convenient because you don’t have to fill in your address all the time. But, if it would be a shared device, the automatic completion would expose your address. We can disable autocomplete by adding the attribute autocomplete=off to HTML forms or input tags.

    禁用表单自动完成功能 在智能手机上,您的浏览器可能已经缓存了您的地址。 这很方便,因为您不必一直填写地址。 但是,如果它将是共享设备,则自动完成将公开您的地址。 我们可以通过添加属性autocomplete=off来禁用autocomplete autocomplete=off HTML表单或输入标签

    Disable resource caching by always setting these three response headers.

    通过始终设置这三个响应头来禁用资源缓存

    • Cache-Control: no-cache, no-store, max-age=0, must-revalidate

      Cache-Control: no-cache, no-store, max-age=0, must-revalidate

    • Expires: 0

      Expires: 0

    • Pragma: no-cache

      Pragma: no-cache

    Links to other web pages are a security risk and can leak customer data as well. To prevent this attack called Tabnapping, we need to add an attribute to all HTML links that open new tabs:

    链接到其他网页存在安全风险,并且也可能泄露客户数据。 为了防止这种称为Tabnapping的攻击,我们需要向所有打开新标签页HTML链接添加一个属性

    • rel="nofollow noreferrer"

      rel="nofollow noreferrer"

    使用具有已知漏洞的组件 (Using Components with Known Vulnerabilities)

    Components, such as libraries, frameworks, and other software modules, run with the same privileges as the application. If a vulnerable component is exploited, such an attack can facilitate serious data loss or server takeover. Applications and APIs using components with known vulnerabilities may undermine application defenses and enable various attacks and impacts.https://owasp.org/www-project-top-ten/

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

    Last but not least, using outdated libraries, frameworks, and runtimes with well-known vulnerabilities is risky.

    最后但并非最不重要的一点是,使用具有众所周知漏洞的过时库,框架和运行时是有风险的。

    缓解措施 (Mitigations)

    Keep all parts and dependencies of applications up to date. Package and dependency managers like npm or maven can check and show newer versions of application dependencies.

    保持应用程序的所有部分和依赖项为最新 。 软件包和依赖项管理器(例如npm或maven)可以检查并显示较新版本的应用程序依赖项。

    结论 (Conclusion)

    We do not only deliver value for our customers by adding functionality to our apps. We do also provide value by protecting our customer’s data. And although we have just scratched the surface of web application security, we have identified various ways to decrease risks and improve overall security.

    我们不仅通过向我们的应用程序添加功能来为客户创造价值。 我们也确实通过保护客户的数据来提供价值。 而且,尽管我们刚刚触及了Web应用程序安全性的表面,但是我们已经找到了降低风险和提高整体安全性的各种方法。

    For further information around web application vulnerabilities and more mitigations, please check out the OWASP Top Ten. 🙂

    有关Web应用程序漏洞和更多缓解措施的更多信息,请查看OWASP前十名。 🙂

    Thanks for being here and thank you for reading,Stefan 👋

    感谢您的光临,也感谢您的阅读,Stefan👋

    升级编码 (Level Up Coding)

    Thanks for being a part of our community! Subscribe to our YouTube channel or join the Skilled.dev coding interview course.

    感谢您加入我们的社区! 订阅我们的YouTube频道或参加Skilled.dev编码面试课程

    翻译自: https://levelup.gitconnected.com/6-ways-to-improve-your-web-apps-security-now-164ff76661b8

    web应用程序安全性测试

    展开全文
  • 安全性评测 安全性是软件质量的一个重要属性。...安全性测试的目的是设法设计出一些测试用例,试图突破系统的安全保密措施。比如:①设法截取或破译口令;②专门编制软件以破坏系统的保护机制:③故意导致系...
  • 无线安全测试方法Some businesses probably still employ miles of cabling to connect computers, printers, and other devices and to the Internet, but it’s a method that is quickly becoming outdated, and ...
  • 汽车企业功能安全相关,IOS26262第六章软件测试
  • 为保障国家电网公司系统应用系统安全性...统安全性测试方法》(以下简称《测试方法》) 参照相关标准要求, 提出了满足公司各业务应用运行软 件通用安全要求测试方法。 免费分享给大家,找了好久才找到好东西。
  • 安全性测试方法 ,1. 功能验证 功能验证是采用软件测试当中黑盒测试方法,对涉及安全软件功能,如:用户管理模块,权限管理,加密系统,认证系统等进行测试,主要验证上述功能是否有效。 2. 漏洞扫描 安全漏洞...
  • 测试手段可以进行安全性测试,目前主要安全测试方法有:  1)静态代码安全测试 主要通过对源代码进行安全扫描,根据程序中数据流、控制流、语义等信息与其特有软件安全规则库进行匹对,从中找出代码中潜在安全...
  • 转自:http://blog.csdn.net/u013619689/article/details/72622086http://p.primeton.com/articles/53c64b6ee13823319f0000481. SQL注入文件写入(需要用户验证)解决办法:通过建立过滤器方法,对所有用户输入信息...
  • 随着互联网应用的普及,软件安全性越来越重要,今天我整理了一个软件安全性测试的列表,请大家仔细看看,看看有没有漏项,多给力,给予补充,在此谢过!   主题 项目列表 系统安全性及其...
  • 详细介绍了burp suite professionalg工具使用教程,通过总结网络上其他说明汇总。
  • 在线程代码中,找到对公共变量操作地方。在起后面加入 Sleep(50) 然后制造大量并发,若线程保护不足,必崩溃。 转载于:https://www.cnblogs.com/songr/p/6424147.html...
  • 1.通过设计确保安全设计安全,意味着从一开始就应该将安全性纳入软件设计中。关于安全,其中最常见一个威胁就是恶意字符。我问我朋友罗伯·温奇(Rob Winch)他对删除恶意字符想法。Rob是Spring Security项目...
  • 测试方法: 使用loadrunner(或者http发包模拟器),发送两次完全相同请求,检查服务端返回应答是否完全一样,如果完全一样,则表明存在漏洞。 使用loadrunner(或者http发包模拟器),发送http请求,分别...
  • Web测试常见的安全性测试

    千次阅读 2018-03-12 11:06:33
    Web测试的另一个测试点就是安全性测试,下面总结了一下一些常见的关于安全性方面的测试点与相应的测试方法。1.问题:没有被验证的输入测试方法:(1)数据类型(字符串,整型,实数)(2)允许的字符集(3)最小和...
  • 软件安全性测试主要包括程序、数据库安全性测试。根据系统安全指标不同测试策略也不同。 用户认证安全测试要考虑问题: 1.明确区分系统中不同用户权限 2.系统中会不会出现用户冲突 3.系统会不会因用户权限改变...
  • 安全性测试

    2017-02-13 21:17:00
    安全性测试 一、测试方法 1.静态代码安全测试: 对源代码进行安全扫描 2.动态渗透测试: 使用工具或人工方式模拟输入,比如工具 Hatirx 3.程序数据扫描: IBM AppScan 开源w3af googleskipfish 二、常见漏洞...
  • 自动化测试 测试方法: 编写自动化脚本实现 一劳永逸,加入回归测试集合 ...安全性测试 测试覆盖 敏感数据加密 恶意攻击等 REST API测试步骤 了解接口格式 编写测试用例 测试用例评审 开...

空空如也

空空如也

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

安全性测试的方法