您的想法,我们来实现

丰富网站建设经验,连续三年获得国家科技型企业认定!

为了对Web安全建立起较为系统的整体认知,这里对常见的Web安全漏洞类型做一番梳理归纳,内容主要参考自OWASP组织历年来所发布的相关研究项目文档。

01:注入类漏洞

1)SQL注入(SQL Injection)

由于程序对SQL相关的部分敏感字符缺乏必要的过滤或转义处理,攻击者便可将恶意SQL指令嵌入到用户提交的数据当中,借此诱导服务器执行这些非法的SQL命令,从而非法获取内部系统权限及相关数据。

风险表现:读取或篡改数据库内容,进而获取服务器或管理员级别的权限。

常见类型: a、数值型注入 b、字符型注入

其他注入方式: c、伪静态注入 d、GET与POST方式注入 e、Cookie注入

常见Web漏洞类型盘点:SQL注入、XSS、CSRF……

2)SQL盲注(SQL Blind Injection)

a. 基于布尔逻辑的盲注(Boolean-Based)

在SQL注入过程中,应用程序往往只会返回真(True)或假(False)两种页面结果,攻击者无法直接从返回页面中获取数据库的具体信息,但可以通过构造各类逻辑判断条件(例如数值大小比较),依据服务端返回的不同页面结果来推断出所需的数据库信息。

b. 基于时间延迟的盲注(Time-Based)

注入的SQL代码虽然会影响后台数据库的执行逻辑,但此时前端页面始终呈现相同的True页面结果,唯一的差异在于页面响应所耗费的时间长短不同,攻击者便可依据这种时间差异来判断注入语句中逻辑条件的真假,从而逐步获取数据库相关信息。

3)OS命令注入

即OS Command Injection,指应用程序在使用外部输入的字符串,或使用受外部因素影响的字符串来拼接系统命令时,倘若未能进行有效的安全过滤与防范,便可能引发操作系统层面的命令注入攻击,严重时甚至可能操控服务器相关权限。

4)Xpath注入

攻击者利用XPath解析器在输入处理上较为宽松、容错性较强的特点,在URL、表单或其他信息载体中附带恶意构造的XPath查询语句,借此获取权限相关信息的访问许可,并进一步篡改这些信息内容。

02:身份认证与会话管理失效

用户身份认证与会话管理机制,堪称一个应用程序运行过程中最为核心的环节之一,一旦相关设计存在缺陷,便会对整个流程造成严重破坏。在Web应用程序的开发实践中,开发人员往往只专注于实现应用所需的功能,通常会自行设计一套定制化的身份认证与会话管理方案。然而,要将这类自定义方案做到真正安全可靠,其实难度相当大,因此这些自建方案常常会在诸如退出登录、密码管理、超时机制、"记住我"功能、密保问题、账户信息更新等环节中暴露出安全漏洞。

03:敏感信息泄露

近年来,这类问题已成为最常见、影响也最为深远的攻击方式之一。该领域最普遍存在的漏洞,便是未能对敏感信息进行有效加密处理。在数据加密的具体实现过程中,常见的问题包括密钥生成与管理机制不够安全,以及采用了强度较弱的加密算法、通信协议和密码策略,其中尤以使用弱哈希算法来保护密码这一问题最为突出。

攻击者往往并不会直接对密码本身发起攻击,而是转而在数据传输环节,或从客户端(例如浏览器)窃取密钥,发起中间人攻击,又或是直接从服务器端窃取明文数据。

04:XML外部实体注入(XXE)

在默认配置下,不少历史版本较早的XML处理器都支持对外部实体、以及XML处理流程中被引用和解析的URI进行规范化处理。倘若攻击者能够上传XML文档,或是在已有的XML文档中植入恶意内容,便可借助存在缺陷的代码、依赖库或系统集成环节,对这类有漏洞的XML处理器发起攻击。

XXE漏洞可被用于窃取数据、发起远程服务器请求、扫描内部网络系统、实施拒绝服务攻击,乃至其他多种形式的恶意行为。

05:访问控制失效

由于普遍缺乏自动化的检测手段,加之应用程序开发人员往往未能开展充分有效的功能测试,访问控制方面的漏洞可谓相当常见。此类漏洞通常难以通过自动化的静态或动态测试手段有效识别,人工测试才是发现访问控制缺失或失效问题的最佳途径,具体涉及HTTP方法(如GET、PUT)、控制器逻辑、直接对象引用等多个方面。

攻击者可借此冒充普通用户、管理员,乃至拥有特殊权限的用户身份,从而实现对任意记录的创建、访问、更新或删除操作。

06:安全配置错误

安全配置错误几乎可能出现在应用程序技术栈的任何层级,涵盖网络服务、运行平台、Web服务器、应用服务器、数据库、开发框架、自定义代码,以及预装的虚拟机、容器和存储环境等各个方面。借助自动化扫描工具,通常可以检测出安全配置的错误、默认账户的滥用或不当配置、冗余无用的服务,以及遗留的过时选项等问题。

