软件测试笔记(1)

HTTP协议:
HTTP是一个应用层协议,由请求和响应构成,是一个标准的客户端服务器模型。HTTP是一个无状态的协议。

get 和 post 对比
get :效率高、提交数据显示在url、安全性低 、大小有限制
post :效率低、提交数据在请求体上 、安全性高、原则上由限制

Cookie :
Cookie数据存放在客户端的浏览器上
Cookie数据是由浏览器按照一定的原则在后台自动发送给服务器
单个Cookie在客户端的限制是3k , 就是说一个站点在客户端存放的Cookie不能超过3k

Session:
Session是服务器端机制
Session数据存储在服务端
Session有一个超时的时间(默认是30分钟)

Cookie和Session的区别与联系
Cookie是客户端机制,Session服务端机制
客户端发送请求时,会发送一个SessionId , 服务器端通过
SessionId来区分不同的客户端,SessionId由可以存储在客户端的Cookie中

cookie和session类似于超市的会员卡
超市给了客户一张会员卡,上面写着一共消费了几次
超市给了客户一个会员卡,上面只有ID号,具体消费记录都在超市电脑中记载

什么是SQL注入
所谓SQL注入,就是通过把SQL命令插入到WEB表单递交或输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令,比如先前的很多影视网站泄露VIP会员密码大多就是通过WEB表单递交查询字符爆出的,这类表单特别容易受到SQL注入式攻击

如何进行SQL注入
1. 首先找到带有参数传递的URL页面,如搜索页面,登陆页面,提交评论页面等等。对于未明显标识在URL中传递参数的,可以通过查看HTML源代码中的FROM标签来辨别是否还有参数传递在<from>和</from>的标签中间的每一个参数传递都有可能被利用

<form id="form_search" action="/search/" method="get">
<div>
<input type="text" name="q" id="search_q" value="" />
<input name="search" type="image" src="/media/images/site/search_btn.gif" />
<a href="/search/" class="fl">Gamefinder</a>
</div>
</form>

