前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Web安全系列——注入攻击

Web安全系列——注入攻击

作者头像
windealli
发布于 2023-10-13 03:30:49
发布于 2023-10-13 03:30:49
2.8K00
代码可运行
举报
文章被收录于专栏:windealliwindealli
运行总次数:0
代码可运行

前言

在Web应用程序开发中,防SQL注入最基本的安全防护要求了。其实除了SQL注入, 还有很多其他的注入攻击方式。注入攻击是最常见的Web应用攻击方式之一。

本文将介绍注入攻击的概念、种类、原理,以及如何防护。

什么是注入攻击

注入攻击是指攻击者在应用程序接收用户输入的地方注入自己精心构造的攻击代码,以达到执行任意操作、篡改数据或者获取敏感信息的目的。

注入攻击是 Web 应用程序中最常见的攻击类型之一,攻击成功将导致应用程序的机密性、完整性和可用性等方面的风险。

注入攻击的种类

常见的注入攻击类型包括 :

  • SQL 注入: 通过在 SQL 语句中注入恶意代码来执行不受信任的操作,以获取敏感数据或者篡改数据。
  • 命令注入: 攻击者将能够执行不受信任的操作的命令注入到应用程序中。
  • LDAP 注入: 利用 LDAP 查询中的漏洞来获取敏感信息或者更改应用程序的行为。
  • OS 注入: 利用操作系统的漏洞,向服务器输入不受信任的数据,以利用操作系统上的缺陷来执行可疑操作。
  • XML 注入: 利用 XML 编辑器中的漏洞创建恶意 XML 代码的攻击

SQL注入

什么是SQL注入攻击

SQL注入是指攻击者在应用程序接收输入参数的地方注入了恶意SQL语句,以达到获取敏感数据或者篡改数据的目的。

Web应用程序中,用户的输入经常会作为数据库的查询条件,填充到SQL语句中。

举个栗子:

假设有一个登录表单,用户可以通过输入用户名和密码来登录系统。

正常的 SQL 命令可能如下所示:

SELECT * FROM users WHERE username = 'Windeal' AND password = '123456'

如果说密码 123456 是一个错误密码,那么用户就会登录失败。

但是,攻击者可能会在用户名参数中注入恶意代码 “' OR 1=1”,例如:

SELECT * FROM users WHERE username = 'Windeal' OR 1=1--' AND password = 'mypassword'

如此一来,尽管密码是错误的,攻击者成功地利用 SQL 注入来绕过了登录验证(查询语句重点密码校验部分被注释掉了)。

SQL注入攻击的常见类型/方法

以下是一些常见的SQL注入攻击类型:

  1. 基于错误信息的 SQL 注入

错误型 SQL 注入常见于应用程序的错误消息中。攻击者可以通过修改 SQL 命令的格式,导致应用程序产生错误,错误消息中包含关于应用程序所使用的后端数据库的敏感信息。

  1. 基于时间延迟注入

攻击者使用时间敏感的 SQL 命令来判断注入的 SQL 语句是否执行成功,从而提高自己注入的成功率。攻击者通过向所写入的 SQL 语句添加时间延迟,来判断结果是否符合他们的期望,以便进一步利用所攻占的应用程序和服务器资源。

  1. 盲注

盲注是指攻击者不能直接看到所注入的响应信息,通常使用布尔盲注和时间盲注来动态检测数据的恶意代码。

  1. 联合查询注入

联合查询注入是在一个 SQL 查询中执行两个或多个数据库查询的技术。攻击者通常使用 UNION SELECT 命令向 SQL 查询中添加新的查询语句。这种注入方式可以将两个或多个表的数据合并到一个响应中,攻击者可以访问应用程序不会返回的数据。

  1. 存储过程注入

存储过程是一种预编译的 SQL 代码块,可以在一个事务中执行。攻击者可以使用存储过程注入来注入 SQL 命令并在数据库中执行恶意代码,以执行未授权的活动和/或下载其他恶意代码。

  1. 基于堆叠查询的注入

堆叠查询允许在一个请求中执行多个查询。攻击者可能会使用堆叠查询注入技术来执行跨数据库服务器的查询命令,从而操纵应用程序中的数据。

