浅析常见WEB安全漏洞及其防御措施

在网络攻防中,Web系统通常是攻击者的首选目标,攻击者大都通过Web打点的方式,先拿到边界Web服务器的权限,再以此为跳板实施内网横向渗透。由于Web系统通常涉及大量的用户数据和敏感信息,一旦受到攻击或破坏,可能造成数据泄露、服务中断等影响。

相较于攻击方,Web系统也是防守方的重点防护对象。作为安全开发或安全运营人员,及早发现和修复潜在的WEB安全漏洞,不仅有助于提高互联网业务系统的稳定性,也能降低后期安全运营工作的压力和成本。

基于在某单位的实习经历以及日常工作学习总结,本文从安全攻防的角度针对常见Web漏洞的攻击原理、潜在危害和防御措施进行归纳,以期帮助安全开发或安全初学者更好地理解、应对和预防Web应用中可能出现的安全问题。

1.1漏洞简介

>根本成因:后台对用户输入参数未进行任何处理,直接代入SQL语句执行。

>常见危害:数据库的信息泄露、添加系统账号、读/写文件获取Webshell等。

1.2漏洞分类

针对SQL注入的分类没有固定的规范,可从不同的维度分为不同的类型,如:基于注入参数类型、基于请求提交方式、基于获取信息方式等。(备注:推荐第三种分类方式,更完备)。

>基于注入参数类型的不同,可将SQL注入分为:数字型的注入、字符型的注入。

>基于请求提交方式的不同,可将SQL注入分为:GET注入、POST注入等类别。

>基于获取信息方式的不同,可将SQL注入分为:有回显的注入、无回显的注入。

1有回显的注入

(1)基于联合查询的注入:攻击者利用UNION操作符,将恶意查询与应用程序原始查询合并,从而获取额外的数据库信息。攻击者通过不断尝试联合查询,可逐步获取数据库内容。

针对数据库的SQL注入攻击,其常规步骤是:首先通过orderby或selectnull获取返回数据的列数和位置,其次从information_schema表中查询当前数据库的表信息、表的字段信息、以及字段对应的数据。

#查数据库中的表

#查指定表的字段,如:students

payload='selectgroup_concat(column_name)frominformation_schema.columnswheretable_name='students''#查指定字段的值,如:username

(2)基于报错的注入:利用应用程序返回的错误消息来获取数据库信息。攻击者通过构造恶意输入,触发SQL错误,进而从错误消息中收集敏感信息,如表名、列名或等。

2无回显的注入

核心语句:

1'andif(substr(({payload}),{i},1)='{j}',sleep(5),1)--+参数简介:payload(获取数据库敏感信息的SQL查询语句),i(当前遍历的字符下标),j(目标字符)

功能描述:逐个遍历返回的字符串,如果匹配了目标字符,则整个查询会sleep五秒,否则直接返回。

1'andif(substr(({payload}),{i},1)='{j}')--+参数简介:payload(获取数据库敏感信息的SQL查询语句),i(当前遍历的字符下标),j(目标字符)

功能描述:逐个遍历返回的字符串,如果匹配了目标字符,则and右侧结果为TRUE,否则为FALSE。

3其它类型注入

(1)堆叠注入:该类型允许攻击者在一次注入中执行多个SQL查询,从而实现更复杂的攻击。其中,攻击者可以在原始查询后面添加多个SQL语句,以执行各种操作。

(2)二次注入:攻击者首先将恶意输入提交给应用程序,但不会立即执行SQL查询。相反,应用程序可能会将输入存储在数据库中,然后在后续请求中使用。攻击者在后续请求中利用存储的恶意输入来触发SQL注入。

(3)宽字节注入:该类型是一种特定类型的字符编码注入,通常与多字节字符集一起使用,例如UTF-8。其中,该类型的注入攻击通常涉及将特殊编码字符插入到输入中,以绕过输入过滤和验证,然后执行恶意操作。

1.3防御策略

输入参数的过滤:对于用户输入数据,进行严格的验证和过滤,只允许合法和预期的字符通过。相对而言,建议使用白名单机制,以确保只有有效的数据进入数据库。

