安全测试-初见朦胧

        安全测试是一种通过评估系统的安全性来识别和解决潜在安全问题的过程。它涉及对系统的漏洞和弱点进行检查,并验证系统对恶意攻击的抵御能力;

        安全测试是在IT软件产品的生命周期中,特别是产品开发基本完成到发布阶段,对产品进行检验以验证产品符合安全需求定义和产品质量标准的过程。

一、安全问题的危害

        信息泄露于普通用户而言,可能会个人生活造成巨大影响。比如,泄露了电话号码,信息可能会在不同场景下被无数次倒卖,会在不合适的时间接收到来自于各个角色的骚扰电话,还能带来诈骗风险。如果信息涉及到了家庭住址,还可能带来人身安全的隐患。如果信息涉及到了电子邮箱,那么有可能收到N多封毫无价值的邮件。

        信息泄露于公司而言,可能会引起重大的社会舆论,造成公司的重大公关事件,甚至影响投资人对公司的信心。同时给竞争对手可乘之机,利用安全事件打压对方,需要很长时间来修复安全问题带来的负面影响。

        历史上发生过许多重大的安全问题。比如,CSDN600万用户信息泄露、Facebook安全事件、共享单车数据泄露事件,均在不同程度上对客户和公司造成了重大影响和损失。当然,阿里作为全球领先互联网公司,每天受到外界攻击达数亿次,也同样会发生不同程度的数据泄露问题。如何在合适的时间通过合适的手段来确保我们服务好客户一直是涉足安全的同学致力学习和研究的方向。

二、安全测试能做什么

       安全测试通过有效的方法和手段,旨在在保证系统功能稳定可用的同时确保应用安全,防止外部攻击、数据泄露,并提升IT产品的安全质量。它的目标是在发布前发现安全问题并修复,以降低成本。同时,安全测试还应该具备合理客观的安全度量,验证安装在系统内的保护机制在实际应用中是否能够有效保护系统,防止非法入侵和各种干扰。

安全测试能够执行以下任务:

1. 识别和评估系统的安全漏洞和弱点:安全测试可以帮助发现和分析系统中的安全漏洞和弱点,包括代码缺陷、配置错误、逻辑漏洞等。

2. 评估系统对恶意攻击的抵御能力:通过模拟攻击者的行为,安全测试可以检查系统在面对不同类型的攻击时的抵御能力,如注入攻击、跨站点脚本、拒绝服务等。

3. 验证身份认证和授权机制:安全测试可以验证系统的身份认证和授权机制是否可靠,确保只有授权用户能够访问系统的敏感功能和数据。

4. 评估数据保护和隐安全测试可以做以下几项工作:

1). 发现系统中的安全漏洞:通过对系统进行渗透测试、漏洞扫描和应用程序安全测试等,可以发现系统中存在的各种漏洞和弱点,如不安全的代码、配置错误、未修补的漏洞等。

2). 评估系统的安全性:通过检查系统的认证和授权机制、数据加密方式、网络安全配置等,可以评估系统对安全威胁的抵御能力,帮助组织了解系统的安全状况。

3). 验证系统的合规性:安全测试可以帮助组织验证系统是否符合相关的安全标准和合规要求,如PCI DSS、ISO 27001等,以确保系统在法律和行业规定的范围内运行。

4). 提供安全建议和改进措施:安全测试结果可以提供有关系统安全缺陷的详细信息以及相关的修复建议,帮助组织优化系统的安全性并采取相应的改进措施。

5). 增强组织的安全防御能力:通过安全测试,组织可以提前发现潜在的安全风险并采取措施加强系统的安全防御能力,减少遭受安全攻击和数据泄露的风险。 总的来说,安全测试是为了发现系统中的安全漏洞、评估系统的安全性和合规性,并提供改进建议,以帮助组织确保系统的安全性和减少安全风险。

三、常见安全漏洞及测试方法&工具

垂直权限问题及测试方法

        垂直权限漏洞是指Web应用没有做权限控制,或仅仅在菜单上做了权限控制,导致恶意用户只要猜到了其他页面的URL,就可以访问或控制其他角色拥有的数据或页面,达到权限提升的目的。

        业务测试过程中,要设计此场景安全测试用例,并切实落地执行:用户A登录后,打开浏览器NetWork,查看所有XHR网络请求。用户B登录后,A的请求,进行重复操作,若可以正当操作,则表示接口存在越权问题。CR过程,要针对有update、delete、add接口做着重观察。

水平权限问题

        水平权限漏洞是指Web应用程序接收到用户请求时,没有判断数据的所属人,或者在判断数据所属人时是从用户提交的参数中获取了userid,导致攻击者可以自行修改userid修改不属于自己的数据。例如,UserA和UserB的权限是一样的,但是A可以看到B的数据,就是发生了水平越权问题。

        容易发生水平越权的地方,除了身份(会话ID)标识外,站点还用其它信息(手机号、员工编码、工号或者使用Hash算法生成的)用来标识用户或用户信息。例如,getAccount.do?accId=12345 ,此类接口就是高危的接口。

        通常情况下,我们会用两个测试账号来访问同一个Url,看能否返回相同的数据,如果能够互通,则说明后端接口为对当前用户做数据隔离,存在水平权限问题。系统功能测试过程中,设计两个测试账号,同时登陆两个测试账号,对比同一个页面的数据是否存在交叉。CR过程中,注意针对查询接口看是否都加上了用户属性作为数据隔离条件。

