一、信息安全三要素
完整性:保证信息在存储、使用和传输过程中被未经授权的用户篡改; 确保信息内外一致,避免授权用户篡改不适当的信息。 信息的完整性是指在信息的利用、发送、保存中没有变更、丢失、错误等。 例如:使用burpsuite工具可以拦截篡改业务数据,就会破坏信息的完整性。
可用性:指允许授权用户在需要时访问所需的信息。 这意味着,在批准者需要时,可以立即获得与信息相关的信息资产。 提供信息的系统必须正确接受攻击,并在失败时恢复。 例如:使用DOS/DDOS攻击可以使服务端瘫痪,从而使正常的用户无法及时访问使用
保密性:指只允许被授予特定权限的人访问信息。 机密性取决于信息访问的对象数量,所有人都可以访问的信息通常是公共信息被限制访问的机密信息。 根据信息的重要程度和保密要求可以分为不同的机密等级。 例如:越权,访问没有权限的数据,就不符合保密性
一些其他附加属性:
不可否认性: 信息的不可否认性也叫抗抵赖性、不可抵赖性。例如:签名、水印
可控性: 信息的控制性是指能够控制利用信息资源的人和主体的手段。例如:各种认证
可靠性: 是信息用户满意的质量持续服务用户的特征,但也有人认为可靠性要求信息系统,但不是信息本身。
二、测试方法
开发访谈:制定开发检查项,做checklist,例如:使用哪种加密方式、这种加密方式是否已被证实不安全(MD5),使用了那些敏感信息,这些信息用什么方式传输和存储,业务逻辑在后端使用
工具扫描:WEB、主机、系统、容器、组件……
业务流程人工检索:熟悉系统业务的人员针对性测试
三、涉及方向
主机/系统/容器安全:工具扫描(Nessus、Nmap),人工排查
网络传输:工具排查
代码审计:工具扫描(fortify SCA),人工走查
数据存储:人工排查
web应用安全:工具扫描(burpsuite、Appscan),人工排查
四、测试之后做整改
checklist:不满足的检查项被提出来要求整改,不合规的确实无法满足的要上报信息安全委员会评估报备。
扫描报告:分析漏洞类型,确认高危(High)类型,核实是否误报。(一些漏洞会使用模板插件中给定的模式去篡改原请求,但是这些篡改的参数并未使用或者没有参考意义)
怎么分析扫描报告:
1、获取扫描报告中的漏洞简称
2、找到对应扫描工具的漏洞库列表( 例如Burpsuite的漏洞库 )
3、找到漏洞库里面对应漏洞的详细威胁信息,结合实际情况分析是否误报,是否需要整改
五、主要涉及范围
六、一些常见的漏洞概念
类型 |
简单描述 |
失效的身份验证机制 |
只对首次传递的Cookie加以验证,程序没有持续对Cookie中内含信息验证比对,攻击者可以修改Cookie中的重要信息以提升权限进行网站数据存取或是冒用他人账号取得个人私密资料(测试对象:可以进行传参的URL,提交请求页面,登录后的Cookie) |
会话管理劫持 |
检测Web应用程序会话机制是否存在安全隐患,能否被非法利用(会话劫持,伪装成合法用户)而影响Web应用程序的安全。 |
SQL注入 |
注入攻击漏洞,这些攻击发生在当不可信的SQL语句作为命令或者查询语句的一部分,被发送给解释器的时候。攻击者发送的恶意数据可以欺骗解释器,以执行计划外的命令或者在未被恰当授权时访问数据。 |
XPath注入 |
XPath注入攻击是指利用XPath 解析器的松散输入和容错特性,能够在URL、表单或其它信息上附带恶意的XPath 查询代码,以获得权限信息的访问权并更改这些信息。XPath注入攻击是针对Web服务应用新的攻击方法,它允许攻击者在事先不知道XPath查询相关知识的情况下,通过XPath查询得到一个XML文档的完整内容。 |
XSS跨站脚本攻击 |
恶意攻击者往Web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中Web里面的html代码会被执行,从而达到恶意用户的特殊目的。 |
CSRF跨站请求伪造 |
攻击者通过调用第三方网站的恶意脚本来伪造请求,在用户不知情的情况下,攻击者强行递交构造的具有“操作行为”的数据包。(测试对象:网页中可进行输入的表单) |
不安全的直接对象引用 |
在具有导出/下载功能的页面参数中修改内容,WEB服务器便会导出/下载程序源代码或者指定文件(测试对象:URL中有用户参数的地址,可以进行下载操作的地址)或者当开发人员暴露一个对内部实现对象的引用时,例如,一个文件、目录或者数据库密匙, 就会产生一个不安全的直接对象引用。在没有访问控制检测或其他保护时,攻击者会操控这些引用去访问未授权数据 |
安全配置错误 |
Config中的链接字符串以及用户信息,邮件,数据存储信息等都需要加以保护,如果没有进行保护,那么就是安全配置出现了问题。 |
不安全的加密存储 |
未对需要保护的数据进行加密或者加密算法太弱都是不安全的加密存储 |
没有限制URL访问 |
系统已经对URL的访问做了限制,但这种限制却实际并没有生效。攻击者能够很容易的就伪造请求直接访问未被授权的页面(测试对象:需要身份验证的页面) |
传输层保护不足 |
在身份验证过程中没有使用SSL/TLS,因此暴露传输数据和会话ID,被攻击者截听。它们有时还会使用过期或者配置不正确的证书。(测试对象:登录模块) |
未验证的重定向(redirectUrl)和转发 |
攻击者可以引导用户访问他们所要用户访问的站点。而最终造成的后果,重定向会使得用户访问钓鱼网站或是恶意网站。 |
敏感信息泄露 |
许多Web应用程序没有正确保护敏感数据,如信用卡、税务ID和身份验证凭据。攻击者可能会窃取或篡改这些弱保护的数据以进行信用卡诈骗、身份窃取或其他犯罪。敏感数据值需额外的保护,比如在存放或在传输过程中的加密,以及在与浏览器交换时进行特殊的预防措施。 |
功能级访问控制缺失 |
大多数Web应用程序的功能在UI页面显示之前,会验证功能级别的访问权限。但是,应用程序需要在每个功能被访问时在服务器端执行相同的访问控制检查。如果请求没有被验证,攻击者能够伪造请求从而在未经适当授权时访问功能。 |
使用含有已知漏洞的组件 |
组件,比如:库文件、框架和其他软件模块,几乎总是以全部的权限运行。如果使用含有已知漏洞的组件,这种攻击可以造成更为严重的数据丢失或服务器接管。应用程序使用带有已知漏洞的组件会破坏应用程序防御系统,并使一系列可能的攻击和影响成为可能。危害比较严重 |
缓冲区溢出 |
当计算机向缓冲区内填充数据位数时超过了缓冲区本身的容量,溢出的数据覆盖在合法数据上。 |
LDAP注入 |
利用LDAP注入技术的关键在于控制用于目录搜索服务的过滤器。使用这些技术,攻击者可能直接访问LDAP目录树下的数据库,及重要的公司信息。情况还可能比这更严重,因为许多应用的安全性依赖于基于LDAP目录的单点登录环境。 |
篡改输入 |
利用一些命令或者工具等篡改一些字段的值,从而达到恶意的效果。例如,篡改商品的单价和数量等。 |