Web安全测试指南--会话管理

会话复杂度:

编号

Web_ Sess_01

用例名称

会话复杂度测试

用例描述

测试目标系统产生的session id是否具备足够的复杂度。

严重级别

前置条件

1、  目标系统使用登录会话机制。

2、  目标web应用可访问,业务正常运行。

3、  已安装http拦截代理(burpfiddlerwebscarab均可)。

执行步骤

1、  开启burp,设置对http请求进行拦截,并在浏览器中配置代理。

2、  打开目标系统的登录页面,使用正确的用户名和密码提交登录,比如:

POST /login.php HTTP/1.1  #登录请求

Host: www.example.com

[other HTTP headers]

username=admin&password=123456

3、  burp拦截到的登录请求转入burp sequencer

4、  使用burp sequencer向目标系统快速大量地提交登录请求以获得批量session id,并将得到的session id保存到本地。

5、  使用文本编辑器打开保存session id的文件。

6、  检查所有session id的长度。

7、  检查所有session id的构成。

预期结果

1、  所有的session id的字符串长度都大于等于16

2、  所有session id都由数字、普通小写字符、普通大写字符和特殊字符中的2种组合而成。比如:6p331epl5hjserrcbrg5lgmhi6

测试结果

 

备注

1、  关于burp sequencer的使用,请参考《常见安全工具使用指南》。

2、  用于分析的token数量建议至少100个以上。

3、  Session id只是所有会话标记的统称,不同系统会话标记名称可能不一样,比如:jssessionidsidDDNSCOOKIE等。

 

5.3.2、会话预测:

编号

Web_ Sess_02

用例名称

会话可预测性测试

用例描述

测试session id是否可以进行预测。

严重级别

前置条件

1、  目标系统使用登录会话机制。

2、  目标web应用可访问,业务正常运行。

3、  已安装http拦截代理(burpfiddlerwebscarab均可)。

执行步骤

1、  开启burp,设置对http请求进行拦截,并在浏览器中配置代理。

2、  打开目标系统的登录页面,使用正确的用户名和密码提交登录,比如:

POST /login.php HTTP/1.1  #登录请求

Host: www.example.com

[other HTTP headers]

username=admin&password=123456

3、  burp拦截到的登录请求转入burp sequencer

4、  使用burp sequencer向目标系统快速大量地提交登录请求以获得批量session id,并将得到的session id保存到本地。

5、  使用文本编辑器打开保存session id的文件。

6、  检查产生的token是否存在静态不变的部分,比如:

8d2pv839pgopg9q53lpb7qb7r5

8d2pv839v581o45rkhcg7qb7r5

7、  检查产生的token是否存在可预测的部分,比如:

5id92rgqhkvb1vtsic18075997

qnplhr8frbah41n9s028075998

 

jtqm4mi1i8r0r4fae138075999

8、  token中静态不变以及可预测的部分删除,检查剩余部分是否满足会话复杂度要求(参考用例:“会话复杂度”)。

预期结果

删除静态和可预测部分后的Session id满足会话复杂度要求。

测试结果

 

备注

1、  关于burp sequencer的使用,请参考《常见安全工具使用指南》。

2、  用于分析的token数量建议至少100个以上。

5.3.3、会话定置:

编号

Web_Sess_03

用例名称

会话定置测试

用例描述

测试用户成功后目标系统是否会更新会话标记(比如:session id)。

严重级别

前置条件

1、  目标系统使用登录会话机制。

2、  目标web应用可访问,业务正常运行。

3、  已安装http拦截代理(burpfiddlerwebscarab均可)。

执行步骤

1、  开启burp,设置对http请求进行拦截,并在浏览器中配置代理。

2、  打开目标系统的登录页面,使用正确的用户名和密码提交登录。

3、  burp拦截到的http请求中检查是否存在会话标记(比如:session id),如果存在则记录下来,如果没有则测试结束(通过),比如:

POST /login.php HTTP/1.1  #登录请求

Host: www.example.com

Cookie: PHPSESSID=urvo14kd4ke4j5vef07t4edj43;

 

[other HTTP headers]

username=admin&password=123456

4、  释放提交被拦截的登录请求,直至登录成功。

5、  登录成功后,点击目标系统需要带cookie才能访问的任意功能。

6、  burp拦截到的http请求中检查会话标记的值(一般在cookie中)。

预期结果

步骤3和步骤6中,会话标记的值不一样。

测试结果

 

备注

使用GET提交请求数据可能会被记录在web server日志或缓存在浏览器。

