在软件测试的面试过程中,安全测试的相关知识,可以说是很高频了,下面为大家整理了一些安全测试相关的面试题,拿走不谢~安全测试是一种软件测试,可发现软件应用程序中的漏洞,威胁和风险,可以防止来自入侵者的恶意攻击。如果产品有高危漏洞,不小心被黑客袭击,导致服务器瘫痪或资金损失,重要数据泄露和丢失,或者服务器资源被黑客恶意利用,会导致公司业务无法正常运转或损失惨重。进行安全测试,可以找到安全漏洞,例如常见的SQL注入、跨站点请求伪造CSRF、跨站脚本攻击XSS等安全问题。在产品发布前找到安全问题,并予以修复,可以大大降低修复成本。通过安全测试,我们能发现安全问题,进行评估系统的安全等级。2、安全扫描:手动或自动识别网络和系统弱点的技术。3、渗透测试:渗透测试是关于安全测试的,它有助于识别系统中的漏洞。4、风险评估:包括对系统中可能的风险进行分析,风险分为低、中、高三种。5、安全审计:完成对系统和应用程序的检查,以检测漏洞。6、道德黑客:为检测系统中的缺陷,而非个人利益对系统进行的黑客攻击。7、态势评估:将安全扫描、道德黑客和风险评估结合起来,以显示组织的总体安全态势。安全漏洞是指受限制的计算机、组件、应用程序或其他联机资源的无意中留下的不受保护的入口点,漏洞是硬件软件或使用策略上的缺陷,他们会使计算机遭受病毒和黑客攻击。从软件测试的角度,也可以理解为系统有关安全问题的Bug。一款安全漏洞扫描工具,支持Web和移动端,在进行“探索”和“测试”后,可直接生成测试报告,有助于开发和测试人员复现和修复漏洞,使用方便。是一款集成化且成熟的渗透测试工具,包含Proxy,Spider,Scanner,Intruder,Repeater,Sequencer,Decoder,Comparer等工具模块,可以帮助我们高效地完成对Web应用程序的渗透测试和攻击。是一个网络连接端扫描软件,用来扫描网上电脑开放的网络连接端。确定哪些服务运行在哪些连接端,并且推断计算机运行哪个操作系统(这是亦称 fingerprinting)。它是网络管理员必用的软件之一,以及用以评估网络系统安全。是一款基于Python编写的开源渗透测试工具,在SQL检测和利用方面功能强大,支持多种数据库。其主要功能是扫描、发现并利用给定URL的SQL注入漏洞,内置了很多绕过插件,支持的数据库是MySQL 、Oracle 、PostgreSQL 、Microsoft SQL Server、Microsoft Access 、IBM DB2, SQ Lite 、Firebird 、Sybase和SAPMaxDB 。OpenVAS 是一个全功能的漏洞扫描器。它的功能包括非认证测试、认证测试、各种高水平和低水平的互联网和工业协议、大规模扫描的性能调整和一个强大的内部编程语言来实现任何类型的漏洞测试。其核心部件是一个服务器,包括一套网络漏洞测试程序,可以检测远程系统和应用程序中的安全问题。Acunetix是一款网络漏洞扫描软件,它可以检测网络的安全漏洞。一款静态代码检查工具。Fortify是Micro Focus旗下AST (应用程序安全测试)产品,其产品组合包括:Fortify Static Code Analyzer提供静态代码分析器(SAST),Fortify WebInspect是动态应用安全测试软件(DAST),Software Security Center是软件安全中心(SSC)和 Application Defender 是实时应用程序自我保护(RASP)。是一款针对Android系统的安全测试框架。提供了很多Android平台下的渗透测试exploit供你使用和分享,对于远程的exploit,它可以生成shellcode帮助你进行远程设备管理。一款号称是世界上最流行的漏洞扫描程序,全世界有超过75000个组织在使用它。该工具提供完整的电脑漏洞扫描服务,并随时更新其漏洞数据库。Nessus不同于传统的漏洞扫描软件,Nessus可同时在本机或远端上遥控,进行系统的漏洞分析扫描。Nessus也是渗透测试重要工具之一。OWASP Zed攻击代理(ZAP)是世界上最受欢迎的免费安全审计工具之一,有助于在开发和测试应用程序时自动查找Web应用程序中的安全漏洞。SQL注入是一种比较常见的高等级漏洞,简单理解,SQL注入就是没有过滤从页面传至接口的字符,攻击者通过将恶意的SQL查询插入到输入参数中,在后台服务器上解析进行执行,最终导致数据库信息被篡改或泄露。select * from users where user = '&user&' and passwd = '&passwd&'当我们用admin做用户名,1' or 'a' = 'a作为密码进行登录时,SQL就是select * from users where user = 'admin' and passwd = '1' or 'a' = 'a'根据或运算规则,最后的结果为真,就成功登录进入后台了。1、程序代码里的所有查询语句,使用标准化的数据库查询语句API接口,设定语句的参数进行过滤一些非法的字符,防止用户输入恶意的字符传入到数据库中执行sql语句2、对用户提交的的参数安全过滤,像一些特殊的字符(,()*&……%#等等)进行字符转义操作,以及编码的安全转换csrf( Cross-site request forgery****):跨站请求伪造,简单说,攻击者盗用了你的身份(借用你的token),以你的名义发送恶意请求,而你却不知情。恶意攻击者往Web页面里插入恶意的HTML代码,当用户浏览该页之时,嵌入其中Web里面的HTML代码会被执行,从而达到恶意目的。举个例子:攻击者写了一段删除某个财务系统数据的代码,放在任意一个广告页面的链接上。当其他用户浏览广告页面时,只要有用户例如Emily登录了财务系统,点击了该链接,就会在用户Emily无意识的情况下,以Emily的名义删除了财务系统的很多数据,达到了恶意攻击的目的。实际的场景:攻击者盗用账号转钱,添加管理员,购买商品,发送邮件等等。1、添加Token,发请求时带上Token。处理请求的时候需要验证Cookie+Token2、请求头中Referer参数需要校验请求来源是否是目标网页发出(1)Refer值由浏览器提供,不能保证浏览器自身没有安全漏洞(2)用户可以自己设置浏览器,让其在发送请求时不提供Refer值实际项目中,一般采用添加Refer请求头和添加Token组合的方式,来防止csrf的攻击。跨站点脚本攻击XSS:指利用网站漏洞从用户那里恶意盗取信息。简单理解,就是用户输入中可加入JS等破坏性的代码,而程序没有进行过滤,还执行了这些代码,达到了恶意攻击的目的。主要有存储型、反射型和DOM(基于文档对象模型)三种类型。1、存储型:攻击的数据会保存到数据库,一般存在于post的写请求或者get的写请求,例子:例如接口请求参数修改为</script+><script>alert(124)</script>,如果存在漏洞,则会存入数据库,每次页面加载,都会执行一次2、反射型:攻击的数据,不存在数据库,属于一次性的,用完一次就没了,一般在get请求参数中构造,与存储型的危害差别不大,例子:例如https://www.XXX.com/test?page=</script+><script>alert(124)</script>,如果存在漏洞,则页面会弹出124的窗口3、DOM:没有访问服务端,属于纯前端的行为。例子:直接在前端找到元素,修改为</script+><script>alert(124)</script>之后,如果弹出执行窗口,就证明存在漏洞存储型/反射型与DOM的区别在于:是否访问了服务端。简单来讲,就是程序没有对用户权限进行判断,低权限的用户可以完成高权限用户范围内的一些操作。 越权分为水平越权和垂直越权。举个例子: 水平越权:在业务系统中,本来用户A只能对自己的个人信息进行增删改查,但是通过抓包,修改用户id(一般用户id都是递增的),可以获取到其他人的个人信息,或者账号A将自己的个人信息页面通过浏览器发送给用户B,用户B登录系统后可以看到用户A的信息,这就是水平越权了。
垂直越权:在业务系统中,本来用户A对某条记录只有查看的权限,但是通过抓包,可以对记录进行修改,这就是垂直越权了。 SQL注入是一种比较常见的高等级漏洞,简单理解,SQL注入就是没有过滤从页面传至接口的字符,攻击者通过将恶意的SQL查询插入到输入参数中,在后台服务器上解析进行执行,最终导致数据库信息被篡改或泄露。csrf( Cross-site request forgery****):跨站请求伪造,简单说,攻击者盗用了你的身份(借用你的token),以你的名义发送恶意请求,而你却不知情。恶意攻击者往Web页面里插入恶意的HTML代码,当用户浏览该页之时,嵌入其中Web里面的HTML代码会被执行,从而达到恶意目的。指利用网站漏洞从用户那里恶意盗取信息。简单理解,就是用户输入中可加入JS等破坏性的代码,而程序没有进行过滤,还执行了这些代码,达到了恶意攻击的目的。需要手动覆盖。主要分为水平越权和垂直越权。举个例子:水平越权:在业务系统中,本来用户A只能对自己的个人信息进行增删改查,但是通过抓包,修改用户id(一般用户id都是递增的),可以获取到其他人的个人信息,或者账号A将自己的个人信息页面通过浏览器发送给用户B,用户B登录系统后可以看到用户A的信息,这就是水平越权了。垂直越权:在业务系统中,本来用户A对某条记录只有查看的权限,但是通过抓包,可以对记录进行修改,这就是垂直越权了。例如密码仅仅采用md5的加密方式,可通过撞库反解密码。对不合法的请求进行了正确的响应,例如去除请求参数,清除HTTP请求体或修改请求方法等等,最后还是返回了状态码200,期望返回除200外的其他状态码。网站中存在恶意站点链接,存在跳转链接,但是要人工自行识别。
|