一般而言,攻击者往往能够借助未及时修复的漏洞、默认账户信息、已废弃却仍可访问的页面、以及缺乏防护的文件和目录等途径,实现对系统的未授权访问或信息窃取。

07:跨站脚本攻击(XSS)

XSS在OWASP Top10榜单中位列第二常见的安全问题,几乎存在于近三分之二的应用程序当中。由于程序缺乏对特定敏感字符的过滤或转义处理,攻击者得以在URL地址或输入框中提交恶意的HTML/JS代码,一旦这些代码被成功执行,便能获取用户或程序层面的敏感信息。

反射型与DOM型XSS所造成的危害程度相对中等,而存储型XSS的威胁则更为严重,例如可能在受害者浏览器端执行远程恶意代码,进而窃取用户凭证与会话信息,或是传播恶意软件等。

08:不安全的反序列化

反序列化漏洞由来已久,历经十余年发展,广泛存在于各类编程语言当中,其中尤以Java、PHP、Python、Ruby等语言最为典型。此类漏洞的本质,在于反序列化机制打破了原本数据与对象之间的边界,导致攻击者植入的恶意序列化数据在反序列化处理过程中被还原为可执行对象,一旦攻击者掌控了这些对象,便有可能在目标系统上执行恶意攻击代码。

09:使用含有已知漏洞的组件

这类安全隐患极为普遍。基于组件化的开发模式,导致大多数开发团队往往并不完全清楚自身应用或API所依赖调用的具体组件构成,更谈不上及时对这些组件进行版本更新与维护。诸如Retire.js之类的扫描工具虽能帮助识别此类漏洞,但这些漏洞是否具备实际可被利用的条件,仍需投入额外的时间加以深入研究验证。

10:日志记录与监控机制不足

日志记录与监控机制的缺失,几乎为每一起重大安全事件的发生埋下了隐患温床。攻击者正是利用监控层面的疏漏以及响应处置的滞后,得以在不被察觉的情况下达成其攻击目的。

根据相关行业调研数据,这一问题也因此被纳入了Top10之列。判断自身监控体系是否完善的一个有效方法,便是在完成渗透测试后仔细核查日志记录,测试人员的各项操作行为理应被完整记录下来,并能够清晰反映出这些操作所造成的实际影响。

多数攻击行动往往都是从漏洞探测阶段开始的,一旦放任这类探测行为发生,攻击成功的概率几乎会被提升至接近100%;据统计数据显示,2016年一起数据泄露事件从发生到被发现,平均耗时长达191天,而在如此漫长的时间窗口内,实际损害早已悄然造成。

11:跨站请求伪造(CSRF)

CSRF攻击的核心原理,在于利用部分Web应用程序的特性,使攻击者能够预先掌握某一特定操作的全部细节。由于浏览器会自动携带会话Cookie等身份认证凭证发送请求,攻击者便可借此构造恶意网页,生成看似合法实则伪造的请求,而这类伪造请求往往极难与真实合法请求区分开来。

攻击者能够诱导受害用户在不知情的情况下,完成该用户权限范围内的任意状态变更操作,例如更新账户资料信息、完成购物下单流程,乃至执行注销或登录等操作行为。

12:未经验证的重定向与转发

应用程序在实际运行中,经常会将用户重定向跳转至其他页面,或以类似方式实现内部转发功能。而在部分情况下,目标页面的具体地址是通过一个未经充分验证的参数来指定的,这就给了攻击者可乘之机,使其能够自行选定重定向的目标页面。

攻击者往往会链接至这类未经验证的重定向地址,并诱导受害者点击访问。由于该链接本身指向的是合法有效的网站,受害者往往难以察觉异常并容易点击进入。攻击者借此利用不安全的转发机制来绕过既有的安全检测环节。

此类重定向操作,可能被用于试图植入恶意软件,或诱使受害者泄露密码等敏感信息。而不安全的转发机制,同样也可能被用来绕过正常的访问控制体系。

13:弱口令漏洞

所谓弱口令(weak password),目前并没有一个严格且统一的标准定义,通常来说,凡是容易被他人(尤其是对你有一定了解的人)猜测出来,或是容易被破解工具直接破解的密码,都可归入弱口令范畴,例如生日日期、姓名信息、简单的连续数字或字符组合等。

14:文件上传漏洞

文件上传漏洞,指的是网络攻击者成功将某个可执行文件上传至服务器并使其得以执行的安全隐患。此处所上传的文件,可能是木马程序、病毒代码、恶意脚本,又或是WebShell等。绝大多数文件上传漏洞一旦被成功利用,攻击者往往都会在系统中留下WebShell,以便日后能够更为便捷地重新进入目标系统。攻击者一旦在受影响系统中植入或写入WebShell,便可借助该WebShell,以更为轻松且隐蔽的方式,在目标服务中肆意妄为。