5.3.4CSRF

编号

Web_Sess_04

用例名称

跨站伪造请求测试

用例描述

测试在目标系统上进行关键性或敏感性操作是否携带随机token

严重级别

前置条件

1、  目标系统使用登录会话机制。

2、  目标web应用可访问,业务正常运行。

3、  已安装http拦截代理(burpfiddlerwebscarab均可)。

4、  已明确区分出目标系统的关键性或敏感性操作(比如:删除数据库)。

执行步骤

1、  开启burp,设置对http请求进行拦截,并在浏览器中配置代理。

2、  使用正确账户名和密码登录目标系统。

3、  访问具有关键性或敏感性功能的页面,并点击提交请求(比如:删除数据库、重启设备等等)。

4、  burp拦截到的GET/POST http请求中观察所有参数的值。

预期结果

参数体中存在不可预测的随机因子(比如:UUIDsession id),比如:

POST /db/delDB.jsp HTTP/1.1  #添加数据库

Host: www.example.com

[other HTTP headers]

dbName=users&token =5uvd5k97rqdpk698firq7g93s1

测试结果

 

备注

1、  对于关键性或敏感性操作的判断一般具有较大的主观性,通常来讲,可以从执行该操作后可能造成的结果来判断,但不同的人可能看到的危害程度不一样,最终应当以能想象得到的最严重的情况为标准。

2、  “写”操作往往是关键性或敏感性操作的特征,比如:增、删和改,对于这类操作应予以特别的关注。

5.3.5、会话注销:

编号

Web_Sess_05

用例名称

会话注销测试

用例描述

测试目标系统的会话注销功能是否存在安全缺陷。

严重级别

前置条件

1、  目标系统使用登录会话机制。

2、  目标web应用可访问,业务正常运行。

3、  已安装http拦截代理(burpfiddlerwebscarab均可)。

执行步骤

1、  开启burp,设置对http请求进行拦截,并在浏览器中配置代理。

2、  使用正确账户名和密码登录目标系统。

3、  检查目标系统是否存在注销功能,如果不存在,测试结束(不通过)。

4、  点击进入不同的功能页面,检查是否在所有页面都能很容易地看到或找到注销功能。

5、  点击目标系统需要带cookie才能访问的任意功能。

6、  burp拦截到的http请求转入burp repeater

7、  点击目标系统的注销功能登出账户。

8、  burp repeater上重放步骤6拦截到的http请求,并观察结果。

预期结果

1、  步骤3中,目标系统存在注销功能。

2、  步骤8中,目标系统跳转到登录页面或者返回类似“未登录”的信息或者错误码。

测试结果

 

备注

 

5.3.6、会话超时:

编号

Web_Sess_06_01

用例名称

会话闲置超时测试

用例描述

测试会话在闲置预设的时间后是否被强制销毁。

严重级别

前置条件

1、  目标系统使用登录会话机制。

2、  目标web应用可访问,业务正常运行。

执行步骤

1、  使用正确账户名和密码登录目标系统。

2、  打开任意需要登录才能访问的功能页面。

3、  在目标系统上闲置N分钟并且不进行任何操作

4、  刷新步骤2的功能页面,并观察结果。

预期结果

目标系统跳转到登录页面或者返回类似“未登录”的信息或者错误码。

测试结果

 

备注

N的值应根据业务自身的特点来决定,对于安全性要求高的业务,一般设置为15,其它的业务可以往上递增直至一个合理的值。

 

编号

Web_Sess_06_02

用例名称

会话绝对超时测试

用例描述

测试会话在使用预设的时间后是否被强制销毁。

严重级别

前置条件

1、  目标系统使用登录会话机制。

2、  目标web应用可访问,业务正常运行。

执行步骤

1、  使用正确账户名和密码登录目标系统。

2、  打开任意需要登录才能访问的功能页面。

3、  等待N分钟(期间可进行除了注销以外的任意操作)。

4、  刷新步骤2的功能页面,并观察结果。

预期结果

目标系统跳转到登录页面或者返回类似“未登录”的信息或者错误码。

测试结果

 

备注

1、  会话绝对超时时间一般大于等于会话闲置时间。

2、  会话绝对超时时间并非所有业务系统必须的,但安全性要求高的业务应当存在。

3、  N的值同样根据业务自身特性来决定。

提示:如果IE显示不正常,请使用chrome浏览器

posted on 2015-01-06 09:07  Fish_Ou  阅读(2181)  评论(0编辑  收藏  举报