Web安全测试指南--权限管理
垂直权限提升:
编号 |
Web_Author_01 |
用例名称 |
垂直权限提升测试 |
用例描述 |
测试用户是否具有使用超越其角色范围之外的权限。 |
严重级别 |
高 |
前置条件 |
1、 目标系统拥有不同等级的角色和权限(比如:管理员和普通用户),并能够区分不同级别的权限角色能够访问的资源。 2、 目标web应用可访问,业务正常运行。 3、 已安装http拦截代理(burp、fiddler或webscarab均可)。 |
执行步骤 |
1、 开启burp,设置对http请求进行拦截,并在浏览器中配置代理。 2、 使用高级别权限账号(比如:管理员账号)登录目标系统。 3、 访问某个只有该高级别权限账号才能够访问的接口或者资源,比如: POST /admin/addUser.jsp HTTP/1.1 #添加账户接口 Host: www.example.com Cookie: Sessionid = 21232f297a57a5a743894a0e4a801fc3 [other HTTP headers] userName=test&phoneNum=138xxx 4、 使用burp拦截该HTTP请求并转入burp repeater。 5、 注销高级别权限账号。 6、 使用另外一个低级别权限账号(比如:普通用户)登录目标系统。 7、 访问任意接口或资源并用burp拦截对应的HTTP请求,比如: POST /commonUser/info.jsp HTTP/1.1 #查询账户信息接口 Host: www.example.com Cookie: Sessionid = fab0ec1c41247e83e2189f2094952eb4 [other HTTP headers] 8、 复制该HTTP请求的cookie字段,然后替换掉burp repeater中的高级别账户产生的HTTP请求的cookie字段,比如: POST /admin/addUser.jsp HTTP/1.1 #添加账户接口 Host: www.example.com Cookie: Sessionid = fab0ec1c41247e83e2189f2094952eb4 #替换cookie [other HTTP headers] userName=test&phoneNum=138xxx 9、 在burp repeater中重新向目标系统发送该被替换过cookie的HTTP请求,观察目标系统的返回结果。 |
预期结果 |
目标系统返回类似“没有权限”的信息或者对应的错误码。 |
测试结果 |
|
备注 |
|
5.2.2、水平权限提升:
编号 |
Web_Author_02 |
用例名称 |
权限提升测试 |
用例描述 |
测试用户是否具有访问其自身以外的受限访问的资源。 |
严重级别 |
高 |
前置条件 |
1、 目标系统拥有多个不同的账户,并且拥有各自受限访问资源信息(比如:个人信息),并且这些资源信息使用资源标签进行区分。 2、 目标web应用可访问,业务正常运行。 3、 已安装http拦截代理(burp、fiddler或webscarab均可)。 |
执行步骤 |
1、 开启burp,设置对http请求进行拦截,并在浏览器中配置代理。 2、 使用账号A登录目标系统。 3、 访问某个只有账号A才能够访问的资源,比如: POST /info/Info.jsp HTTP/1.1 #通过userID查询对应的账户信息 Host: www.example.com Cookie: Sessionid = 21232f297a57a5a743894a0e4a801fc3 #账户A cookie [other HTTP headers] userID=111111 #账户A的userID 4、 使用burp拦截该HTTP请求并转入burp repeater。 5、 记录账户A的资源标签(比如:userID)并注销账户A。 6、 使用账号B登录目标系统。 7、 访问同样的接口并用burp拦截对应的HTTP请求,比如: POST /info/Info.jsp HTTP/1.1 #通过userID查询对应的账户信息 Host: www.example.com Cookie: Sessionid = fab0ec1c41247e83e2189f2094952eb4 #账户B cookie [other HTTP headers] userID=222222 #账户B的userID 8、 使用账户B的资源标签替换掉账户A的资源标签,比如: POST /info/Info.jsp HTTP/1.1 #通过userID查询对应的账户信息 Host: www.example.com Cookie: Sessionid = fab0ec1c41247e83e2189f2094952eb4 #账户B cookie [other HTTP headers] userID=111111 #账户A的userID 9、 向目标系统发送该被篡改过的请求,观察目标系统的返回结果。 |
预期结果 |
目标系统返回类似“没有权限”的信息或者对应的错误码。 |
测试结果 |
|
备注 |
1、 验证水平权限提升时,两个账号可以是相同权限级别的(比如:两个普通用户账号),也可以是不同权限级别的(比如:一个管理员账号和一个普通账号),但更加建议使用两个不同权限级别的账号做测试。 2、 步骤3、4和5不是必须要执行的步骤,如果能够直接获取到其它账户的私有资源标签或者私有资源标签可以预测(比如:userID只是简单的递增关系),则可以省略。 |
提示:如果IE显示不正常,请使用chrome浏览器