使用参数化查询:使用参数化查询语句(PreparedStatements,即:预编译语句)是防止SQL注入的首选方法。该方法可将用户的输入数据作为参数传递给SQL查询,而不是将其嵌入到SQL语句中,即确保输入数据不会被解释为SQL代码,从而可阻止SQL注入攻击。

最小权限的原则:数据库用户应该被授予最小的权限,以执行需要的操作。这样,即使发生了SQL注入,攻击者也只能访问被允许的数据和操作,无法对整个数据库进行攻击。

2.1漏洞简介

XSS漏洞的本质是源于应用程序未能充分过滤或转义用户提供的输入数据,使攻击者能够将恶意脚本注入到Web页面上,然后在受害者的浏览器中执行这些脚本。该漏洞发生在客户端,控制用户浏览器的一种攻击。

(2)JS恶意挖矿:攻击者可以通过XSS漏洞注入JavaScript代码,使受害者的浏览器在访问受感染页面时开始挖取加密货币,从而消耗受害者的计算资源,让其电脑变得缓慢。

(4)XSS蠕虫:攻击者可以通过XSS漏洞注入恶意JavaScript脚本,该脚本可以自动传播到其他用户,形成XSS蠕虫。这种蠕虫可以在用户之间传播,并导致更广泛的攻击。

2.2漏洞分类

根据攻击类型和漏洞执行的不同,XSS漏洞主要分为以下三种类型:反射型XSS(ReflectedXSS)、存储型XSS(StoredXSS)、DOM型XSS(DOM-basedXSS)。

1、反射型XSS:反射型XSS是指在用户的请求中注入恶意脚本,然后这些脚本在服务器上被反射回来,最终在受害者的浏览器中执行。其中,攻击者通常需要引诱受害者点击特定链接或访问恶意网站才能触发漏洞。

>注入的恶意代码通过浏览器传入到服务器后,又被目标服务器反射回来,在浏览器中解析并执行。

>黑客需要诱使用户点击恶意链接,才能攻击成功。恶意代码会经过服务器,但不存储到数据库中。

2、存储型XSS:存储型XSS是指攻击者将恶意脚本注入到应用程序的数据库或存储中,这些脚本会被存储并在后续访问受害者的页面时执行。其中,这种类型的XSS漏洞通常用于攻击社交媒体、留言板、博客等需要存储用户输入的应用。

>攻击者将恶意代码传入到服务器后,将被永久存放在目标服务器的数据库或存储中。>用户访问存在漏洞的页面就会触发恶意代码执行,一般无需诱使用户点击恶意链接。

3、DOM型XSS:DOM型XSS漏洞发生在浏览器的客户端,而不是在服务器上。攻击者通过修改页面上的DOM结构,来触发漏洞。其中,该漏洞通常不会向服务器发送恶意脚本,通常难以检测和防御。

>通过修改页面的DOM节点形成的XSS漏洞,这是客户端脚本自身解析不正确导致的安全问题。>与反射型和存储型XSS的区别是,DOM型XSS的攻击代码不会与后台交互、流量不经服务端。

2.3防御策略

输入过滤:过滤用户输入,删除或禁用可能包含恶意代码的标签、脚本和特殊字符。同时,可对用户输入的数据进行验证,包括检查数据类型、长度和格式等,只接受合法的输入。

输出编码:在输出数据到HTML页面时,应该对其进行适当的编码,目的是防止浏览器将用户输入解释为可执行的脚本。其中,不同的输出位置应采用不同的编码方式,如:HTML编码、JS编码、CSS编码等。

HttpOnly和Secure标志:对于Cookie,使用HttpOnly标志可以防止JavaScript访问它们,从而减少了对会话Cookie的窃取风险。同时,在敏感数据传输时可使用Secure标志,确保只在安全的HTTPS连接下传输Cookie。

3.1漏洞简介

文件上传漏洞的本质是应用程序未能验证和限制上传文件的类型、大小和位置,导致攻击者可以上传包含恶意代码的文件,从而对服务器和应用程序构成威胁。其中,文件上传漏洞可能导致以下危害:

(1)恶意文件执行:攻击者可以上传包含恶意代码的文件,该文件可以在服务器上执行任意命令,从而接管服务器的控制权限。即:WebShell。

(2)拒绝服务攻击:攻击者可以上传大型文件,消耗服务器资源,导致服务器性能下降或完全停机,从而影响正常服务。

(4)敏感数据泄漏:如果攻击者能够上传文件到应用程序的敏感目录,他们可能会访问和窃取敏感数据,如数据库备份文件或配置文件。

3.2防御策略

文件类型白名单:应用程序应限制允许上传的文件类型,只接受符合要求的文件类型,例如:图像、文档或压缩文件,同时以白名单形式对扩展名进行校验。

文件大小限制:应用程序应限制上传文件的大小,以防止攻击者上传过大的文件来消耗服务器资源。同时,服务器也应配置合适的请求大小限制。

文件名随机化:在保存上传文件时,将文件名随机生成,而不是使用原始文件名。这可以防止攻击者尝试上传恶意文件并覆盖现有文件。

隔离上传文件:上传的文件应该保存在与应用程序代码和数据分离的目录中,以防止攻击者通过上传的文件访问敏感数据或执行代码。如:限制目录下文件的执行权限、

如上所述,针对文件上传漏洞的防御策略主要包括限制文件类型、文件大小、文件名随机化以及隔离上传文件等措施。其中,尽管文件类型和大小的验证机制可以在客户端(通过JavaScript)或服务器端完成,但客户端验证容易受到绕过,因此服务器端验证至关重要。

4.1漏洞简介

>攻击者的行为:欺骗浏览器,让其以受害者的名义执行自己想要的操作。

与XSS攻击的对比>相同点:二者都在客户端执行恶意代码。>不同点:XSS攻击主要以窃取用户身份凭证(Cookie)为目的,而CSRF不会窃取用户身份凭证,只是借用了用户身份凭证发起恶意请求。

4.2防御策略

CSRF令牌:CSRF令牌是一种有效的防御策略。其中,在表单提交或敏感操作的请求中包含一个随机生成的CSRF令牌,服务器在接收请求时验证令牌的有效性,如果令牌无效或丢失,则拒绝请求。

图形验证码:在敏感操作处,添加图形验证码。虽然该机制可有效防御CRSF攻击,但需要综合考虑用户体验问题。

相对而言,CSRF令牌是比较推荐的一种机制,不容易被绕过,且不会影响用户体验。其中,Token要足够随机,每次请求成功后要更新Token,防御被攻击者预测。同时要注意Token的保密性,在敏感操作使用Post而非GET,防止Token出现在URL中。

5.1漏洞简介

SSRF漏洞(Server-SideRequestForgery,服务端请求伪造)允许攻击者通过伪造请求,使目标服务器发起与应用程序本身有关的请求,从而可能导致各种安全问题。

通常情况下,SSRF攻击的目标是从外网无法访问的内部系统,可能导致敏感数据泄露(读取服务端的本地文件)、内网端口扫描探测、攻击内网WEB服务等问题。其中,在对内网攻击时,其通常利用的伪协议有:dict协议、file协议、gopher协议等。

>dict协议扫描内网端口url=dict://127.0.0.1:22

>通过file协议查看文件url=file:///etc/passwd

5.2防御策略

输入验证和白名单控制:对于用户提供的URL或参数,进行严格的输入验证和过滤,只允许合法和可信任的URL进入应用程序,即:基于白名单机制来限制允许的URL或IP地址。

禁用危险的协议和端口:限制应用程序对危险协议和资源的访问,如:禁用不必要的协议和端口(仅允许HTTP或HTTPS协议、禁用file、dict、gopher等伪协议,仅允许80443等常规WEB端口),限制文件系统访问权限等。

限制重定向和URL跳转:攻击者通常会利用重定向或URL跳转的方式,绕过SSRF防御机制。因此,应避免在应用程序中允许用户控制的跳转和重定向,或者限制它们的用途。