当你找不到有输入行为的页面时,可以尝试找一些带有某些参数的特殊的URL,如http://domain/index.asp?id=10
2. 其次在URL参数或表单中加入某些特殊的SQL语句或SQL片段,如在登陆页面的URL中输入http://domain/index.asp?username=admin’ or 1=1–
注 1:根据实际情况SQL注入请求可以使用以下语句
’ or 1=1- -
” or 1=1- -
or 1=1- -
’ or ‘a’=’a
” or “a”=”a
‘) or (‘a’=’a
例子:在登陆时进行身份验证时,通常使用如下语句来进行验证:sql=select *from user where username=’username’ and pwd=’password’
如输入http://duck/index.asp?username=admin‘or 1=’1&pwd=11 , SQL语句会变成以下:
sql=select * from user where username=’admin’ or 1=’1’ and password=’11’
’ 与admin前面的 ’ 组成了一个查询条件,即username=’admin’ 接下来的语句将按下一个查询条件来执行。
接下来是OR查询条件,OR是一个逻辑运算符,在判断多个条件的时候只要一个成立则等式就成立,后面的AND就不再进行判断了,也就是说我们绕过了密码验证,我们只用了用户名就可以登录。
如 输入http://duck/index.asp?username=admin‘–&pwd=11,SQL语 句会变成以下sql=select * from user where name=’admin’ –’ and pasword=’11’ 。’ 与admin前面的 ’ 组成了一个查询条件 ,即username=’admin’ ,接下来的语句将按下一个查询条件来执行。
接下来是”–” 查询条件,”–”是忽略或注释 。这个通过连接符注释掉后面的密码验证(注:对ACCESS数据库无效)。
最后验证是否能入侵成功或是出错的信息是否包含关于数据库服务器的相关信息,如果能,说明存在SQL安全漏洞 。
试想如果网站存在SQL注入的危险,对于有经验的恶意用户还可能猜出数据库表和表结构,并对数据库表进行增删改的操作 ,这样造成的后果是非常严重的。

XSS( 跨站点脚本攻击 )
XSS又叫CSS ( Cross Site Script ) , 跨站脚本攻击 。它指的是恶意攻击者往WEB页面里插入恶意HTML代码,当用户浏览该页之时,嵌入其中WEB里面的HTML代码会被执行,从而达到恶意攻击用户的特殊目的。XSS属于被动式攻击,因为其被动且不好利用,所以许多人常忽略其危害性。

如何进行XSS测试:
首先找到带有参数传递的URL , 如登陆页面,搜索页面,提交评论,发表留言等页面。其次在页面参数中输入如下语句(如::Javascrīpt,VB scrīpt, HTML,ActiveX, Flash)来进行测试,如下代码:<scrīpt>alert(document.cookie)</scrīpt>
最后当用户浏览时便会弹出一个警告框,内容显示的是浏览者当前cookie串,这就说明该网站存在XSS漏洞。试想如果我们注入的不是以上这个简单的测试代码,而是一段精心设计的恶意脚本,当用户浏览此帖时,cookie信息就可能成功的被攻击者获取。此时浏览者的账号就很容易被攻击者掌控了。

如何预防XSS漏洞:
从应用程序的角度来讲,要进行以下几项预防:
1. 对Javascript,VB script , HTML , ActiveX , Flash等 语句或脚本进行转义。
2. 在服务端正式处理之前提交数据的合法性 (合法性检查主要包括三项:数据类型,数据长度,敏感字符的校验)进行检查等。最根本的解决手段,在确认客户端的输入合法之前,服务端拒绝进行关键性的处理操作。
3. 从测试人员的角度来讲,要从需求检查和执行测试过程两个阶段来完成XSS检查:
在需求检查过程中对各输入项或输出项进行类型,长度以及取值范围进行验证,着重验证是否对HTML或脚本代码进行了转义。
执行测试过程中也应对上述项进行检查 。

Email Header Injection(邮件标头注入)
Email Header Injection:如果表单用于发送email,表单中可能包括“subject”输入项(邮件标题),我们要验证subject中应能escape掉“\n”标识。因为“\n”是换行,如果在subject中输入“hello\ncc:spamvictim@example.com” 可能会形成以下:

Subject: hello
cc: spamvictim@example.com

如果允许用户使用这样的subject,那他可能会给利用这个缺陷通过我们的平台给其他用户发送垃圾邮件。

Directory Traversal ( 目录遍历 )
什么是目录遍历?
许多的Web应用程序一般会有对服务器的文件读取查看的功能,大多会用到提交的参数来指明文件名,形如:http://www.zelinonline.com/getfile=image.jpg 当服务器处理传送过来的image.jpg文件名后,Web应用程序即会自动添加完整路径,形如“d://site/images/image.jpg”,
将读取的内容返回给访问者。初看,在只是文件交互的一种简单的过程,但是由于文件名可以任意改而服务器支持“~/”,“/..” 等特殊符号的目录回溯,从而使攻击者越权访问或者覆盖敏感数据,如网站的配置文件、系统的核心文件,这样的缺陷被命名为路径遍历漏洞。在检查一些常规的Web的应用程序时,也常常有发现,只是相对隐蔽而已

发现路径遍历漏洞
路径遍历漏洞的发现,主要是对Web应用程序的文件读取交互的功能块,进行检测,面对这样的读取方式:
“http://www. zelinonline.com/test/downfile.jsp?filename=fan.pdf”
我们可以使用“../”来作试探,比如提交Url:“getfile=/fan/fan/*53.pdf”,而系统在解析是“d://site/test/pdf/fan/fan/../../*53.pdf”,通过“../”跳转目录“/fan”,即
“d://site/test/pdf/*53.pdf”,返回了读取文件的正常的页面。
路径遍历漏洞隐藏一般在文件读取或者展示图片功能块这样的通过参数提交上来的文件名,从这可以看出来过滤交互数据是完全有必要的,恶意攻击者当然会利用对文件的读取权限进行跨越目录访问,比如访问一些受控制的文件“../../../../../../../etc/passwd”或者“../../../../boot.ini”当然现在部分网站都有类似防护程序,只要在数据中会有/etc /boot.ini 等文件名就直接进行拦截

如何进行目录遍历测试?
目录遍历产生的原因是:程序中没有过滤用户输入的“ ../ ”和“ ./ ”之类的目录跳转符,导致恶意用户可以通过提交目录跳转来遍历服务器上的任意文件。
测试方法:在URL中输入一定数量的“ ../ ”和“ ./ ”,验证系统是否ESCAPE掉了这些目录跳转符。

如何预防目录遍历
1. 限制WEB应用在服务器上的运行
2. 进行严格的输入验证,控制用户输入非法路径

exposed error messages(错误信息)
如何进行测试
首先找到一些错误页面,比如404,或者500页面。
验证在调试未开通过的情况下,是否给出了友好的错误提示信息比如“你访问的页面不存在”等,而并非暴露一些程序代码。

如何预防
测试人员在进行需求检查时,应该对出错信息,进行详细查,比如是否给出了出错信息,是否给出了正确的出错信息

Cookie欺骗
什么是Cookie欺骗?
Cookie欺骗是常见的攻击网站方式,所谓Cookie欺骗,就是将别人的Cookie向服务器提交,冒充别人的身份登录网站。
Cookie欺骗原理
Cookie欺骗原理,按照浏览器的约定,只有来自同一域名的cookie才可以读写,而cookie只是浏览器的,对通讯协议无影响,所以要进行cookie欺骗可以有多种途径:
1. 跳过浏览器,直接对通讯数据改写
2. 修改浏览器,让浏览器从本地可以读取任意域名cookie
3. 使用签名脚本,让浏览器从本地可以读写任意域名cookie ( 有安全问题 )
4. 欺骗浏览器,让浏览器获得假的域名

Cookie欺骗实例
利用Cookie欺骗实现无限上传在百度或google中搜索“动网论坛”找到一个动网论坛,打开该论坛注册一个会员名,随之你的硬盘上就会生成一个Cookie文件,以后登录论坛智能只能上传5个文件,如果你想上传无限个文件 就可以删除本地硬盘中的Cookie , 因为会员上传文件的数量保存在Cookie中,删除之即可重新上传5个文件,操作步骤:
启动IE,点击菜单“工具”/Internet选项,在“常规”选项卡中点“删除Cookies”,删除本地Cookie ,然后刷新论坛,此时会看到你的登陆无效,需要重新登陆;接下来重新登陆,然后你又可以再上传5个文件了,如此循环进行删除Cookie、上传文件操作,这样即可实现无限上传,估计要不了多久论坛空间就会被你撑破的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值