SQL注入攻击的预防和防范

  1. 入参强校验: 服务后端对所有接收到的请求参数进行参数强校验,严格限时入参的长度、格式、是否是否包含非法字符。
  2. 参数化查询: 使用参数化查询和预编译语句而不是字符串连接来提高应用程序的安全性。
  3. 限制数据库和表访问: 为了限制用户和应用程序的访问权限,应用程序开发者和管理员应该为数据库用户分配最小的用户权限。将明文数据报告的能力限制在不影响应用程序正常运行的前提下。
  4. 限制运行时间 限制(降低)请求的最大运行时间,避免攻击者根据响应时间来推测后台运行逻辑。
  5. 不提供过于详细的错误消息: 错误消息的详细程度会向攻击者提供有关应用程序所使用的数据库平台的绝大部分信息。
  6. 多层防御措施: 使用 Web 应用程序防火墙、注入扫描预防工具和定期代码审计等方法来设置多层防御措施。
  7. 强制减少 SQL 数据库的功能集: 尽可能减少数据库的功能集,可以有效地减少潜在攻击的面。例如启用只读模式,关闭会话管理,强制值验证等。

其他注入攻击

命令注入

定义:

命令注入是一种类似于 SQL 注入的攻击方式。攻击者通过向应用程序输入一个操作系统命令的特定字符串,或通过摄取特定的应用程序安全补丁以绕过对输入进行的安全检查来实现。

原理:

攻击者通过输入操作系统命令或 shell 脚本的 payload 来注入恶意代码,例如添加删除、保存到磁盘、操纵文件系统和执行任意代码等。这些攻击可以通过许多短时间的输入字段和API或通过常规执行的 shell 命令执行。

示例:

假设我们提供一个搜索功能,底层是通过grep命令来查看文件系统中是否存在某个字符串。

如果我们再搜索框中注入系统命令,填入

searchterm | rm /f /

则服务器执行可能变为

grep searchterm | rm /f /

从而导致服务器上的文件被删除。

预防与防护:

为了有效预防和防护命令注入攻击,可以采用以下措施:

  1. 输入数据的验证和过滤
  2. 应用安全补丁和强化用户口令
  3. 对执行授权进行访问控制
  4. 建立客户端和服务端的双向认证机制
  5. 尽可能的规范化和限制应用程序的接口。

LDAP注入

定义:

LDAP注入是一种攻击方式,攻击者通过向LDAP查询中注入恶意数据或LDAP过滤器,来实现访问悄悄话的目的。

原理:

攻击者将特制的数据输入到LDAP查询或过滤器中,模拟正常LDAP查询操作,但当查询完成时,攻击者恶意数据被LDAP服务显示出来,从而导致安全问题的发生。

预防与防护:

LDAP注入攻击可以通过以下措施加以防护和预防,例如:

  1. 尽可能的规范和限制客户端和服务端接口
  2. 限制LDAP帐户的访问授权
  3. 对输入数据进行验证和过滤
  4. 应用安全补丁和监视系统日志
  5. 对询问访问进行授权和访问控制。

OS 注入:

定义:

OS命令注入是一种类型的攻击方式,攻击者通过将一系列恶意输入注入到一个之前预期只有数据输入的地方来实现向操作系统(OS)发送命令。

原理:

攻击者通过在 OS 命令的 payload 中注入恶意数据和命令访问权限,来执行不希望被操作系统或应用程序所记录的恶意行为,例如添加、删除、修改、操纵文件系统和直接执行任意代码等。

预防与防护:

为了防止 OS 命令注入攻击,可以采用以下方案:

  1. 验证所有的数据输入
  2. 应用安全补丁和规范化处理所有的输入
  3. 限制用户和关联服务帐户的访问性和权限
  4. 在 API 级别上加入健壮的验证机制
  5. 建立健康的安全意识和教育计划,使人员更加关注安全风险并采取相应措施。

XML 注入:

定义:

XML 注入攻击是指攻击者利用 XML 解析器漏洞,在 XML 数据输入和解析过程中注入恶意代码,进而达到攻击的目的。

原理:

攻击者通过向不受信任的 XML 数据输入中注入恶意的 XML 或 XML 文件格式数据来利用 XML 注入漏洞,或利用 XPath 的逻辑查询操作实现特定的筛选操作,结果导致解析器无法正确识别恶意代码,从而执行恶意操作。

示例:以下是一个简单的示例,演示了如何进行XML注入攻击:

假设一个应用程序接受用户提供的XML数据,并使用这些数据生成HTML输出。攻击者可以提供以下恶意XML数据:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
<user>
  <name>John</name>
  <role>Admin</role>
  <script>alert('XSS Attack')</script>
</user>

如果应用程序不正确地处理输入,它可能会将这个恶意XML数据插入到HTML输出中,导致XSS(跨站脚本)攻击。攻击者的恶意脚本会在用户的浏览器中执行。

预防与防护:

