常见高危Web漏洞原理及检测技术分析与研究

本文涉及的产品
Web应用防火墙 3.0,每月20元额度 3个月
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: 随着计算机技术以及信息网络通信技术的高速发展,人们也逐渐意识到信息安全的重要性,网络安全问题成为社会、国家的关注焦点。本文对Web漏洞的类型与原理、Web漏洞扫描技术的原理与应用进行了研究,分析了计算机网络中安全漏洞检测技术的应用策略。

1引言

目前,网络安全形式日益严峻,网络安全威胁不断增加对国家政治、经济、文化、国防安全及公民在网络空间中的合法权益面临诸多风险与挑战。而Web漏洞作为网络安全威胁因素中一个重要来源,更是不能忽视的。因此对Web漏洞进行分析及其检测技术的研究是具有重大意义的。

 

2 Web漏洞原理及其威胁

(1) Web漏洞定义

a) Web漏洞主要指网站程序自身存在致使网络信息系统安全策略相冲突的缺陷,使得系统或其应用数据的保密性完整性可用性访问控制等面临威胁。攻击者基于这些漏洞可能对网络系统构成:敏感信息泄露、身份假冒、拒绝服务、非授权访问等威胁。

(1) Web漏洞的分类

a) 高危漏洞:可以直接被利用的漏洞,且利用难度较低。利用之后可能对网站或服务器的正常运行造成严重影响对用户财产及个人信息造成重大损失。

b) 中危漏洞:利用难度极高,或满足严格条件才能实现攻击的漏洞。或漏洞本身无法被直接攻击,但能为进一步攻击起较大帮助作用的漏洞。

c) 低危漏洞无法直接实现攻击,当信息泄露可能让攻击者更容易找到其他安全漏洞。

(2) 文将着重去介绍、分析常见的 SQL注入漏洞、跨站脚本、使用含有已知漏洞的组件,不安全的反序列化、XML外部实体、文件上传漏洞这六种常的WEB漏洞。

a) 注入漏洞:是指因字符的过滤规则不严谨造成的,攻击者可以将不受用户信任的数据作为命令或者信息发送到服务器解析器。攻击者的恶意数据可以诱使服务器解释器在没有相应授权的情况下执行恶意命令和非法访问数据。最常见的当属SQL注入漏洞,根据注入点的数据类型不同,我们主要将其分为两大类:数字/整数型注入和字符型注入。

数字/整数型注入:

当注入的参数为整数时就是数字型注入,或者叫整数型注入。其SQL语句原型一般为:

SELECT * FROM table WHERE id=1

此处id参数为整数,语句两边没有引号。测试时候可以使用1+2和4-1这种计算结果相同的参数值去构造请示,对比响应结果是否一致,如果两者结果相同就可能存在数字型注入。

字符型注入:

注入参数为字符串时就是字符型注入,其 SQL 语句原型类似:

SELECT * FROM table WHERE name='test'

此处的 name 为字符串参数,两边包含引号。这种类型的注入一般很好判断。

除了这两种类型,常见的搜索型注入,但我们认为其本质仍然属于字符型注入,只是相对特殊,因为此类注入常常用%作为关键字去闭合SQL语句。

实际场景常见的注入方式包含布尔型盲注报错型注入联合查询注入多语句堆叠注入基于时间延迟盲注内联/嵌套查询注入。通常防御 SQL 注入的方法有白名单、参数化查询、WAF、RASP 等方法。如果请求参数有特定值的约束,比如参数是固定整数值,那么就只允许接收整数;还有就是常量值限制,比如特定的字符串、整数值等。这个时候,最好采用白名单的方式。参数化查询是预编译 SQL 语句的一种处理方式,所以也叫预编译查询,它可以将输入数据插入到 SQL 语句中的“参数”(即变量)中,防止数据被当作 SQL 语句执行,从而防止 SQL 注入漏洞的产生。WAF(Web 防火墙)能够抵挡住部分的SQL注入攻击。RASP 不用考虑网络请求中的各种复杂的数据处理过程,只需要在对应的漏洞触发函数进行 Hook 插桩检测等操作,同时 RASP 能够给出漏洞触发的程序上下文,帮助开发人员和安全人员快速定位漏洞代码,并实现漏洞的检测、告警和阻断。

 