命令注入/执行

漏洞原理:用户输入被当做/拼接成服务器命令,交由生产网服务器代为执行,从而导致用户可以对服务器执行任意命令,甚至置入木马,反连,提权等风险操作;

测试方法:STC安全扫描;针对需要执行命令的接口,输入”cat /etc/passwd”或”| cat /etc/passwd”或者其他命令看是否会返回该命令的执行结果,只要有一个命令可以返回执行结果,判定有效;

代码注入/执行

漏洞原理:用户输入的代码被服务器直接执行,从而导致用户可以对服务器执行任意命令,甚至置入木马,反连,提权等风险操作;

测试方法:安全扫描;针对需要执行代码的接口,根据可以执行的代码不同构造服务器命令调用的代码进行测试,若可以正常执行,则漏洞有效;

SSRF(服务端请求伪造)

漏洞原理:服务端代理用户对用户输入的URL无条件发起请求,并将response返回给用户。用户可以填写内网的任意IP以及端口,用来进行内网嗅探;

测试方法:STC安全扫描在某测试服务器上搭建对应测试HTTP服务器;在相关业务接口中填写测试服务器地址提交,查看测试HTTP服务器是否会有访问记录,若有则说明有漏洞;

XXE(XML实体注入)

漏洞原理:用户上传XML文件,服务器在进行解析时没有禁止实体解析,导致schema中的URL被访问,造成类似SSRF的风险;

测试方法:安全扫描:在某测试服务器上搭建对应测试HTTP服务器;构造特定XML文件,其中某个schema URL为测试HTTP服务器地址;在XML上传接口上传该文件,若有看到测试服务器访问记录则有漏洞;Java业务建议使用集团扫描器进行扫描

反序列化漏洞

漏洞原理:从用户可控的位置(cookie,参数)中读取序列化字符串,在服务端进行反序列化代码执行操作,因为反序列化的内容可以写入任意代码,导致代码注入执行

测试方法:安全扫描;构造可执行服务器命令的序列化字符串,填入对应参数/cookie中看是否可以执行成功;

SQL注入

漏洞原理:用户输入的参数会直接拼接进入SQL语句中实现业务逻辑,若参数为精心构造的SQL语句,将会产生本意之外的SQL执行,比如拆解sql的root密码,进一步拖库

测试方法:安全扫描;使用sqlmap进行sql注入扫描;

JSONP劫持

漏洞原理:Jsonp跨域提供数据传输时,未对访问来源进行判断,导致可被未授权的他方读取接口中的敏感信息;

测试方法:安全扫描;通过burpsuite抓包,若发现有用户个人标识/资源标识出现在参数或者cookie中时,尝试修改并重放请求,若返回正常则存在漏洞

任意URL重定向

漏洞原理:业务进行跳转的URL的域名可以被用户任意修改(跳转目标url在某个参数/cookie中),从而跳转至伪造的钓鱼网站,引导用户在网站上进行敏感信息输入,从而

测试方法:安全扫描;修改跳转目标URL参数,若能跳转则有漏洞;

XSS(跨域脚本攻击)

漏洞原理:用户输入的内容,不经过处理直接展示在web页面上,若用户输入的是可执行的js脚本将会被直接执行,则可能导致session_id被盗取,csrftoken被盗取,jsonp劫持refer防御失效,同域名下敏感信息页面被盗取等后果

测试方法:安全扫描;在输入框输入”< >’ “ &”,当该输入框内容展示在页面上的时候,查看页面源码,若原样输入,则有漏洞,若被转义成”&lt,&gt”等html实体,则说明做了安全防护;

CSRF(客户端请求伪造)

漏洞原理:常规http接口的path,method, 参数等内容完全可以被拆解,有人会伪造某些高危操作接口(比如点赞,收藏,好评),将该接口伪装之后(比如生成短链接,二维码)发送给其他用户点击,此时等于在不知情情况下做了一些对自己有害的操作

测试方法:安全扫描;使用burpsuite进行抓包,将参数中的token删除,或者设置为空,重放请求,若正常访问则说明有漏洞;

短信/邮件/电话炸弹

漏洞原理:短信/电话号码,邮箱地址由用户填写,并且可以无频率次数的给其发送信息,打电话,用以进行骚扰用户;

测试方法:安全扫描;使用burpsuite进行信息发送接口抓包,并利用repeater功能进行批量访问,如果每次都成功说明没有做防护;

登录口爆破

漏洞原理:登录口设计不当,风控策略缺失/不得当,可以进行用户名密码爆破

测试方法:安全扫描;使用burpsuite,构造弱口令字典,使用repeater功能访问登录接口;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值