Web安全性测试.docx
- 文档编号:12535518
- 上传时间:2023-04-20
- 格式:DOCX
- 页数:31
- 大小:36.65KB
Web安全性测试.docx
《Web安全性测试.docx》由会员分享,可在线阅读,更多相关《Web安全性测试.docx(31页珍藏版)》请在冰豆网上搜索。
Web安全性测试
安全性测试
安全性测试主要是测试系统在没有授权的内部或者外部用户对系统进行攻击或者恶意破坏时如何进行处理,是否仍能保证数据和页面的安全。
测试人员可以学习一些黑客技术,来对系统进行攻击。
另外,对操作权限的测试也包含在安全性测试中。
具体测试内容如下:
执行添加、删除、修改等动作中是否做过登录检测。
退出系统之后的操作是否可以完成。
所有插入表单操作中输入特殊字符是否可以正常输正常存储,特殊字符为:
!
?
#¥%……—*()~——-+=[]{}、|;:
‘”?
/《》<>,。
在带有参数的回显数据的动作中更改参数,把参数改为特殊字符并加入操作语句看是否出错。
测试表单中有没有做标签检测,标签检测是否完整。
在插入表单中加入特殊的HTML代码,例如:
。
系统安全性测试的十个重要问题
1:
没有被验证的输入
测试方法:
数据类型(字符串,整型,实数,等)
允许的字符集
最小和最大的长度
是否允许空输入
参数是否是必须的
重复是否允许
数值范围
特定的值(枚举型)
特定的模式(正则表达式)
2:
有问题的访问控制
测试方法:
主要用于需要验证用户身份以及权限的页面,复制该页面的url地址,关闭该页面以后,查看是否可以直接进入该复制好的地址;
例:
从一个页面链到另一个页面的间隙可以看到URL地址,直接输入该地址,可以看到自己没有权限的页面信息;
3:
错误的认证和会话管理
分析:
帐号列表:
系统不应该允许用户浏览到网站所有的帐号,如果必须要一个用户列表,推荐使用某种形式的假名(屏幕名)来指向实际的帐号。
浏览器缓存:
认证和会话数据作为GET的一部分来发送
认证和会话数据不应该作为GET的一部分来发送,应该使用POST,
例:
对Grid、Label、Treeview类的输入框未作验证,输入的内容会按照html语法解析出来;
4:
跨站脚本(XSS)
分析:
攻击者使用跨站脚本来发送恶意代码给没有发觉的用户,窃取他机器上的任意资料;
测试方法:
•HTML标签:
<…>……>
•转义字符:
&(&);<(<);>(>); (空格);
•脚本语言:
…Alert(‘’)
•特殊字符:
‘ ’< > /
•最小和最大的长度
•是否允许空输入
例:
对Grid、Label、Treeview类的输入框未作验证,输入的内容会按照html语法解析出来
5:
缓冲区溢出
没有加密关键数据
分析:
用户使用缓冲区溢出来破坏web应用程序的栈,通过发送特别编写的代码到web程序中,攻击者可以让web应用程序来执行任意代码。
例:
view-source:
http地址可以查看源代码
在页面输入密码,页面显示的是*****, 右键,查看源文件就可以看见刚才输入的密码;
6:
注入式漏洞
分析:
用户登录处、不用登录可以查看到的数据库中的数据列表尤为重要。
例:
一个验证用户登陆的页面,如果使用的sql语句为:
Select* from tableAwhere username=’’+username+’’andpassword….
Sql输入
‘or1=1――
就可以不输入任何password进行攻击;
7:
不恰当的异常处理
分析:
程序在抛出异常的时候给出了比较详细的内部错误信息,暴露了不应该显示的执行细节,网站存在潜在漏洞;
8:
不安全的存储
没有加密关键数据
分析:
帐号列表:
系统不应该允许用户浏览到网站所有的帐号,如果必须要一个用户列表,推荐使用某种形式的假名(屏幕名)来指向实际的帐号。
浏览器缓存:
认证和会话数据不应该作为GET的一部分来发送,应该使用POST;
例:
view-source:
http地址可以查看源代码
在页面输入密码,页面不显示“*****”;
在页面输入密码,页面显示的是*****,
数据库中存的密码没有经过加密;
地址栏中可以看到刚才填写的密码;
右键查看源文件就可以看见刚才输入的密码;
9:
拒绝服务
分析:
Config中的链接字符串以及用户信息,邮件,数据存储信息都需要加以保护。
攻击者可以从一个主机产生足够多的流量来耗尽狠多应用程序,最终使程序陷入瘫痪。
需要做负载均衡来对付。
10:
不安全的配置管理
分析:
Config中的链接字符串以及用户信息,邮件,数据存储信息都需要加以保护
程序员应该作的:
配置所有的安全机制,关掉所有不使用的服务,设置角色权限帐号,使用日志和警报。
例:
数据库的帐号是不是默认为“sa”,密码(还有端口号)是不是直接写在配置文件里而没有进行加密。
软件安全测试涉及的方面
2.
用户名和密码
●
是否设置密码最小长度
●
用户名和密码中是否可以有空格或回车?
●
是否允许密码和用户名一致
●
防恶意注册:
可否用自动填表工具自动注册用户?
●
遗忘密码处理
●
有无缺省的超级用户?
●
有无超级密码?
●
是否有校验码?
●
密码错误次数有无限制?
3.
直接输入需要权限的网页地址可以访问
如:
没有登录或注销登录后,直接输入登录后才能查看的页面的网址,能直接打开页面;
注销后,点浏览器上的后退,可以进行操作。
正常登录后,直接输入自己没有权限查看的页面的网址,可以打开页面。
5.
隐藏域与CGI参数
分析:
有此隐藏域中泄露了重要的信息,有时还可以暴露程序原代码。
直接修改CGI参数,就能绕过客户端的验证了。
如:
//XXX/checkout.php"> 只要改变value的值就可能会把程序的原代码显示出来。 6. 上传文件没有限制 分析: 上传文件最好要有格式的限制; 上传文件还要有大小的限制。 7. 把数据验证寄希望于客户端的验证 分析: 客户端是不安全,重要的运算和算法不要在客户端运行。 重要的数据(如: 密码)在客户端应该加密。 例: 保存网页并对网页进行修改,使其绕过客户端的验证。 (如只能选择的下拉框,对输入数据有特殊要求的文本框) 13. 传输中的密码没有加密 分析: 传输中的密码要进行加密。 传输前加密用SSL加密,https的方式提交用户名和密码; 如果使用tomcat做服务器的话,SSL加密只需配置就可以了: TOMCAT用https替换http的方法 ////////////////////////////////////////////////////////////// 首先用java的工具keytool 生成一个ssl证书: keytool -genkey -keyalg RSA -alias youraliasname -keystore .keystore 输入keystore密码: yourpass 您的名字与姓氏是什么? [Unknown]: liubin 您的组织单位名称是什么? [Unknown]: test 您的组织名称是什么? [Unknown]: 您所在的城市或区域名称是什么? [Unknown]: beijing 您所在的州或省份名称是什么? [Unknown]: beijing 该单位的两字母国家代码是什么 [Unknown]: cn CN=liubin, OU=test, O=, L=beijing, ST=beijing, C=cn 正确吗? [否]: y 输入 (如果和 keystore 密码相同,按回车): Web应用系统的安全性测试区域主要有: (1)现在的Web应用系统基本采用先注册,后登陆的方式。 因此,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限制,是否可以不登陆而直接浏览某个页面等。 (2)Web应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。 (3)为了保证Web应用系统的安全性,日志文件是至关重要的。 需要测试相关信息是否写进了日志文件、是否可追踪。 (4)当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性。 (5)服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用。 所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。 我们觉得楼上的象是测试论坛或者需要登陆的网站呢 我就顺着加几条吧: 1。 登陆系统,点击退出系统,或者注销,然后点击IE的退出,看看能否再次登陆,这个对于安全也比较需要,主要测试的是退出系统后,对cok0kies 2。 如果你的系统,客户端比较多,那么就要判断一个用户能否同时在不同的机器上登陆 3。 使用了加密的软件,WEB系统运行后,加密软件异常,包括关闭,退出,此时你的WEb系统安全怎么处理 4。 你的WEB系统的教本信息是否会反应一些你的数据库信息,如,当前页面涉及了你的数据库里的那些表啦,等等。 六、安全测试 Web应用系统的安全性测试区域主要有: 1、目录设置 Web安全的第一步就是正确设置目录。 每个目录下应该有index.html或main.html页面,这样就不会显示该目录下的所有内容。 如果没有执行这条规则。 那么选中一幅图片,单击鼠标右键,找到该图片所在的路径"…com/objects/images"。 然后在浏览器地址栏中手工输入该路径,发现该站点所有图片的列表。 这可能没什么关系。 但是进入下一级目录"…com/objects",点击jackpot。 在该目录下有很多资料,其中有些都是已过期页面。 如果该公司每个月都要更改产品价格信息,并且保存过期页面。 那么只要翻看了一下这些记录,就可以估计他们的边际利润以及他们为了争取一个合同还有多大的降价空间。 如果某个客户在谈判之前查看了这些信息,他们在谈判桌上肯定处于上风。 2.登录 现在的Web应用系统基本采用先注册,后登陆的方式。 因此,必须测试有效和无效的用户名和密码,要注意到是否大小写敏感,可以试多少次的限制,是否可以不登陆而直接浏览某个页面等。 3.Session Web应用系统是否有超时的限制,也就是说,用户登陆后在一定时间内(例如15分钟)没有点击任何页面,是否需要重新登陆才能正常使用。 4.日志文件 为了保证Web应用系统的安全性,日志文件是至关重要的。 需要测试相关信息是否写进了日志文件、是否可追踪。 5.加密 当使用了安全套接字时,还要测试加密是否正确,检查信息的完整性。 6.安全漏洞 服务器端的脚本常常构成安全漏洞,这些漏洞又常常被黑客利用。 所以,还要测试没有经过授权,就不能在服务器端放置和编辑脚本的问题。 目前网络安全问题日益重要,特别对于有交互信息的网站及进行电子商务活动的网站尤其重要。 目前我们的测试没有涵盖网站的安全性的测试,我们拟定采用工具来测定, 工具如下 SAINT-------SecurityAdministrator’sIntegratedNetworkTool 此工具能够测出网站系统的相应的安全问题,并且能够给出安全漏洞的解决方案,不过是一些较为常见的漏洞解决方案。 应用系统安全测试方法及内容 测试内容 测试要点 测试方法 应用系统的用户管理、权限管理应充分利用操作系统和数据库的安全性;应用软件运行时须有完整的日志记录。 日志记录的完整性 检测系统运行时是否会记录完整的日志。 如进行详单查询,检测系统是否会记录相应的操作员、操作时间、系统状态、操作事项、IP地址等。 不允许以明文方式保存用户密码或系统使用的各类密码 用户密码或系统使用的各类密码的加密存储 检查数据库中的用户密码、操作员密码等字段是否是以加密方式保存。 为保证安全性,口令不允许以明码的形式显示在输出设备上,应能对口令进行如下限制: 最小口令长度、强制修改口令的时间间隔、口令的唯一性、口令过期失效后允许入网的宽限次数。 1.口令不允许以明码显示在输出设备上。 2.最小口令长度的限制。 3.强制修改的时间间隔限制。 4.口令的唯一性限制。 5.口令过期失效后允许入网的宽限次数限制 实际登录系统,输入相应的口令,检测口令是否是以加密形式显示,同时检测最小口令长度、强制修改口令的时间间隔、口令的唯一性、口令过期失效后允许入网的宽限次数。 应用系统应支持操作失效时间的配置,当操作员在所配置的时间内没有对界面进行任何操作则该应用自动失效。 1.支持操作失效时间的配置。 2.支持当操作员在所配置的时间内没有对界面进行任何操作则该应用自动失效。 检测系统是否支持操作失效时间的配置,同时达到所配置的时间内没有对界面进行任何操作时,检测系统是否会将用户自动失效,需要重新登录系统。 应用系统应提供完善的审计功能,对系统关键数据的每一次增加、修改和删除都能记录相应的修改时间、操作人和修改前的数据记录。 支持系统关键数据进行维护的记录功能。 检测对系统关键数据进行增加、修改和删除时,系统是否会记录相应的修改时间、操作人员和修改前的数据记录。 应用程序的源代码不允许放在运行主机上,应另行存放,并具有版本控制能力。 1.应用程序的源代码不允许放在运行主机上,应另行存放。 2.版本控制 1.登录主机审查应用程序的源代码存放位置。 2.查看支撑系统版本控制管理办法或相似文件,是否有相应的版本管理规章制度;软件升级、补丁植入流程管理是否合理。 3.查看系统软件版本记录文件及软件介质与软件操作手册,是否有详细的软件版本号、软件升级与补丁植入情况的记录。 各应用软件目录设置及其访问权限应有相应的规范,以保证系统的安全性和可维护性。 各应用软件目录设置及其访问权限应有相应的规范。 审查是否有各应用软件目录设置及其访问权限相应的规范文件。 接口程序连接登录必须进行认证(根据用户名、密码认证) 支持接口程序连接登录时的认证。 实际运行系统,检测接口程序连接登录时,是否需要输入相应的用户名、密码进行认证。 安全性测试 1、功能验证 功能验证是采用软件测试当中的黑盒测试方法,对涉及安全的软件功能,如: 用户管理模块,权限管理模块,加密系统,认证系统等进行测试,主要验证上述功能是否有效,具体方法可使用黑盒测试方法。 2、漏洞扫描 安全漏洞扫描通常都是借助于特定的漏洞扫描器完成的。 漏洞扫描器是一种自动检测远程或本地主机安全性弱点的程序。 通过使用漏洞扫描器,系统管理员能够发现所维护信息系统存在的安全漏洞,从而在信息系统网络安全保卫站中做到“有的放矢”,及时修补漏洞。 按常规标准,可以将漏洞扫描分为两种类型: 主机漏洞扫描器(HostScanner)和网络漏洞扫描器(NetScanner)。 主机漏洞扫描器是指在系统本地运行检测系统漏洞的程序,如著名的COPS、Tripewire、Tiger等自由软件。 网络漏洞扫描器是指基于网络远程检测目标网络和主机系统漏洞的程序,如Satan、ISSInternetScanner等。 安全漏洞扫描是可以用于日常安全防护,同时可以作为对软件产品或信息系统进行测试的手段,可以在安全漏洞造成严重危害前,发现漏洞并加以防范。 3、模拟攻击实验 对于安全测试来说,模拟攻击测试是一组特殊的黑盒测试案例,我们以模拟攻击来验证软件或信息系统的安全防护能力,下面简要列举在数据处理与数据通信环境中特别关心的几种攻击。 在下列各项中,出现了“授权”和“非授权”两个术语。 “授权”意指“授予权力”,包含两层意思: 这里的权力是指进行某种活动的权力(例如访问数据);这样的权力被授予某个实体、代理人或进程。 于是,授权行为就是履行被授予权力(未被撤销)的那些活动。 ●冒充: 就是一个实体假装成一个不同的实体。 冒充常与某些别的主动攻击形式一起使用,特别是消息的重演与篡改。 例如,截获鉴别序列,并在一个有效的鉴别序列使用过一次后再次使用。 特权很少的实体为了得到额外的特权,可能使用冒充成具有这些特权的实体,举例如下。 1)口令猜测: 一旦黑客识别了一台主机,而且发现了基于NetBIOS、Telnet或NFS服务的可利用的用户帐号,并成功地猜测出了口令,就能对机器进行控制。 2)缓冲区溢出: 由于在很多地服务程序中大意的程序员使用类似于“strcpy(),strcat()”不进行有效位检查的函数,最终可能导致恶意用户编写一小段程序来进一步打开安全缺口,然后将该代码放在缓冲区有效载荷末尾,这样,当发生缓冲区溢出时,返回指针指向恶意代码,执行恶意指令,就可以得到系统的控制权。 ●重演: 当一个消息或部分消息为了产生非授权效果而被重复时,出现重演。 例如,一个含有鉴别信息的有效消息可能被另一个实体所重演,目的是鉴别它自己(把它当作其他实体)。 ●消息篡改: 数据所传送的内容被改变而未被发觉,并导致非授权后果,如下所示。 1)DNS高速缓存污染: 由于DNS服务器与其他名称服务器交换信息的时候并不进行身份验证,这就使得黑客可以加入不正确得信息,并把用户引向黑客自己的主机。 2)伪造电子邮件: 由于SMTP并不对邮件发送者的身份进行鉴定,因此黑客可以对内部客户伪造电子邮件,声称是来自某个客户认识并相信的人,并附上可安装的特洛伊木马程序,或者是一个指向恶意网站的链接。 ●服务拒绝: 当一个实体不能执行它的正常功能,或它的动作防碍了别的实体执行它们的正常功能的时候,便发生服务拒绝。 这种攻击可能是一般性的,比如一个实体抑制所有的消息,也可能是有具体目标的。 例如,一个实体抑制所有流向某一特定目的端的消息,如安全审计服务。 这种攻击可以是对通信业务流的抑制,或产生额外的通信业务流。 也可能制造出试图破坏网络操作的消息,特别是如果网络具有中继实体,这些中继实体根据从别的中继实体那里接收到的状态报告,来做出路由选择的决定。 拒绝服务攻击种类很多,举例如下。 1)死亡之ping(pingofdeath): 由于在早期的阶段,路由器对包的最大尺寸都有限制,许多操作系统对TCP/IP栈的实现在ICMP包上都规定为64KB,并且在读取包的标题后,要根据该标题头里包含的信息来为有效载荷生成缓冲区。 当产生畸形的、声称自己的尺寸超过ICMP上限,也就是加载尺寸超过64K上限的包时,就会出现内存分配错误,导致TCP/IP堆栈崩溃,致使接受方宕机。 2)泪滴(Teardorop): 泪滴攻击利用那些在TCP/IP堆栈实现中信任IP碎片中的包的标题头所包含的信息来实现自己的攻击。 IP分段含有指示该分段所包含的是原包的哪一段的信息,某些TCP/IP(包括ServicePack4以前的NT)在收到含有重叠偏移的伪造分段时将崩溃。 3)UDP洪水(UDPFlood): 各种各样的假冒攻击利用简单的TCP/IP服务,如Chargen和Echo来传送毫无用处的数据以占满带宽。 通过伪造与某一主机的Chargen服务之间的一次的UDP连接,回复地址指向开着Echo服务的一台主机,这样就生成在两台主机之间的足够多的无用数据流,如果数据流足够多,就会导致带宽的服务攻击。 4)SYN洪水(SYNFlood): 一些TCP/IP栈的实现,只能等待从有限数量的计算机发来的ACK消息,因为它们只有有限的内存缓冲区用于创建连接,如果这一缓冲区充满了虚假连接的初始信息,该服务器就会对接下来的连接请求停止响应,直到缓冲区里的连接企图超时为止。 在一些创建连接不受限制的实现里,SYN洪水也具有类似的影响。 5)Land攻击: 在Land攻击中,一个特别打造的SYN包的原地址和目标地址都被设置成某一个服务器地址,这将导致接受服务器向它自己的地址发送SYN-ACK消息,结果,这个地址又发回ACK消息并创建一个空连接,每一个这样的连接都将保留,直到超时。 各种系统对Land攻击的反应不同,许多UNIX实现将崩溃,NT变得极其缓慢(大约持续5分钟)。 6)Smurf攻击: 一个简单的Smurf攻击,通过使用将回复地址设置成受害网络的广播地址的ICMP应答请求(ping)数据包,来淹没受害主机的方式进行,最终导致该网络的所有主机都对此ICMP应答请求作出答复,导致网络阻塞,比“PingofDeath”洪水的流量高出一个或两个数量级。 更加复杂的Smurf将源地址改为第三方的受害者,最终导致第三方雪崩。 7)Fraggle攻击: Fraggle攻击对Smurf攻击作了简单的修改,使用的是UDP应答消息,而非ICMP。 8)电子邮件炸弹: 电子邮件炸弹是最古老的匿名攻击之一,通过设置一台机器,不断大量地向同一地址发送电子邮件,攻击者能够耗尽接收者网络的带宽。 9)畸形消息攻击: 各类操作系统上的许多服务都存在此类问题,由于这些服务在处理信息之前没有进行适当正确的错误校验,在收到畸形的信息时可能会崩溃。 ●内部攻击: 当系统的合法用户以非故意或非授权方式进行动作时就成为内部攻击。 多数已知的计算机犯罪都和使系统安全遭受损害的内部攻击有密切的关系。 能用来防止内部攻击的保护方法包括: 所有管理数据流进行加密;利用包括使用强口令在内的多级控制机制和集中管理机制来加强系统的控制能力;为分布在不同场所的业务部门划分VLAN,将数据流隔离在特定部门;利用防火墙为进出网络的用户提供认证功能,提供访问控制保护;使用安全日志记录网络管理数据流等。 ●外部攻击: 外部攻击可以使用的方法有: 搭线(主动的与被动的)、截取辐射、冒充为系统的授权用户、冒充为系统的组成部分、为鉴别或访问控制机制设置旁路等。 ●陷阱门: 当系统的实体受到改变,致使一个攻击者能对命令或对预定的事件或事件序列产生非授权的影响时,其结果就称为陷阱门。 例如,口令的有效性可能被修改,使得除了其正常效力之外也使攻击者的口令生效。 ●特洛伊木马: 对系统而言的特洛伊木马,是指它不但具有自己的授权功能,而且还有非授权功能。 一个向非授权信道拷贝消息的中继就是一个特洛伊木马。 典型的特洛伊木马有NetBus、BackOrifice和BO2k等。 4、侦听技术 侦听技术实际上是在数据通信或数据交互过程,对数据进行截取分析的过程。 目前最为流行的是网络数据包的捕获技术,通常我们称为Capture,黑客可以利用该项技术实现数据的盗用,而测试人员同样可以利用该项技术实现安全测试。 该项技术主要用于对网络加密的验证。 安全性测试 安全性测试是有关验证应用程序的安全服务和识别潜在安
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Web 安全性 测试