web安全性测试
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
18
面向web的数据编码
数据编码是web应用的一项基本组成部分。 Web应用以无数种方法在浏览器和服务器之间传 递数据。根据数据类型、系统需求和编程人员 的特定喜好,数据可能以多种不同的格式进行 编码和封装。 作为测试人员,需要进行边界案例测试并处 理那些有趣案例的反面测试,但是如果你不了 解数据的格式和用途,你就无法判断什么是 “有趣的”。如果你不了解输入的结构,就很 难系统地生成边界值和测试数据。 那么常用的编码是什么而又如何识别他们呢?
5
目标与对象
• 目标
我们的目标是找出源代码本身的缺陷,生 成与整体测试方案融为一体的、可重复的、 可靠的测试,不过它们是用于处理Web应用 安全的。
• 对象
我们的测试对象是由你编写,由你操作或 者至少由你测试的软件——源代码,业务逻 辑。我们不考虑防火墙、路由器或者IT安全 软件的作用。
6
用于安全测试的工具介绍
4
Web应用安全测试
通过功能测试,我们设法向用户证明这个软 件可以像宣传的那样正常工作。通过安全测试, 我们设法使每个人确信,即使面临恶意输入, 它仍然可以想宣传的那样正常工作。我们设法 模拟真实的攻击和真实的漏洞,同时用这些模 拟与我们有限的测试融为一体。 因而,Web安全测试就是使用多种工具,包 括手动工具和自动工具,来模拟和激发我们的 Web应用活动。
• cURL
它是一个命令行程序,支持许多Web协议组件。 可以在没有浏览器的时候当做浏览器使用;市现 率列私语浏览器的功能,但是可以从任何普通的 shell中调用它。更好地处理cookie、认证和web 协议。 9
用于安全测试的工具介绍
• Pornzilla
它是一套有用的Firefox小书签和扩展,提供 了大量方便的有助于web安全测试的工具。如 RefSpoof修改HTTP Referer信息,或许能绕过 不安全的登录机制;Digger是一个目录遍历工具; Increment和Decrement篡改url参数。
基本观察
• 使用firebug观察实时的请求头
通过观察实时的请求头可以精确的了解基于 web 的客户端访问的是哪些页面、服务器和操 作。了解客户端访问的内容也能揭示出具有潜 在危险的依赖。 浏览器发出请求,服务器考虑该请求然后做 出回应。事实上尽管你只请求了一个页面,但 浏览器却代表你发送了许多请求,这些额外的 请求用于获取页面上的要素,如图形或样式表。 广泛依赖外部资源是一个警示信号。请求url 还将所有信息包含在查询字符串中,以来查询 字符串的正确性也可能是安全错误。 常见的请求头变量有host、user-agent、 13 accept、connection等。
• OWASP的WebScarab
它是用于测试web应用安全的一款流行的web 代理。Web代理对于截获浏览器和服务器之间的 请求和响应来说非常重要。它的安装需要最新 版的java运行时环境。 7
用于安全测试的工具介绍
• Perl
他内部集成了正则表达式的功能,以及巨大 的第三方代码库CPAN。被认为是编程语言的胶带。 非常有助于安全测试用例的自动化。AcitvePerl 带有Perl Manager工具,供浏览、下载和安装软 件包。
• Firebug
对于测试web应用而言,firebug是最有用的 firefox扩展。Firebug是web开发和测试工具中 的“瑞士军刀”。它允许你跟踪和调整每一行 html、javascript和文档对象模型。它会报告 ajax请求,告诉你载入页面需要的时间并允许 你实时编辑网页。但是他无法将更改的内容保 存至服务器。
• Apache http server
是一个开源的web服务器,一些高级的跨站式 脚本漏洞攻击程序以及测试php包含文件注入需 搭建web服务器。它在运行时,它所掌管的文件 可以被任何能够向你的系统发送数据包的人访问, 11 不适用它时,最好将其关闭。
基本观察
• 查看源代码
有两项作用;发现最明显的安全问题;为将 来的测试建立一个比较基准。最常见的web漏 洞涉及到向web应用提供恶意输入以修改html 源代码,在测试这些漏洞时,验证测试通过或 失败最简单的方法就是检查源代码是否被恶意 更改。 对于更复杂的源代码无法手动分析,需要使 用view source chart来应对这种复杂性的增加。 它可以讲html标签显示在层层嵌套的框中,还 可以暂时将其隐藏并禁止搜索。可以查看框架 元素的html代码,操控框架是一种常见的跨展 示脚本攻击模式。 12
16
基本观察
• 高亮显示javascript和注释
查找漏洞的方法是从html代码中查看某些被 留下的线索,而这类线索主要来源于开发人员留 下的注释和javascript在线动态行为。 注释通常会暴露有关web应用内部工作方式 的详细信息;本地的javascript可以被用户绕过 或操纵,开发人员期望由网页浏览器来净化数据, 测试人员需要确定它们也能保护服务器上的应用。 最流行的javascript事件包括onclick, onmouseover,onblur,onload,onsubmit, 它们通常位于<body>、<form>、<select>、 <img>标签中。
17
基本观察
• 修改特定的元素属性
如果你可以在浏览器中实时的修改页面,那 么你就无需向应用本身添加测试代码。开发人员 通常信任网页的内容保持变,而违反这一假定可 以揭示出安全缺陷。 可以使用firebug编辑页面。 实时地编辑页面有优势也有劣势。如果你刷 新或浏览到其他页面,更改将丢失。它的好处在 于你的测试不需要更改基本代码,而且不会干扰 后续测试;劣势在于,对于再次运行同一测试而 言,无法在firebug中保存这些编辑。
谢谢大家!
22
基本观察
• 使用webscarab观察实时的post 数据
Post请求是用于提交复杂表单最常见的方法。 它不同于get取值那样透过url来得知传递参数。 它能够帮助你辨别输入,包括隐藏域和由运行在 网页浏览器中的javascript计算得到的值。了解 各种各样的输入类型之后就能够构造合适的安全 测试用例或误用案例。 Webscarab作为代理能够揭示在你的浏览器 和web服务器之间所有可以被看到的内容。它会 保持纪录,直到被关闭。使用webscarab,可以 观察并更改web服务器发送给你的一切内容。
• Cygwin
它使你能够在windows中使用linux环境,也 是安装其他工具的必要前提。它缺乏与分区的、 双启动环境或虚拟机有关的保护措施,可以访问 所有文件和文件夹,可以修改这些文件,而且操 作可能是不可取消的。 10
用于安全测试的工具介绍
• Nikto 2
它是使用最广泛的、开源的、可免费获取的 web漏洞扫描程序之一。实际上是一个Perl脚本, 需要在cygwin中运行。它可以作为已经编写好的 自动化脚本,但是它可能无法发现大多数缺陷, 就算发现了问题也可能不是问题,需要对其结果 进行研究并判断找到的东西是否有用。
Web安全性测试
1
基本概念
• 什么是安全测试
பைடு நூலகம்
• 什么是Web应用
• Web应用安全测试
2
什么是安全测试?
我们遵循普通用户所采取的方法来测试应用的 功能。如果我们不确定与其行为是什么,通常也 会通过询问别人、阅读需求或者使用我们的直觉 的方法知道。负面测试遵循一些从正面测试中自 然而直接地获取的原则。我们知道银行的存款不 应该是负值;密码不应该是1MB的JPEG图片;电话 号码中不应该包含字母。随着我们对应用进行并 建立起正面的功能测试,建立反面测试就自然而 然成为下一步。这与安全测试有什么关系? 安全测试就是要提供证据表明,在面对敌意和 恶意输入的时候,应用仍然能够充分地满足他的 需求。
14
基本观察
• 查看隐藏的表单域
开发人员有一些不希望被修改的参数会写在 隐藏表单域中,这些域在所呈现的页面上是不可 见的,但是在页面提交时却提供了附加的数据。 Webscarab会将这些隐藏表单域与其他所有 内容一同获取。对于测试人员而言,在界定将哪 些输入作为边界值测试和等价类划分的候选对象 时,也应该把隐藏域包含进来。 不过有些隐藏值是由网页中的javascript计 算得到的,一次你手动输入的值有可能会在表单 被提交之前被覆盖,如果这样的话就需要截获或 修改请求。后续章节介绍。
15
基本观察
• 观察实时的响应头
响应头是在服务器发送页面的html代码之前, 从服务器发送到浏览器的,包含服务器希望的通 信方式,页面类型,如截止日期和内容类型这样 的元数据。 响应头是攻击者用于查找应用特有信息的地方。 请特别注意content-type头信息,大多数显示 表示正常的HTML响应和编码,不过它也可能引用 外部应用或引起一场的浏览器行为。 动态重定向可能会被攻击者用来将恶意网站的 链接伪装成你的网站的链接,滥用用户对你的网 站的信任。
19
面向web的数据编码
• • • • • • • 十六进制(base-16) 八进制(base-8) Base-36 Base-64 以url方式编码的数据 Html实体数据 散列值
20
内容回顾
• • • • • 基本概念 目标与对象 用于安全测试的工具介绍 基本观察 面向web的数据编码
21
• CAL9000
CAL9000将许多安全工具集成在一个软件包中, 是典型的黑客工具。有助于确定各种类型的测试 和对这些测试的执行。它的安全是无法保证的, 如果使用不当,它会是非常危险的工具。
8
用于安全测试的工具介绍
• ViewState Decoder
使用ASP.NET编写的Web应用回事每个页面都 包含一个称作ViewState的隐藏变量。为了给本 来无状态的HTTP请求增加状态,这个变量维护者 请求之间的数据。ViewState Decoder是Windows 可执行文件,可检查开发人员的工作站。
3
什么是Web应用
Web应用具有各种各样的形式和规模。他们 用各种语言编写,运行在各种操作系统上,已 各种方式运行。每种Web应用的核心在于,它的 所有功能都是使用http进行通信的,而它的结 果通常是采用html格式。输入是使用get、post 及类似方法进行通信的。 Web应用是一切使用http进行通信的软件。 注意,要成为Web应用,必须执行某种业务 逻辑,输出中必须存在某种可能的变化,必须 做出一些判断,否则我们实际上并不是在测试 软件。
面向web的数据编码
数据编码是web应用的一项基本组成部分。 Web应用以无数种方法在浏览器和服务器之间传 递数据。根据数据类型、系统需求和编程人员 的特定喜好,数据可能以多种不同的格式进行 编码和封装。 作为测试人员,需要进行边界案例测试并处 理那些有趣案例的反面测试,但是如果你不了 解数据的格式和用途,你就无法判断什么是 “有趣的”。如果你不了解输入的结构,就很 难系统地生成边界值和测试数据。 那么常用的编码是什么而又如何识别他们呢?
5
目标与对象
• 目标
我们的目标是找出源代码本身的缺陷,生 成与整体测试方案融为一体的、可重复的、 可靠的测试,不过它们是用于处理Web应用 安全的。
• 对象
我们的测试对象是由你编写,由你操作或 者至少由你测试的软件——源代码,业务逻 辑。我们不考虑防火墙、路由器或者IT安全 软件的作用。
6
用于安全测试的工具介绍
4
Web应用安全测试
通过功能测试,我们设法向用户证明这个软 件可以像宣传的那样正常工作。通过安全测试, 我们设法使每个人确信,即使面临恶意输入, 它仍然可以想宣传的那样正常工作。我们设法 模拟真实的攻击和真实的漏洞,同时用这些模 拟与我们有限的测试融为一体。 因而,Web安全测试就是使用多种工具,包 括手动工具和自动工具,来模拟和激发我们的 Web应用活动。
• cURL
它是一个命令行程序,支持许多Web协议组件。 可以在没有浏览器的时候当做浏览器使用;市现 率列私语浏览器的功能,但是可以从任何普通的 shell中调用它。更好地处理cookie、认证和web 协议。 9
用于安全测试的工具介绍
• Pornzilla
它是一套有用的Firefox小书签和扩展,提供 了大量方便的有助于web安全测试的工具。如 RefSpoof修改HTTP Referer信息,或许能绕过 不安全的登录机制;Digger是一个目录遍历工具; Increment和Decrement篡改url参数。
基本观察
• 使用firebug观察实时的请求头
通过观察实时的请求头可以精确的了解基于 web 的客户端访问的是哪些页面、服务器和操 作。了解客户端访问的内容也能揭示出具有潜 在危险的依赖。 浏览器发出请求,服务器考虑该请求然后做 出回应。事实上尽管你只请求了一个页面,但 浏览器却代表你发送了许多请求,这些额外的 请求用于获取页面上的要素,如图形或样式表。 广泛依赖外部资源是一个警示信号。请求url 还将所有信息包含在查询字符串中,以来查询 字符串的正确性也可能是安全错误。 常见的请求头变量有host、user-agent、 13 accept、connection等。
• OWASP的WebScarab
它是用于测试web应用安全的一款流行的web 代理。Web代理对于截获浏览器和服务器之间的 请求和响应来说非常重要。它的安装需要最新 版的java运行时环境。 7
用于安全测试的工具介绍
• Perl
他内部集成了正则表达式的功能,以及巨大 的第三方代码库CPAN。被认为是编程语言的胶带。 非常有助于安全测试用例的自动化。AcitvePerl 带有Perl Manager工具,供浏览、下载和安装软 件包。
• Firebug
对于测试web应用而言,firebug是最有用的 firefox扩展。Firebug是web开发和测试工具中 的“瑞士军刀”。它允许你跟踪和调整每一行 html、javascript和文档对象模型。它会报告 ajax请求,告诉你载入页面需要的时间并允许 你实时编辑网页。但是他无法将更改的内容保 存至服务器。
• Apache http server
是一个开源的web服务器,一些高级的跨站式 脚本漏洞攻击程序以及测试php包含文件注入需 搭建web服务器。它在运行时,它所掌管的文件 可以被任何能够向你的系统发送数据包的人访问, 11 不适用它时,最好将其关闭。
基本观察
• 查看源代码
有两项作用;发现最明显的安全问题;为将 来的测试建立一个比较基准。最常见的web漏 洞涉及到向web应用提供恶意输入以修改html 源代码,在测试这些漏洞时,验证测试通过或 失败最简单的方法就是检查源代码是否被恶意 更改。 对于更复杂的源代码无法手动分析,需要使 用view source chart来应对这种复杂性的增加。 它可以讲html标签显示在层层嵌套的框中,还 可以暂时将其隐藏并禁止搜索。可以查看框架 元素的html代码,操控框架是一种常见的跨展 示脚本攻击模式。 12
16
基本观察
• 高亮显示javascript和注释
查找漏洞的方法是从html代码中查看某些被 留下的线索,而这类线索主要来源于开发人员留 下的注释和javascript在线动态行为。 注释通常会暴露有关web应用内部工作方式 的详细信息;本地的javascript可以被用户绕过 或操纵,开发人员期望由网页浏览器来净化数据, 测试人员需要确定它们也能保护服务器上的应用。 最流行的javascript事件包括onclick, onmouseover,onblur,onload,onsubmit, 它们通常位于<body>、<form>、<select>、 <img>标签中。
17
基本观察
• 修改特定的元素属性
如果你可以在浏览器中实时的修改页面,那 么你就无需向应用本身添加测试代码。开发人员 通常信任网页的内容保持变,而违反这一假定可 以揭示出安全缺陷。 可以使用firebug编辑页面。 实时地编辑页面有优势也有劣势。如果你刷 新或浏览到其他页面,更改将丢失。它的好处在 于你的测试不需要更改基本代码,而且不会干扰 后续测试;劣势在于,对于再次运行同一测试而 言,无法在firebug中保存这些编辑。
谢谢大家!
22
基本观察
• 使用webscarab观察实时的post 数据
Post请求是用于提交复杂表单最常见的方法。 它不同于get取值那样透过url来得知传递参数。 它能够帮助你辨别输入,包括隐藏域和由运行在 网页浏览器中的javascript计算得到的值。了解 各种各样的输入类型之后就能够构造合适的安全 测试用例或误用案例。 Webscarab作为代理能够揭示在你的浏览器 和web服务器之间所有可以被看到的内容。它会 保持纪录,直到被关闭。使用webscarab,可以 观察并更改web服务器发送给你的一切内容。
• Cygwin
它使你能够在windows中使用linux环境,也 是安装其他工具的必要前提。它缺乏与分区的、 双启动环境或虚拟机有关的保护措施,可以访问 所有文件和文件夹,可以修改这些文件,而且操 作可能是不可取消的。 10
用于安全测试的工具介绍
• Nikto 2
它是使用最广泛的、开源的、可免费获取的 web漏洞扫描程序之一。实际上是一个Perl脚本, 需要在cygwin中运行。它可以作为已经编写好的 自动化脚本,但是它可能无法发现大多数缺陷, 就算发现了问题也可能不是问题,需要对其结果 进行研究并判断找到的东西是否有用。
Web安全性测试
1
基本概念
• 什么是安全测试
பைடு நூலகம்
• 什么是Web应用
• Web应用安全测试
2
什么是安全测试?
我们遵循普通用户所采取的方法来测试应用的 功能。如果我们不确定与其行为是什么,通常也 会通过询问别人、阅读需求或者使用我们的直觉 的方法知道。负面测试遵循一些从正面测试中自 然而直接地获取的原则。我们知道银行的存款不 应该是负值;密码不应该是1MB的JPEG图片;电话 号码中不应该包含字母。随着我们对应用进行并 建立起正面的功能测试,建立反面测试就自然而 然成为下一步。这与安全测试有什么关系? 安全测试就是要提供证据表明,在面对敌意和 恶意输入的时候,应用仍然能够充分地满足他的 需求。
14
基本观察
• 查看隐藏的表单域
开发人员有一些不希望被修改的参数会写在 隐藏表单域中,这些域在所呈现的页面上是不可 见的,但是在页面提交时却提供了附加的数据。 Webscarab会将这些隐藏表单域与其他所有 内容一同获取。对于测试人员而言,在界定将哪 些输入作为边界值测试和等价类划分的候选对象 时,也应该把隐藏域包含进来。 不过有些隐藏值是由网页中的javascript计 算得到的,一次你手动输入的值有可能会在表单 被提交之前被覆盖,如果这样的话就需要截获或 修改请求。后续章节介绍。
15
基本观察
• 观察实时的响应头
响应头是在服务器发送页面的html代码之前, 从服务器发送到浏览器的,包含服务器希望的通 信方式,页面类型,如截止日期和内容类型这样 的元数据。 响应头是攻击者用于查找应用特有信息的地方。 请特别注意content-type头信息,大多数显示 表示正常的HTML响应和编码,不过它也可能引用 外部应用或引起一场的浏览器行为。 动态重定向可能会被攻击者用来将恶意网站的 链接伪装成你的网站的链接,滥用用户对你的网 站的信任。
19
面向web的数据编码
• • • • • • • 十六进制(base-16) 八进制(base-8) Base-36 Base-64 以url方式编码的数据 Html实体数据 散列值
20
内容回顾
• • • • • 基本概念 目标与对象 用于安全测试的工具介绍 基本观察 面向web的数据编码
21
• CAL9000
CAL9000将许多安全工具集成在一个软件包中, 是典型的黑客工具。有助于确定各种类型的测试 和对这些测试的执行。它的安全是无法保证的, 如果使用不当,它会是非常危险的工具。
8
用于安全测试的工具介绍
• ViewState Decoder
使用ASP.NET编写的Web应用回事每个页面都 包含一个称作ViewState的隐藏变量。为了给本 来无状态的HTTP请求增加状态,这个变量维护者 请求之间的数据。ViewState Decoder是Windows 可执行文件,可检查开发人员的工作站。
3
什么是Web应用
Web应用具有各种各样的形式和规模。他们 用各种语言编写,运行在各种操作系统上,已 各种方式运行。每种Web应用的核心在于,它的 所有功能都是使用http进行通信的,而它的结 果通常是采用html格式。输入是使用get、post 及类似方法进行通信的。 Web应用是一切使用http进行通信的软件。 注意,要成为Web应用,必须执行某种业务 逻辑,输出中必须存在某种可能的变化,必须 做出一些判断,否则我们实际上并不是在测试 软件。