安全测试的具体应用场景和测试思路
1、语言自身漏洞
常见类型:
Java 原生态反序列化漏洞:反序列化将字节流还原成对象,如果应用对不可信数据进行了反序列化处理,攻击者可以通过构造恶意输入,让反序列化产生非预期的对象,可能带来任意代码执行。
2、业务逻辑漏洞
1)越权类漏洞
安全缺陷:攻击者可以越权操作(增删查改)其他用户的数据。信息安全三要素:保密性、完整性、可用性。这三个要素越权都能破坏:查看破坏保密性, 修改破坏完整性,删除破坏可用性。
常见类型:
水平越权
同级别权限的用户访问其他用户的资源。操作服务端数据时,服务端未验证数据是否归属于请求用户,使得攻击者可操作其他用户数据,导致水平越权漏洞。
垂直越权
低级别权限的用户访问高级别权限的资源,又称为权限提升,主要是由于应用程序没有做权限控制或仅通过JS在前端进行权限控制,导致攻击者猜测到管理页面或绕过前端验证达到权限提升的目的。常出现在后台管理中。
测试方法:
换Cookie:使用两个账号的cookie或者直接切换账号,发送同一个请求包,看相应内容是否相同
换资源ID:关注有特定标识字段的接口,修改该字段的值为非本用户的id,看是否得到响应xml技术的主要应用
解决方案:
开启业务鉴权。如下两种场景:
1、据当前登录用户信息进行业务处理
关键在于
a、使用正确的方式获取用户pin :禁止从Get、Post 参数、Cookie 参数以及Header 头中获取pin 的值,所有获取当前用户身份的方式都应该从session中获取,不以任何客户端传递的明文数据作为鉴权方式。
b、对用户的权限进行校验:任何和账户相关的增删改查都要用当前用户身份去约束。
2、基于业务资源数据进行业务处理的场景
建议
a、安全编码
b、业务系统设计关键编号应设计为不可预测类型(如UUID),尽量避免使用递增数字类型编号,用户可见索引字段尽量设置成无规律
c、资源数据的获取需要增加风控,如采用划分角进行防御
d、对请求来源、请求频率进行限制,在访问数据库之前进行拦截
e、对敏感数据的增删改查导出等需要增加日志记录并定期审计
2)SQL注入漏洞
安全缺陷:应用程序直接将用户输入的内容拼接到SQL语句中执行。在特定条件下,攻击者可以查询数据库中任何数据,同时可以直接获取数据库服务器的系统权限。如操作数据库中数据、拖库、在数据库服务器上执行操作系统命令、DRUID检测(泄露数据库的库表和SQL语句等敏感信息)。
常见类型:
SQL处理时采用拼接模式${param}
解决方案:采用预编译模式#{param}
a、select * from table_A where id =#{id}
b、like concat('%',#{param},'%'}
c、in
<foreach collections='ids' item='item' open='(' separator=',' close=')' >
#{item}
</foreach>
d、order by 在java层面做映射
3)XSS跨站脚本攻击
Cross Site Script, 跨站脚本漏洞 ,通常发生在客户端,攻击者在Web页面中插入恶意JavaScript代码(也包括VBScript和ActionScript代码等),用户浏览此页面时,会执行这
些恶意代码,从而使用户受到攻击。
安全缺陷:未做数据校验或任何数据处理即展示在前端。如数据展示对客户输入校验规则不足,导致可以通过相关编码或者特殊标签来绕过,进而实现XSS攻击。攻击者可以利用此漏洞开展信息窃取、网络钓鱼、蠕虫攻击、内网探测、插入广告、劫持流量、恶意跳转等攻击。
常见类型:
解决方案:
4)文件上传漏洞
安全缺陷:Web 业务系统在处理用户上传文件时 ,未对扩展名进行验证。同时如果用户上传文件的路径、名扩展成为可控数据,就会导致直接脚本木马到 Web 服务器上,直接控制 Web服务器。
编码缺陷:
对上传的文件类型没有校验
设定的文件保存在web目录下,路径不安全
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论