比如:假如服务端通过判断是否包含关键字127.0.0.1来限制访问目标,则可通过URL跳转(互联网短地址服务)的方式进行绕过。

网络和主机层环境隔离:将应用程序部署在受控的网络环境中,限制其对内部网络的访问权限。其中,该方式可通过网络层或主机层面的防火墙实现。

总的来说,针对SSRF漏洞,应综合采用多层次的防御策略,以免被攻击者绕过。其中,以上防护策略可相互作用,从整体上降低SSRF攻击的潜在风险。

整体而言,一切输入都是有害的,输出也不安全!Web安全问题的核心是输入输出的问题,非法的输入未经严格编码、过滤、验证,以及随意的输出,都会引入各种安全问题。

本文从安全攻防的角度针对常见WEB漏洞的原理和防护措施进行了总结,涵盖SQL注入、XSS漏洞、文件上传、CSRF漏洞、SSRF漏洞等,以期帮助各位更好地理解漏洞原理、潜在危害以及如何采取有效措施进行防护。

THE END
1.介绍18种WEB常见漏洞本文将详细讨论Web应用程序中常见的漏洞,包括注入漏洞、XSS漏洞、CSRF、SSRF、文件上传漏洞、文件包含漏洞、命令执行漏洞、暴力破解漏洞、访问控制漏洞、安全配置错误、安全日志和监控故障、软件和数据完整性故障、身份识别和身份验证错误、自带缺陷和过时的组件、失效的访问控制、加密机制失效、不安全设计以及未验证的重定向https://blog.csdn.net/baimao__Ch/article/details/144374418
2.网络安全与信息安全:关于网络安全漏洞加密技术安全意识等方面简介:随着互联网的普及,网络安全问题日益突出。本文将从网络安全漏洞、加密技术和安全意识三个方面进行探讨,旨在提高读者对网络安全的认识和防范能力。通过分析常见的网络安全漏洞,介绍加密技术的基本原理和应用,以及强调安全意识的重要性,帮助读者更好地保护自己的网络信息安全。 http://help.jaozi.cn/?article/1643955
3.漏洞有哪些类型常见问题漏洞类型有多种,包括输入验证漏洞、配置错误漏洞、逻辑漏洞、访问控制漏洞、加密漏洞、远程执行漏洞和拒绝服务 (DoS) 漏洞。了解不同类型的漏洞对于通过实施输入验证、安全配置和访问控制等措施来保护系统免受攻击至关重要。https://m.php.cn/faq/959761.html
4.漏洞包括60秒读懂世界随着信息技术的快速发展,网络安全问题日益突出。漏洞作为网络安全的重要组成部分,其存在和利用对个人、企业乃至国家都构成严重威胁。本文将从漏洞的定义、类型、危害以及防范措施等方面进行详细阐述。 一、漏洞的定义 漏洞是指在计算机系统和网络中,由于设计、实现、配置等方面的缺陷,使得攻击者可以未经授权访问、控制或破https://blog.yyzq.team/post/465130.html
5.Nginx配置错误导致的漏洞摸鱼派(哈哈,我来了,我来了,我抱着nginx漏洞来了 ) 开始正文前的题外话 一开始写jquery漏洞的时候纯粹是抱着当做漏洞笔记来写的,写着写着发现身为一个我网安工作者,有义务为各位大佬、帅哥美女们科普一下真实的网安工作(很枯燥,估计没人感兴趣)。当然了,还是以漏洞笔记https://fishpi.cn/article/1721110518193
6.网络安全漏洞的分类方法有哪些?2016 年 1 月 1 日起实行的《地图管理条例》明确规定 , 国家疆域意识教育应该归入中小学教课内容。这是因为 ( )①教育拥有选择、传达文化的特定功能②教育在人的教化与培养上饰演侧重要的角色③教育是人类独有的传承文化的本能活动④科技进步能极大地促使文化的流传与发展 https://www.shuashuati.com/ti/c0927a1c199f46cc8565178b2123f229.html
7.漏洞分析论文范文11篇(全文)漏洞的成因很多,一般有以下几种[1]:(1)网络协议漏洞:TCP/IP协议组是目前使用最为广泛的网络互连协议之一。但TCP/IP协议在设计时是将它置于可信的环境之下,并将网络互连和开放性作为首要考虑的问题,而没有过多地考虑安全性。(2)应用软件系统漏洞:任何一种软件系统都或多或少存在一定的脆弱性,安全漏洞可以看作是https://www.99xueshu.com/w/ikey0od0f4nf.html
8.矿山安全知识问答井田开拓方式的内容包括井硐形式、水平数目以及阶段内的布置方式等。无论是哪一种井筒(硐)形式,井田都可能采用单水平或多水平;分区式、分段或分带式等巷道布置。按井硐的形式,井田开拓方式可分为斜井开拓、立井开拓和平硐开拓三种方式。 (1)斜井开拓是指利用倾斜井筒由地面进入地下,并通过一系列巷道通达煤层的一种https://www.safehoo.com/item/12903_17.aspx
9.社会信任危机(精选十篇)司法不公正的现象在当前处于社会经济转型时期的我国较为普遍, 其主要原因在于我国的社会制度存在较大的缺陷。改革开放以来我国的法制化进程不断加快, 但是很多地方存在漏洞, 需要在发展的过程中进行完善。仔细研究我国宪法可以看出, 很多条款并没有太多的法律实质, 而只是政治意义上的条文, 对于社会管理来说起到的作用https://www.360wenmi.com/f/cnkey3100wbu.html
10.测绘科普(1)恒星时:它是以地球自转周期为基准所建立的一种时间系统。其测量方法是选取春分点作为参考点,其连续两次过测站上中天所经历的时间,称为一恒星回,一个恒星日分为24恒星小时,一恒星小时分为60恒星分,一恒星分分为60恒星秒。 (2)真太阳时:选真太阳为参考点,它连续两次过测站上中天所经历的时间,称为一真太阳http://www.shandongcehui.cn/wsfw/chkp/201912/t20191203_2466480.html
11.软件常见漏洞的解析漏洞可以定义为“在软件和硬件组件中发现的计算逻辑(例如代码)中的弱点,当被利用时,会对机密性,完整性或可用性产生负面影响”。 软件漏洞是信息安全系统漏洞的重要组成部分,它通常被认为是软件生命周期中出现的设计错误、编码缺陷和运行故障造成的。 软件漏洞从产生、发现、解决这些维度它可以分为: https://51fusa.com/client/knowledge/knowledgedetail/id/2706.html
12.网络安全学习常见安全漏洞检测以及修复方法1第三方库漏洞 很多网站会利用第三方库来增强网站功能,但是若是第三方库本身出现漏洞,往往会成为一个攻击电。如fastjson,Struts2,JQuery,OpenSSL等。 内网转发 传统的网络安全是基于防火墙的物理边界防御,将网络的类型被分为内网和外网两大类。通常认为内网是安全的,内部的资产,人员都是已知的,可控的,而外部网络是危险https://blog.51cto.com/11555417/5337936
13.地理选择题解题方法地理试题解析【解析】13.根据材料信息可知,红树林主要生长在热带和亚热带淤泥深厚的潮间带,巴拉望岛位于环太平洋第一岛弧链上,为板块碰撞挤压形成的岛屿,整体地势较高。根据图示信息可知,巴拉望岛岛屿南北狭长、东西较短,河流和滩涂欠发育,淤泥质潮间带面积较少,不利于红树林的生长,B正确;该地纬度位置较低,海水温度较高,A错误;http://cgzdl.com/jiaoxue/jiexi/24469.html
14.伯南克获诺奖后首次公开讲话:今天肯定不会像2008年金融危他们将银行贷款从债券产品中分离出来,把金融资产分为债券、货币与贷款三种,且金融财富总量是常数,再假设银行负债产品之间与银行资产之间都不是完全的相互替代品,存在融资壁垒,这就意味着,当存款减少时银行难以用发行其他负债产品来筹集资金,当贷款资产下降时银行也不愿意用减少证券等其他资产来弥补。这样一来,当美联储http://m.mindcherish.com/article/content?id=5660301