b) 跨站脚本(XSS):在常见的Web漏洞中,XSS漏洞无疑是最常多见的。

XSS漏洞具体是指在网页中包含不受信任的、未经恰当验证或转义的数据时,或者使用可以创建 HTML或 JavaScript 的浏览器 API 更新现有的网页时,就会出现 XSS 缺陷。XSS 让攻击者能够在受害者的浏览器中执行脚本,实现盗号、钓鱼欺诈、篡改页面、刷广告流量、网页挂马、挖矿、键盘监听、窃取用户隐私等等恶意行为。

反射式XSS:这种类型的XSS漏会使应用程序或API包括未经过验证的用户进行输入,作为HTML输出的一部分。攻击者事将先制作好攻击链接, 需要欺骗用户自己去点击链接才能触发XSS代码,。换而言之,用户将需要与指向攻击者控制页面的某些恶意链接进行交互。常见形态有广告或非法内容、恶意漏洞网站。

存储式XSS:应用程序或者API将未过滤的用户输入存储下来了,并在后期在其他用户或者管理员的页面展示出来。也就是说,代码是存储在服务器中的,如在个人信息或发表文章等地方加入代码,如果没有过滤或过滤不严,那么这些代码将储存到服务器中,每当有用户访问该页面的时候都会触发代码执行,容易造成蠕虫,盗窃cookie等。

基于DOM的XSS:DOM是一个与平台、编程语言无关的接口,它允许程序或者脚本动态的访问和更新文档内容、结构和样式,处理后的结果仍然能够成为显示页面的一部分。如果DOM中的数据没有经过逻辑严密的确认,就会产生基于DOM的XSS漏洞。这种XSS漏洞一般存在于页面的JavaScript框架、API、单页面程序中,攻击者可以动态的将可控脚本加入其中。

XSS的防御也必须根据不同位置采取不同的方案,具体有四种防御手段:输入检查、输出检查、Httponly Cookie、CSP。在测试XSS时,经常需要输入一些特殊字符,所以在最开始就直接做好输入检查有利于减少被攻击的可能性;XSS的出发关键点在于输出的位置,所以对输出检查尤为重要,当有网站需要支持富文本时,此时采用白名单的方式,直接限制允许输入的标签、字符是最佳方案;如果你在 Cookie 中设置了 HttpOnly 属性,那 JavaScript 脚本将无法读取到 Cookie,这样就能防止通过 XSS 窃取 Cookie,在一定程度上能够减少 XSS 的攻击范围.;内容安全策略(Content Security Policy,CSP)也是减少 XSS 攻击的一种方式 ,是浏览器提供一种防御机制。它采用的是白名单机制,告诉浏览器可以加载和执行哪些外部资源,这样就能防止被一些第三方恶意脚本注入执行,我们可以通过HTTP头信息的Content-Security-Policy的字段和网页的<meta>标签设置去开启CSP。

 

c)  使用含有已知漏洞的组件:组件(例如:库、框架和其他软件模块)拥有和应用程序相同的权限。如果应用程序中含有已知漏洞的组件被攻击者利用,可能会造成严重的数据丢失或服务器接管。使用含有已知漏洞的组件的应用程序和API可能会破坏应用程序防御、造成各种攻击并产生严重影响。

在软件开发或者运行维护就当我们要做到:使用公共数据库(如CVE和CNVD等漏洞中心),项目邮件列表和安全邮件列表中时刻关注这些组件的安全信息并保证它们是最新的;建立组件使用的安全策略,比如需要某些软件开发实践,通过安全性测试保障发全新;在适当的情况下,考虑增加对组件的安全封装,去掉不使用的功能和/或安全薄弱的或者组件易受攻击的方面。

 

d) 不安全的反序列化:在web应用程序中,序列化是把对象转换成有序字节流,通常都是一段可阅读的字符串,以便在网络上传输或者保存在本地文件中。同样,如果我们想直接使用某对象时,就可能通过反序列化前面保存的字符串,快速地重建对象,也不用重写一遍代码,提高工作效率。

