0


软件安全测试-web安全测试基础

1. Web安全的测试范围

服务器系统的漏洞,权限,网络端口的管理,Tomcat,Apache的配置,浏览器本身的安全配置,web应用程序本身的前端,后端,数据库安全等。

2.Web安全的四要素

安全性

可靠性

可用性

完整性

3. Web安全的分类

web安全性包括但不仅限于下面几个部分,做好系统,数据库,服务器配置的安全测量,提高整体的安全防护等级,确保开发的应用程序遵从安全标准开发。

4. Web安全的类别排名

5. 零时差攻击

0day又叫零时差攻击,是指被发现后立即被恶意利用的安全漏洞,通俗地讲,即安全补丁与瑕
疵曝光的同一日内,相关的恶意程序就出现,这种攻击往往具有很大的突发性与破坏性。

  • Oday就是只有你知道的一个漏洞!
  • 1day就是刚刚公布的漏洞(没有超过一天)
  • nday就是这个漏洞已经公布出来了N天啦!

6. Web安全的载体

web安全的载体是网络协议,而网络协议中最常见的是http协议。

Http协议的性质:

  • HTTP是简单的
  • HTTP是可扩展的
  • HTTP是无状态,有会话的
  • HTTP是可靠的
  • Web客户端的作用

7. 了解软件安全测试相关的Cooike,Session,Token

7.1 会话级鉴权及认证技术

  • cookie管理、
  • session会话技术
  • token令牌技术

Cookie管理是浏览器的一种策略,用于解决http协议是无状态连接问题的, Cookie可以记录用户浏览历史,辨别用户身份、进行 session 跟踪而储存在用户本地终端上的数据。
不管是session会话技术还是token令牌技术都是基于cookie管理进行的。

7.2 会话安全管理需要授权和鉴权两个步骤

  • 授权:相当于下发一个通行证(通行证保存cookie管理器)
  • 鉴权:鉴定是否有权访问(判断有请求是否正确携带通行证)

7.3 Cookie

7.3.1 Cookie类型

  • 会话Cookie:保存在内存中,由浏览器维护,浏览器关闭后消失。
  • 持久性Cookie:保存在硬盘里,有过期时间,用户手动清理或到了过期时间,持久性Cookie会被删除。
  • Expires属性:Cookie中的maxAge或者Expired用来表示该属性,单位为秒

7.3.2 Cookies测试(session测试同)

  • Cookies是否起作用;
  • Cookies是否按预定的时间进行保存;
  • 刷新对Cookies有什么影响
  • 避免保存敏感信息到cookie文件中。如用户名、密码

作用域 不同应用系统不同作用域。下图中为单个应用系统,Path对应的是这个cookie的作用域,斜杠表示根目录,即该条cookeie作用域为整个应用系统

Set-Cookie: access-token=LluyJIfAggsBH_woZgQAledLq3ZJzNwOD501WuvHNdjV5JthEWw; Path=/
  • 屏蔽 Cookie,检查当Cookie 被屏蔽时Web 系统会出现什么问题
  • 篡改Cookie,如果某些存储下来的Cookie 被篡改了,或者被删除了,Web 系统会出现什么问题吗?优秀的设计则会检测到Cookie 数据的篡改,及时更新替换Cookie 文件
  • Cookie 加密测试,检查存储的Cookie 文件内容,看是否有用户名、密码等敏感信息存储,并且未被加密处理。某些类型的数据即使是加密了也绝对不能存储在Cookie 文件中的,例如:信用卡号。
  • HttpOnly 属性的设置:把Cookie 的HttpOnly 属性设置为True 有助于缓解跨站点脚本威胁,防止Cookie 被窃取
  • Secure 属性的设置:把Cookie 的Secure 属性设置为True,在传输Cookie 时使用SSL连接,能保护数据在传输过程中不被篡改
  • Cookie 过期日期设置的合理性:检查是否把Cookie 的过期日期设置得过长

7.3.3 如何使用Cookie来保持登录状态

7.4 Session

  • 用户第一次请求服务器时,服务器端会生成一个sessionId
  • 服务器端将生成的sessionId返回给客户端,通过set-cookie
  • 客户端收到sessionId会将它保存在Cookie中,当客户端再次访问服务端时会带上这个sessionId
  • 当服务端再次接收到来自客户端的请求时,会先去检查是否存在sessionId,不存在就新建一个sessionId重复1,2的流程,如果存在就去遍历服务端的session文件,找到与这个sessionId相对应的文件,文件中的键值便是sessionId,值为当前用户的一些信息
  • 此后的请求都会交换这个 sessionId ,进行有状态的会话

7.4.1 session安全测试的原理

Session是应用系统对浏览器客户端身份认证的属性标识,在用户退出系统时应将客户端session认证属性标识清空。如果未能及时清空客户端session标识,下次登录时系统会重复利用该session标识进行认证会话。攻击者可以利用该漏洞生成固定的session会话,诱骗用户利用攻击者生成的固定会话进行系统登录,从而导致用户会话认证被窃取。

7.4.2 session安全测试的过程

