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