不安全的反序列化会导致远程代码执行。即使反序列化缺陷不会导致远程代码执行,攻击者也可以利用改变应用逻辑或者实现远程代码来执行攻击,我们称其为数据结构攻击。包括:重播攻击、注入攻击和特权升级攻击。

 

e) XML外部实体:XML全称可扩展标记语言。与HTML一样,XML使用标签和数据的树状结构。XML外部实体攻击是一种针对解析XML格式应用程序的攻击类型之一,许多较早的或配置错误的XML处理器评估了XML文件中的外部实体引用,攻击一般发生在配置不当的XML解析器处理指向外部实体的文档时。信息安全人员通过构造恶意内容,导致读取任意文件、执行系统命令、内网探测与攻击等危害的一类漏洞。

XML主要的漏洞是XXE,不同的 XML 解析库有不同的关闭方式,比如全面介绍 XXE 防御方案的是 OWASP 发表的“XML External Entity Prevention Cheat Sheet”,针对不同的语言、XML 解析库,给出不同的防御方案,并提供关闭 XML 实体引用的代码示例

 

f) 文件上传漏洞:这是由于在文件上传功能中,由于对用户上传的文件数据未做有效检测或过滤不严,导致上传的恶意文件被服务端解释器解析执行,利用漏洞可获取系统控制权。很多网站都有一些文件上传功能,常见的是图片、视频、压缩文档上传,如果网站是 PHP 写的,那么上传 PHP 到服务器就有可能被解析,若服务器支持其他语言的解析执行,比如 ASP、JSP、ASPX 等文件也可达到同等攻击效果,达到恶意代码执行。

针对这种漏洞,使用WAF拦截木马上传,但这种比较容易被绕过;重编码文件,比如对视频或者图片做转换处理;严格检测上传文件后缀名、文件头、Content-type;限制文件大小和上传的目录不可解析;隐藏上传文件路径相关信息,比如关闭错误回显这些都是常见的安全防护措施。

 

3.WEB漏洞检测技术与研究

现在主流的Web漏洞检测方式基本分为以下三种:SAST(静态应用安全测试)、DAST(动态应用安全测试)和 IAST(交互式应用安全测试)。

SAST(Static Application Security Testing,静态应用程序安全测试)

SAST是通过分应用程序源代码以提早发现安全漏洞,也包括二进制文件的静态逆向分析。在产品形式上,主要体现为代码审计系统等。SAST 分析比较全面,漏洞发现率高,哪怕是当前未能执行到的代码,也可能被发现到漏洞,但是对于它最大的挑战是如何降低误报率。但代码审计本质上就是在误报率与发现率之间相互协调,直到在可接受的范围内找到一个平衡的过程。如果发现率很高,但其中包含过多的误报,告警量多到无法运营的程度,那也等同于没发现。

   DAST(Dynamic Application Security Testing,动态应用程序安全测试)

DAST是对应用程序进行黑盒分析,通常在测试或运行阶段分析应用程序的动态运行状态,通过模拟黑客行为对应用程序进行动态攻击,分析应用程序的反应,从而确定是否存在漏洞。DAST 通过动态发送 payload 来测试漏洞,所以准确率相对较高,而且检测出来后就直接有现成的 PoC(Proof of Concept,概念验证)可以验证。但如果有些代码未执行,就无法发现。因此,跟 SAST 结合使用是最好的方式。DAST在产品上一般体现为漏洞扫描器。

   IAST(Interactive Application Security Testing,交互式应用安全测试)

IAST是近几年兴起的一种应用安全测试新技术,曾被 Gartner 咨询公司列为网络安全领域的 Top 10 技术之一。IAST 融合了 DAST 和 SAST 的优势,漏洞检出率极高、误报率极低,同时可以定位到 API 接口和代码片段。

 

4.结束语

