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

会话复杂度:


编号


Web_ Sess_01


用例名称


会话复杂度测试


用例描述


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


严重级别



前置条件

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

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

3、  已安装http拦截代理(burp、fiddler或webscarab均可)。


执行步骤

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只是所有会话标记的统称,不同系统会话标记名称可能不一样,比如:jssessionid、sid和DDNSCOOKIE等。

5.3.2、会话预测:


编号


Web_ Sess_02


用例名称


会话可预测性测试


用例描述


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


严重级别



前置条件

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

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

3、  已安装http拦截代理(burp、fiddler或webscarab均可)。


执行步骤

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拦截代理(burp、fiddler或webscarab均可)。


执行步骤

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.4、CSRF:


编号


Web_Sess_04


用例名称


跨站伪造请求测试


用例描述


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


严重级别



前置条件

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

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

3、  已安装http拦截代理(burp、fiddler或webscarab均可)。

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


执行步骤

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

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

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

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


预期结果


参数体中存在不可预测的随机因子(比如:UUID或session 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拦截代理(burp、fiddler或webscarab均可)。


执行步骤

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浏览器

时间: 2024-08-06 05:48:39

Web安全测试指南--会话管理的相关文章

Web安全开发指南--会话管理

1.会话管理 3.1.会话管理安全规则 1 避免在URL携带session id. 2 使用SSL加密通道来传输cookie. 3 避免在错误信息和调试日志中记录session id. 4 使用框架自带的或业界公认的安全函数来生成session id(参考附录11.4). 5 开发或引入无状态的模块(比如shipin7 nodejs和视频留言模块)时,应与web模块的session机制结合,防止越权或无授权攻击. 6 当使用加密通道SSL/TLS传输cookie时,为其设置“secure”属性.

Web安全测试指南--权限管理

垂直权限提升: 编号 Web_Author_01 用例名称 垂直权限提升测试 用例描述 测试用户是否具有使用超越其角色范围之外的权限. 严重级别 高 前置条件 1.  目标系统拥有不同等级的角色和权限(比如:管理员和普通用户),并能够区分不同级别的权限角色能够访问的资源. 2.  目标web应用可访问,业务正常运行. 3.  已安装http拦截代理(burp.fiddler或webscarab均可). 执行步骤 1.  开启burp,设置对http请求进行拦截,并在浏览器中配置代理. 2.  使

2014-07-09 Java Web的学习(5)-----会话管理(Cookie和Session)

1.什么是会话 会话,牛津词典对其的解释是进行某活动连续的一段时间.从不同的层面看待会话,它有着类似但不全然相同的含义.比如,在web应用的用户看来,他打开浏览器访问一个电子商务网站,登录.并完成购物直到关闭浏览器,这是一个会话.而在web应用的开发者开来,用户登录时我需要创建一个数据结构以存储用户的登录信息,这个结构也叫做会话.因此在谈论会话的时候要注意上下文环境.而本文谈论的是一种基于HTTP协议的用以增强web应用能力的机制或者说一种方案,它不是单指某种特定的动态页面技术,而这种能力就是保

web安全学习-攻击会话管理

先来说一下什么是会话管理?在绝大多数web应用程序中,会话管理机制是一个基本的安全组件.它帮助应用程序从大量不同的请求中确认特定的用户,并处理它收集的关于用户与应用程序交互状态的数据.会话管理在应用程序执行登陆功能时显得特别重要,因为它可在用户通过请求提交他们的证书后,持续向应用程序保证任何用户身份的真实性. 由于会话管理机制所发挥的关键作用,它们成为针对应用程序的恶意攻击的主要目标.如果攻击者能够破坏应用程序的会话管理,他就能轻易避开其实施的验证机制,不需要用户证书即可伪装成其他应用程序用户.

Web安全测试指南--文件系统

上传: 编号 Web_FileSys_01 用例名称 上传功能测试 用例描述 测试上传功能是否对上传的文件类型做限制. 严重级别 高 前置条件 1.  目标web应用可访问,业务正常运行. 2.  目标系统存在上传功能,并且有权限访问使用. 3.  已安装http拦截代理(burp.fiddler或webscarab均可). 4.  目标系统使用http而不是ftp等其它方式实现上传. 5.  具有登录目标服务器后台的账户和权限. 执行步骤 1.  登录目标系统并访问具有上传功能的页面. 2. 

Web安全测试指南--认证

认证: 5.1.1.敏感数据传输: 编号 Web_Authen_01_01 用例名称 敏感数据传输保密性测试 用例描述 测试敏感数据是否通过加密通道进行传输以防止信息泄漏. 严重级别 高 前置条件 1.  已明确定义出敏感数据范围(比如口令.短信验证码和身份证号等). 2.  目标web应用可访问,业务正常运行. 3.  已安装http拦截代理(burp.fiddler或webscarab均可). 执行步骤 1.  开启burp,设置对http请求进行拦截,并在浏览器中配置代理. 2.  访问w

(转)web会话管理方式

阅读目录 1. 基于server端session的管理 2. cookie-based的管理方式 3. token-based的管理方式 4. 安全问题 5. 总结 http是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的.当然它知道是哪个客户端地址发过来的,但是对于我们的应用来说,我们是靠用户来管理,而不是靠客户端.所以对我们的应用而言,它是需要有状态管理的,以便服务端能够准确的知道http请求是哪个用户发起的,从而判断他是否有权限继续这个请求.这

http 3种web会话管理方式

http是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的.当然它知道是哪个客户端地址发过来的,但是对于我们的应用来说,我们是靠用户来管理,而不是靠客户端.所以对我们的应用而言,它是需要有状态管理的,以便服务端能够准确的知道http请求是哪个用户发起的,从而判断他是否有权限继续这个请求.这个过程就是常说的会话管理.它也可以简单理解为一个用户从登录到退出应用的一段期间.本文总结了3种常见的实现web应用会话管理的方式: 1)基于server端sessio

3种 web 会话管理的方式

转自:http://www.yidianzixun.com/n/0F1GYAsQ?s=8&appid=xiaomi&ver=3.7.8&utk=4lxc4q7c&from=timeline http是无状态的,一次请求结束,连接断开,下次服务器再收到请求,它就不知道这个请求是哪个用户发过来的.当然它知道是哪个客户端地址发过来的,但是对于我们的应用来说,我们是靠用户来管理,而不是靠客户端.所以对我们的应用而言,它是需要有状态管理的,以便服务端能够准确的知道http请求是哪个用