web安全测试
1、软件安全测试概述
网络世界中,安全问题无处不在,安全意识仍需提高,只有通过不断地安全测试,才能保证我们的软件不被非法入侵,才能够尽量的去规避我们软件中的一些问题,提升软件质量和安全。
- 21世纪以来,智能化的软件成为商业决策、推广等不可缺少的利器,很多软件涉及了客户商业上重要的信息资料,因此企业都很关心软件的安全性。往往一个细小的安全漏洞,对客户产生的影响都是巨大的。所以企业都想着尽可能的保证软件的安全性,确保软件在安全性方面能满足客户期望,在软件测试行业,安全测试的重要性是不言而喻的。
2021年阿里Log4J漏洞: 漏洞等级:该漏洞影响范围极广,危害极大
CVSS 评分:10(最高级) 漏洞原理该漏洞只需要外部用户输入的恶意代码被日志记录,即可触发代码执行,该漏洞使用者能在目标设备上远程执行任意恶意代码。
安全性测试:是指有关验证应用程序的安全等级和识别潜在安全性缺陷的过程。
- 应用软件的安全性测试:软件自身程序设计中存在的安全隐患,并检查应用程序对非法侵入的防范能力
- 系统级别的安全性测试:确保只有具备系统平台访问权限的用户才能访问,包括对系统的登录或远程访问
导致软件出现安全问题的主要原因或根源是软件的安全漏洞。
特指在硬件、软件、协议的在逻辑设计上或具体实现或系统安全策略上存在的缺陷或错误。
- 漏洞的产生主要是由于程序员不正确和不安全编程引起的
- 不法者可以通过漏洞获取系统额外权限,并对系统植入木马、病毒,以窃取系统资料
- 威胁到系统安全的错误才是漏洞
(1)漏洞的危害
- 系统完整性:非法篡改破坏数据完整性
- 系统可用性:破坏系统或者网络,导致服务不可用(正常注册用户都会使用不了)
- 系统机密性:泄露个人或者企业的隐私信息(导致企业信息、用户信息的泄露)
- 系统可靠性:造成系统不能正常提供有效服务
(2)软件安全测试方法
- 代码安全性测试:主要通过对源代码进行安全扫描,根据程序中数据流、控制流、语义等信息与其特有软件安全规则库进行匹对,从中找出代码中潜在的安全漏洞。
- 渗透测试:主要使用自动化工具或者人工的方法模拟黑客的输入,对应用系统进行攻击性测试,从中找出运行时刻所存在的安全漏洞。
- 程序数据扫描:数据扫描的手段通常是进行内存测试,内存测试可以发现许多诸如缓冲区溢出之类的漏洞,而这类漏洞使用除此之外的测试手段都难以发现。
(3)软件安全测试 和 软件渗透测试 区别
-
软件安全测试:属于大的范畴,包括代码程序的静态扫描的测试以及数据的测试,是包含了渗透测试的。
-
软件渗透测试:更多的事模拟黑客的攻击方式,来发现系统的防范能力的测试,渗透测试只是软件安全测试其中的一种方法。
(4)软件安全测试内容
- 功能验证:对涉及到安全的软件功能进行有效性验证,如管理模块、权限模块、加密系统、认证系统等。
-
模拟攻击:模拟攻击测试是一组特殊的极端的测试方法,以模拟攻击方式来验证软件系统的安全防护能力。---最常用的
-
漏洞扫描:安全漏洞扫描主要是借助于特定的漏洞扫描器完成的,系统管理员能够发现系统存在的安全漏洞。---安装在本地的扫描程序,通过扫描可以发现代码的一些漏洞形式,看一下现象是不是符合要求。
-
侦听技术:也称网络监听,可以获取网络上传输的信息,如果从获取的信息中提取到系统的隐私数据,就存在安全性问题
(5)软件安全测试的过程
- 基于安全需求,将系统可能面临的安全问题进行分类,画出威胁树,可以针对威胁树选择应对的方法和技术,是为需求分析。
-
基于威胁模型,制定计划:以口令安全问题威胁树为例,计划就可基于口令安全可能遭受的各种攻击进行制定
- 规划最小测试单位:并不是模块整体都有安全问题,只需要关注容易出问题的最小范围即可
- 对系统的可能漏洞进行分级:对系统漏洞按照不同的优先级进行测试
- 模拟攻击系统:根据用例,模拟攻击系统,查看系统是否有一个正确的防御
- 设计安全测试用例:根据漏洞类型,精心准备数据,设计测试用例进行测试(猜密码、暴力破解密码、不登录进行操作)
- 总结执行结果,题出解决方案:执行用例,得到结果,根据结果现象提出解决方案
2、Web安全测试
(1)Web安全测试范围
- 目前绝大部分企业尤其是互联网企业的业务都是建立在网站服务上的,可以说web网站支撑着企业的正常运转因此web安全性对企业来说至关重要,如果出现问题,将造成巨大的损失。
- Web服务器应用的安全
- Web服务器周边应用安全:
- 服务器本身及网络环境安全
- 网站程序安全
检查服务器的漏洞、系统的权限、网络环境、ARP设置、网络端口等
如:使用JavaScript直接绕过前端去执行,前端一般会对输入做字符长度的限制,后端有可能没去做限制,就可以通过“报文接口”的形式直接大于【前端字符限制】的请求,后端接收后,就会出现一些漏洞
(2)Web安全测试分类
web安全性包括但不限于下面几个部分内容,做好系统、数据库、服务器配置的安全策略,提高整体的安全防护等级,这个才是web安全测试的最终目的:
- 认证与授权:尽量避免未被授权的页面直接访问,应该为每个页面加一下变量做下判断,如果没有判断,通过url就可以直接访问,就会出现很多风险,让用户通过授权之后,在进行查看
- Session与cookie:
- cookie:对于http协议来说,是一种无状态的协议,请求中不会要求浏览器标明自己的身份,只要给出一个请求,就会返回一个响应,这样的话,就无法判断浏览器(客户端)的身份,这时候就催生了cookie的应用,cookie属于是http的一个拓展,一般是将cookie写在用户的客户端(浏览器)本地,去发送请求时,需要带上本地管理cookie数据,这样就可以进行身份验证了,直到cookie过期,才不可以使用。
- Session:针对session攻击,“跨站请求伪造(Cross-Site Request Forgery,简称 CSRF)”,关键点事如何不让攻击者获取到sessionID的值,然后在伪装成我们正常的用户,完全避免是不太可能,可以增加一下技术的方法来去增加黑客获取我们session值的可能性,如:我们在请求时在加一些可以变化的变量的校验,或是token的校验
- DDOS拒绝服务攻击:用大量的远程的主机对我们同一台服务器发出请求,一般有2种实施方式,
- 第一种是使用真机,通过设置一些木马控制远程的电脑,对服务器发生请求,由于请求是一种正常的请求,所以服务器通过防火墙是无法封锁IP的,只能是加大服务器的处理能力。
- 第二种:形成攻击联盟,很多人像同一个网站发起攻击,对网站的流量形成压力,对网站会造成一定的危害,都是有组织有目的的
- 文件上传漏洞:利用web上传了一些特定的文件,一般是指用户上传了【可执行脚本文件】,通过执行这个脚本文件来产生某些危害,需要确认一下上传文件后,是否在服务端进行了处理。
- 避免方法:限制文件的格式,校验“是否上传是可执行文件”、“上传文件是否有大小的限制”、“上传太大的文件是否会导致异常”、“上传0kb大小文件是否异常”、“通过修改拓展屏的方法是否可以绕过格式限制”、“对于文件中带有中文特殊字符的是否有限制”、“是否可以上传类似ASP、JSP、AX、PX等格式的文件”、“是否可以在文件的后缀添加空格或是多加几个点”
- XSS跨站攻击:恶意的攻击者往web页面去插入一下html代码,当用户浏览页面的时候,嵌入其中的代码就会被执行到,从而达到不可告知的目的。如:某个页面上有一个广告,网址是www.hahaha.com,但是你点击进去之后发现是淘宝的购物网站,然后进去购买,其实是重定向了另外一个网站,付款时使用的是攻击者的接口进行的付款,很多时候我们的账号信息就被窃取了。常见的会有:赌博这样入口,我们不要轻易的去点击!很容易上当受骗!
- SQL注入:最为常见的安全漏洞,在安全测试里面常年排在第一位,攻击者可以利用自己输入的数据达到攻击的目的,原因在于SQL语言是一种解释型的语言,它的语句是有程序员编写的代码+用户提交的数据共同组成的,正是因为这样的原因,攻击者可以构造自己有利的数据,利用网站的一些SQL漏洞来达到恶意的目的,一般出现在含有表单的页面,如:登录、查询、反馈页面,即使是隐藏的表单,也有可能出现;
- 作为测试,在需求阶段的时候,我们就应该有意识将安全性的一些检查应用到我们测试中,也可以在产品沟通需求时,让前端、后端处理此类问题,如:一个表单要求某些字段的长度或是类型、取值范围的时候,那我们在测试时就要按照需求要求的字段以及无效等价类的数据去做测试验证,并且要检查应用程序是否给出了不包含任何代码或是任何数据库信息的提示信息,如果给出了一些关于我们的代码或是数据库信息的提示的话,就是数据库被爆破的一个点,要尽量去避免这些东西。
(3)安全漏洞
- Owasp:Open Web ApplicationSecurity Project,开放式Web应用程序安全项目,是一个非营利组织,会在经过安全专家的测验之后确定十大类对当前web应用威胁最大和被应用最广的漏洞,同时也会对其进行详细的威胁分析。
(4)0day & 1day
- 0day又叫零时差攻击,是指被发现后立即被恶意利用的安全漏洞,通俗地讲,即安全补丁与瑕疵曝光的同一日内,相关的恶意程序就出现,这种攻击往往具有很大的突发性与破坏性。
-
0 day:就是只有你知道的一个漏洞
- 1 day:就是刚刚公布的漏洞(没有超过一天)
-
nday:就是这个漏洞已经公布出来了N天啦!
漏洞从出现到修复的三个时间点:
- 漏洞被发现:t1
- 漏洞信息被公布到网络:t2(一般会有临时的修复策略)
- 漏洞被修补:t3
(5)黑帽子 和 白帽子黑客
- 正如一个硬币有两面一样,“黑客”也有好坏之分在黑客的世界中,往往用帽子来比喻黑客的好坏。
- 白帽子:是指那些精通安全技术,但是工作在反黑客领域的专家们。(不断分析问题去做防御,而不止是针对现象去做解决)
- 黑帽子:则是指利用黑客技术造成破坏,甚至进行网络犯罪的群体。(利用多种组合量级很大的技术去做破坏)
同样是研究网络安全,白帽子和黑帽子在工作时的心态是完全不同的。
(6)Web安全测试四要素
- 机密性
- 完整性
- 可靠性
- 可用性
不可以让数据出现篡改
(7)Web安全测试载体
- Web安全测试的测试载体体是网络协议,而日常生活中最常见的网络协议是http协议。
本文来自博客园,作者:他还在坚持嘛,转载请注明原文链接:他还在坚持嘛 https://www.cnblogs.com/brf-test/p/18642496
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· winform 绘制太阳,地球,月球 运作规律
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
2021-12-30 Pytest之pdb