为了有效预防和防护 XML 注入攻击,可以采用以下方案:

  1. 对所有输入数据进行验证和过滤控制
  2. 对所有的应用程序和接入数据库元素进行严密的控制和访问认证
  3. 使用工具扫描管理可能存在的安全漏洞
  4. 对 XML 文档进行限制和规范化处理,避免恶意代码的注入
  5. 启用应用程序防火墙等操作系统级别的安全机制以及专属 XML 过滤解析器等技术措施来加固、增强 XML 的安全性。
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-09-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海天二路搬砖工 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
24种R语言新手入门之热图(四)
热图比较有意思,最常用的科研可视化做图,观察显著、直接、简单粗暴。这是Toussaint Loua在1873年就曾使用过热图来绘制对巴黎各区的社会学统计。
生信初学者
2023/03/14
1K0
24种R语言新手入门之热图(四)
245热图展示微生物组的物种和功能丰度或有无、距离矩阵
NGS系列文章包括NGS基础、在线绘图、转录组分析 (Nature重磅综述|关于RNA-seq你想知道的全在这)、ChIP-seq分析 (ChIP-seq基本分析流程)、单细胞测序分析 (重磅综述:三万字长文读懂单细胞RNA测序分析的最佳实践教程)、DNA甲基化分析、重测序分析、GEO数据挖掘(典型医学设计实验GEO数据分析 (step-by-step))、批次效应处理等内容。
生信宝典
2020/09/01
3.1K0
245热图展示微生物组的物种和功能丰度或有无、距离矩阵
R语言学习 - 热图美化
热图美化 上一期的绘图命令中,最后一行的操作抹去了之前设定的横轴标记的旋转,最后出来的图比较难看。 上次我们是这么写的 p <- p + xlab("samples") + theme_bw() + theme(panel.grid.major = element_blank()) + theme(legend.key=element_blank()) 为了使横轴旋转45度,需要把这句话theme(axis.text.x=element_text(angle=45,hjust=1, vjust=1))放在
生信宝典
2018/02/05
2.7K0
R语言学习 - 热图美化
热图pheatmap()函数
此次例子,我们选择了一套GEO数据库的肺癌数据,数据编号为GSE19804,120个样本,其中包含60个癌症样本和60个癌旁正常样本,前面我们使用t检验,并对p值进行BH校正,筛选fdr小于0.01的基因中前40个在癌症相对于正常样本中显著差异表达的基因进行热图绘制。
微点
2019/11/01
3.7K0
超详细的R语言热图绘制之complexheatmap:01
本书是对ComplexeHeatmap包的中文翻译(1-6章),部分内容根据自己的理解有适当的改动,但总体不影响原文。如有不明之处,以原文为准。原文请见:https://jokergoo.github.io/ComplexHeatmap-reference/book/
医学和生信笔记
2022/05/30
4.5K0
R 数据可视化 01 | 聚类热图
链接:https://pan.baidu.com/s/13l8UtKvvDxFWL8ikzq7vJw 提取码:ttb4
白墨石
2021/01/13
1.1K0
R 数据可视化 01 | 聚类热图
一文详解如何用 R 语言绘制热图
AI 研习社按:作为目前最常见的一种可视化手段,热图因其丰富的色彩变化和生动饱满的信息表达被广泛应用于各种大数据分析场景。同时,专用于大数据统计分析、绘图和可视化等场景的 R 语言,在可视化方面也提供了一系列功能强大、覆盖全面的函数库和工具包。 因此,对从业者而言,用 R 语言绘制热图就成了一项最通用的必备技能。本文将以 R 语言为基础,详细介绍热图绘制中遇到的各种问题和注意事项。原文作者 taoyan,原载于作者个人博客,AI 研习社获授权。 简介 本文将绘制静态与交互式热图,需要使用到以下R包和函数
AI研习社
2018/03/19
3.8K0
一文详解如何用 R 语言绘制热图
Pheatmap绘制热图(二)
随机生成,10个基因,每个基因4个处理,每个处理3个平行,表达量RPKM值在1-120之间,矩阵第一个RPKM数值为250:
黑妹的小屋
2020/08/06
2.6K0
R语言学习笔记-Day09
#Fix cell sizes and save to file with correct size
用户11190095
2024/07/17
1640
用 ComplexHeatmap 包绘制复杂热图
在 ComplexHeatmap 中单个热图由热图主体和热图组件组成。热图主体可按行或列进行拆分。热图组件包括标题,进化树,矩阵名称和热图注释,可分别放置于热图主体的四个侧面上,这些组件也可根据热图主体的顺序进行重新排序或拆分。
生信菜鸟团
2021/01/18
7.6K0
用 ComplexHeatmap 包绘制复杂热图
IOBR一站式免疫浸润分析R包及结果热图展示
延续上一篇推文:转录组8种免疫浸润分析方法整理(https://mp.weixin.qq.com/s/sy-HT1znQYTcktN3ef-djw)
凑齐六个字吧
2024/08/18
7750
IOBR一站式免疫浸润分析R包及结果热图展示
下游表达分析——差异表达分析
pearson:对离异值非常敏感,如果有一个值与正常值差很远会导致数据相关性很低,所以通常进行log处理之后再进行pearson分析。 pearson计算出的相关性比spearman计算出的相关性要高。
yurric
2023/11/01
7120
生信技能树-day19 转录组下游分析-标准化、聚类、差异分析
• 测序深度:每个样本的测序深度(产生的数据量)不完全一样,同一条件下,测序深度越深,基因表达的read读数越多。
生信菜鸟团
2024/06/25
2.2K1
生信技能树-day19 转录组下游分析-标准化、聚类、差异分析
文章MSM_metagenomics(六):复杂热图绘制
complexheatmap_plotting_funcs.R来自于R可视化:微生物相对丰度或富集热图可视化参考章节,它提供了充足的说明
生信学习者
2024/06/17
1280
文章MSM_metagenomics(六):复杂热图绘制
跟SCI学heatmap|文章中常见复杂热图的绘制方式(含代码),干货较多,建议耐心一下
拿到一个新数据后,除了检查[1:4,1:4]外,也许还需要看看最后几列,另外还需要观察列名称的规律。
生信补给站
2022/04/13
8.2K0
跟SCI学heatmap|文章中常见复杂热图的绘制方式(含代码),干货较多,建议耐心一下
R语言-基础
初级统计函数 max() ,min() , mean() , median() ,var()方差 , sd()标准差 , sum()总和, length(x) # 长度(x中元素的个数), unique(x) #去重复(第一次出现不为重复,第二次出现为重复),duplicated(x)#检查重复值 , table(x) 重复值(因子)统计 ,sort(x) #排序 , dim() 查看行列数, nrow()查看行数,ncol() 查看列数
用户10331357
2023/04/26
1.7K0
批量的GSEA及基因表达热图可视化
差异基因的生物学功能富集分析,除GO和KEGG外,另一种较为稳妥的生物学功能数据库注释是GSEA方法,研究者可以针对特定的通路基因进行研究,再加上基因的表达热图更为直观!(下面演示一个批量运行的示例)
生信菜鸟团
2023/09/26
1.5K0
批量的GSEA及基因表达热图可视化
高颜值复杂热图绘制小技巧
这幅图展示了 两分组(KRAS-mt vs KRAS-wt)差异分析结果中 21个上调基因 与 14 个下调 差异基因在不同样本中的基因表达水平模式,热图上方 展示了 样本的许多临床性状特征 如 Stage分期,年龄,性别,CMS 分子分期等。热图如下:
生信技能树
2025/01/19
1210
高颜值复杂热图绘制小技巧
NC单细胞文章复现(三):复杂热图
我们这次直接拿GSE118390上已经normalized 的数据进行下游分析。首先我们先看看文献的这张复杂热图,哈哈,这张热图画得真是好看。左边是不同的markers基因对应的细胞类型,上边是6个TNBC病人总共1189个细胞,cycling指的是处于细胞分裂期的样本,下边还有1189个细胞对应的是CD45阳性还是CD阴性的。代码作者都已经有提供,但是如果按照作者的代码跑,仍然会出现error,我把代码一些参数修改了一下并进行翻译,再结合文献的描述,跟大家一起学习。我们看看怎么画呗。
生信技能树jimmy
2021/07/02
3.2K2
NC单细胞文章复现(三):复杂热图
R语言学习 - 箱线图(小提琴图、抖动图、区域散点图)
箱线图 箱线图是能同时反映数据统计量和整体分布,又很漂亮的展示图。在2014年的Nature Method上有2篇Correspondence论述了使用箱线图的好处和一个在线绘制箱线图的工具。就这样都可以发两篇Nature method,没天理,但也说明了箱线图的重要意义。 下面这张图展示了Bar plot、Box plot、Volin plot和Bean plot对数据分布的反应。从Bar plot上只能看到数据标准差或标准误不同;Box plot可以看到数据分布的集中性不同;Violin plot和Be
生信宝典
2018/02/05
4.6K0
R语言学习 - 箱线图(小提琴图、抖动图、区域散点图)
推荐阅读
相关推荐
24种R语言新手入门之热图(四)
更多 >
LV.0
这个人很懒,什么都没有留下~
目录
  • 前言
  • 什么是注入攻击
  • 注入攻击的种类
  • SQL注入
    • 什么是SQL注入攻击
    • SQL注入攻击的常见类型/方法
    • SQL注入攻击的预防和防范
  • 其他注入攻击
    • 命令注入
    • LDAP注入
    • OS 注入:
    • XML 注入:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档