在注销退出系统时,对当前浏览器授权 SessionID 值进行记录。再次登录系统,将本次授权 SessionID 值与上次进行比对校验。判断服务器是否使用与上次相同的 SessionID 值进行授权认证,若使用相同 SessionID 值则存在固定会话风险.

  • 截取注销退出时请求中的sessionid
  • 截取再次登录时的sessionid

7.4.3 Session的其他测试

  • session的创建时间点,是打开浏览器访问开始创建session?还是用户登陆时开始创建session? 还是其它情况下创建的

  • session的删除时间点,过期文件是否删除,关闭浏览器时,session是否会删除?当有多个窗口时,是全部关掉还是关掉一个会删除session?

  • session超时,基于Session原理,需要验证系统session是否有超时机制,还需要验证session超时后功能是否还能继续走下去。

      测试方法:   
    
      1)打开一个页面,等着10分钟session超时时间到了,然后对页面进行操作,查看效果。  
    
      2)多TAB浏览器,在两个TAB页中都保留的是用户A的session记录,然后在其中一个TAB页执行退出操作,马上在另外一个页面进行要验证的操作,查看是能继续到下一步还是到登录页面。
    
  • session互窜,即是用户A的操作被用户B执行。

      测试方法:
    
      多TAB浏览器,在两个TAB页中都保留的是用户A的session记录,然后在其中一个TAB页执行退出操作,登陆用户B, 此时两个TAB页都是B的session,然后在另一个A的页面执行操作,查看是否能成功。 预期结果:有权限控制的操作,B不能执行A页面的操作,应该报错,没有权限控制的操作,B执行了A页面 操作后,数据记录是B的而不是A的
    
  • Session垃圾回收

  • 关闭浏览器同时关闭session

  • Session 销毁

  • session丢失,代码问题

  • 不同浏览器Session的共享机制不一致

      IE中,所有打开的IE窗口(IE 进程)共享一个session。除非,用户通过菜单 File > New session  打开新窗口,或者使用命令行参数 iexplore.exe -nomerge 来打开IE。  另外,当所有IE窗口被关闭后,session 结束。
    
  • 服务器端是否设置了最大并发session数量

  • 防止由于登录人数过多,造成服务器内存被消耗殆尽或服务器无响应的情况。

  • 刷新操作对session是否存在影响

  • 登录并进行相关操作后,退出系统,点击浏览器中的后退按钮,是否能回到刚才所做的操作页面

  • 登录后,进入一个页面后,能否将该页面地址拷贝后,再打开一个新的浏览器,直接粘贴该页面地址后,就能进行相关操作

  • 若后台的网络架构使用了负载均衡,要考虑在同一客户访问的页面被提交到了不同的服务器后,session能否正确共享

      例如:用户登陆后的请求被A服务器处理,但是用户接下来的操作却被B服务器处理,此时登录后的session是否能够被正确共享
    
  • 若创建session时,由于环境故障(IE死机,或网络暂时断开等),造成session创建异常或失败,系统会如何反应

  • 若创建session时,由于环境故障(IE死机,或网络暂时断开等),造成session创建异常或失败,若环境恢复后,系统是否会自动生成session

  • 进行大量用户并发登录时,是否会造成session创建时间延时,导致无法正常创建session

7.4.4 如何使用Session来保持登录状态

7.4.5 Session的两种实现方式(也就是传递方式)

  • 通过Cookie实现
  • 通过URL重写来实现

7.5 Token

7.5.1 Token概述

7.5.2 使用Token保持会话的原理

  • 用户通过用户名和密码发送请求。
  • 程序验证。
  • 程序返回一个签名的token给客户端。
  • 客户端储存token,并且每次用于每次发送请求。
  • 服务端验证token并返回数据。

7.5.3 JWT

7.6 Session与Cookie的区别

7.6.1 存储位置不同

Session是存在服务器端的,而Cookie是存在客户端的

7.6.2 安全性不同

Session不会受浏览器端的设置影响,可记录每个访问者的信息,独立在服务器端,比Cookie安全!

Session是存在内存中的,浏览器关闭它也就“死”了;Cookie是以文件方式存在的,可以修改其“存活”时间

7.6.3 性能不同

session 存放在服务端,过多会影响服务器性能,而Cookie是存放在客户端,没有性能影响

7.6.4 会话的安全管理

7.6.5 其他

  • 服务端保存状态机制需要在客户端做标记,所以Session可能借助Cookie机制
  • Cookie通常用于客户端保存用户的登录状态
  • Session是可以存取任何类型的数据的,但是Cookie只能存入字符串
  • Cookie存储数据大小有限制,Session没有限制

7.7 Web客户端的作用

  • 用来发送HTTP请求
  • 接收服务器响应
  • 把服务器返回的HTML代码渲染成界面Web客户端来主要是浏览器。

7.8 Web服务端作用

  • 监听客户请求
  • 处理客户端的简单请求(一般静态页面)
  • 客户端与数据库之间的屏障
  • 处理复杂系统的业务和数据库的访问
标签: web安全 安全

本文转载自: https://blog.csdn.net/weixin_42727710/article/details/128268180
版权归原作者 全栈开发与测试 所有, 如有侵权,请联系我们删除。

“软件安全测试-web安全测试基础”的评论:

还没有评论