本文介绍了一些常见的Web漏洞特性以及防范技术、当下主流的Web漏洞检测技术,这些漏洞扫描技术在一定程度保证了网络系统的安全。希望信息安全从业人员、开发人员在日常研究工作中能够提防这些漏洞,研究开发下一代新型漏洞检测技术,为网络安全提供保障。

相关文章
|
15天前
|
SQL 存储 XML
常见Web漏洞分析与防范研究
在以上内容中,结合OWASP、Toptal和Brightsec等权威来源的信息,确保回答的专业性和准确性。通过图表和思维导图的方式,可以更系统地了解和记忆Web安全知识,帮助企业在实际应用中更好地防范各种安全威胁。
49 13
|
2月前
|
人工智能 安全 物联网
区块链技术的未来展望:去中心化金融(DeFi)与Web 3.0的融合
区块链技术的未来展望:去中心化金融(DeFi)与Web 3.0的融合
|
2月前
|
前端开发 JavaScript 搜索推荐
HTML与CSS在Web组件化中的核心作用及前端技术趋势
本文探讨了HTML与CSS在Web组件化中的核心作用及前端技术趋势。从结构定义、语义化到样式封装与布局控制,两者不仅提升了代码复用率和可维护性,还通过响应式设计、动态样式等技术增强了用户体验。面对兼容性、代码复杂度等挑战,文章提出了相应的解决策略,强调了持续创新的重要性,旨在构建高效、灵活的Web应用。
56 6
|
2月前
|
中间件 Go API
Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架
本文概述了Go语言中几种流行的Web框架,如Beego、Gin和Echo,分析了它们的特点、性能及适用场景,并讨论了如何根据项目需求、性能要求、团队经验和社区支持等因素选择最合适的框架。
178 1
|
2月前
|
XML 前端开发 JavaScript
PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑
本文深入探讨了PHP与Ajax在Web开发中的交互技术。PHP作为服务器端脚本语言,处理数据和业务逻辑;Ajax则通过异步请求实现页面无刷新更新。文中详细介绍了两者的工作原理、数据传输格式选择、具体实现方法及实际应用案例,如实时数据更新、表单验证与提交、动态加载内容等。同时,针对跨域问题、数据安全与性能优化提出了建议。总结指出,PHP与Ajax的结合能显著提升Web应用的效率和用户体验。
70 3
|
2月前
|
SQL 负载均衡 安全
安全至上:Web应用防火墙技术深度剖析与实战
【10月更文挑战第29天】在数字化时代,Web应用防火墙(WAF)成为保护Web应用免受攻击的关键技术。本文深入解析WAF的工作原理和核心组件,如Envoy和Coraza,并提供实战指南,涵盖动态加载规则、集成威胁情报、高可用性配置等内容,帮助开发者和安全专家构建更安全的Web环境。
96 1
|
2月前
|
负载均衡 监控 算法
论负载均衡技术在Web系统中的应用
【11月更文挑战第4天】在当今高并发的互联网环境中,负载均衡技术已经成为提升Web系统性能不可或缺的一环。通过有效地将请求分发到多个服务器上,负载均衡不仅能够提高系统的响应速度和处理能力,还能增强系统的可扩展性和稳定性。本文将结合我参与的一个实际软件项目,从项目概述、负载均衡算法原理以及实际应用三个方面,深入探讨负载均衡技术在Web系统中的应用。
146 2
|
2月前
|
缓存 安全 前端开发
构建高效Web应用的五大关键技术
【10月更文挑战第42天】在数字化浪潮中,Web应用已成为企业与用户互动的重要桥梁。本文将深入探讨提升Web应用性能和用户体验的五项核心技术,包括前端优化、后端架构设计、数据库管理、安全性增强以及API开发的最佳实践。通过这些技术的应用,开发者可以构建出更快、更稳定且更安全的Web应用,满足现代网络环境的需求。
|
3月前
|
人工智能 前端开发
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
101 0
2024 川渝 Web 前端开发技术交流会「互联」:等你来报名!
|
2月前
|
监控 前端开发 JavaScript
前端技术探索:构建高效、可维护的Web应用
【10月更文挑战第23天】前端技术探索:构建高效、可维护的Web应用
65 0