WebShell本质上是一种以asp、php、jsp或cgi等网页文件形式存在的命令执行环境,也可将其形象地称为一种"网页后门"。攻击者在成功入侵某个网站之后,通常会将这些asp或php格式的后门文件,与网站服务器Web目录下原本正常的网页文件混杂放置在一起,随后借助浏览器访问这些后门文件,从而获得一个命令执行环境,最终实现对网站服务器的完全掌控(可执行文件的上传下载或修改、数据库操作,乃至执行任意系统命令等)。

15:缓冲区溢出

在计算机系统内部,输入数据通常会被暂存于一块临时存储空间之中,这块空间即被称为"缓冲区",其长度大小事先已由程序或操作系统预先设定完毕。当向缓冲区填充数据时,倘若数据长度过长、超出了该缓冲区本身所能容纳的最大容量,多余的数据便会溢出到存储空间之外,进而覆盖掉原本合法存储于此处的数据内容。

操作系统所使用的这类缓冲区,又被称为"堆栈",在各个运行进程之间,相关指令会被临时存放于堆栈当中,因此堆栈同样也可能出现缓冲区溢出的情况。当一段超长数据涌入缓冲区时,超出部分便会被写入到其他相邻的缓冲区当中,而这些相邻缓冲区原本存放的内容,可能是其他数据、指向下一条指令的指针,又或是其他程序的输出结果,这些原有内容便会因此被覆盖或破坏。

16:业务逻辑漏洞

业务逻辑漏洞本质上属于一种设计层面的缺陷,具体表现为系统设计者或开发人员在思考决策过程中所作出的某些特定假设,存在明显或隐含的逻辑错误。攻击者往往会特别留意目标应用程序所采用的具体业务逻辑方式,设法揣摩出设计者与开发者在开发过程中可能做出的各类假设,进而思考该如何突破、攻破这些既有假设。攻击者在挖掘此类逻辑漏洞时,通常会重点关注两大方向:一是业务流程本身,二是对http/https请求内容的篡改。

业务逻辑漏洞较为常见的高发场景,主要集中在账户相关环节(如注册、登录、密码找回)、交易流程、支付环节,以及个人信息修改等方面。

常见问题

Q1:SQL注入和SQL盲注有什么本质区别? SQL注入通常能够直接从页面回显中获取到数据库返回的具体数据内容;而SQL盲注则是在页面没有任何直接数据回显的情况下,攻击者只能通过页面返回的真假结果,或是响应时间的长短差异,间接推断出数据库中的信息,因此盲注的利用难度相对更高,但同样具备较大的危害性。

Q2:为什么说XSS的危害在存储型场景下更为严重? 反射型和DOM型XSS通常需要诱导受害者点击特定的恶意链接才能触发,攻击范围相对有限;而存储型XSS的恶意代码会被永久保存在服务器端(如评论、留言等内容中),只要有用户正常访问该页面就会被触发,影响面更广、持续时间更长,因此危害程度也更为突出。

Q3:文件上传漏洞和WebShell之间是什么关系? 文件上传漏洞是攻击者得以将恶意文件成功传入服务器的"入口",而WebShell则是攻击者利用该漏洞植入后、用于长期控制服务器的"工具"。换句话说,文件上传漏洞是手段,WebShell是攻击者借此手段最终达成的持久化控制目标。

Q4:企业该如何应对"使用含有已知漏洞组件"这类风险? 建议建立常态化的组件资产梳理机制,明确应用或API中实际使用了哪些第三方组件及其版本信息,并借助Retire.js等扫描工具定期排查已知漏洞,同时保持组件版本的及时更新,避免因组件老旧而遗留可被利用的安全隐患。

Q5:日志监控不足为什么会被列入安全漏洞的重要类别? 即便系统本身部署了较为完善的防护措施,倘若缺乏充分的日志记录与实时监控,攻击者的探测和入侵行为便很可能在很长一段时间内不被发现,从而错失最佳的响应处置时机,导致损害持续扩大。因此,日志与监控体系的完善程度,直接关系到企业能否第一时间察觉并遏制安全事件的发生。


我们凭借多年的网站建设经验,坚持以“帮助中小企业实现网络营销化”为宗旨,累计为4000多家客户提供品质建站服务,得到了客户的一致好评。如果您有网站建设、网站改版、域名注册、主机空间、手机网站建设、网站备案等方面的需求...
请立即点击咨询我们或拨打咨询热线: 0597-2992968,我们会详细为你一一解答你心中的疑难。项目经理在线
在线客服
联系方式

热线电话

0597-2992968

上班时间

周一到周五

微信公众号
微信
在线客服