SQL注入的类型和示例(sql注入的类型和示例有哪些)

SQL注入的类型和示例(sql注入的类型和示例有哪些)

浏览次数:
信息来源: 用户投稿
更新日期: 2026-03-06
文章简介

什么是SQL注入?SQL注入,也称为SQLI,是一种常见的攻击媒介,它使用恶意SQL代码进行后端数据库操作,以访问不打算显示的信息。此信息可能包括任意数量的项目,包括敏感的公司数据、用户列表或私人客户

2025阿里云双十一服务器活动

什么是SQL注入?SQL注入,也称为SQLI,是一种常见的攻击媒介,它使用恶意SQL代码进行后端数据库操作,以访问不打算显示的信息。此信息可能包括任意数量的项目,包括敏感的公司数据、用户列表或私人客户详细信息。

SQL注入对业务的影响是深远的。一次成功的攻击可能会导致未经授权查看用户列表、删除整个表,并且在某些情况下,攻击者会获得对数据库的管理权限,所有这些都会对企业造成极大的损害。

在计算SQLi的潜在成本时,重要的是要考虑到如果电话号码、地址和信用卡详细信息等个人信息被盗,客户将失去信任。虽然此向量可用于攻击任何SQL数据库,但网站是最常见的目标。

SQL是一种标准化语言,用于访问和操作数据库,为每个用户构建可定制的数据视图。SQL查询用于执行命令,例如数据检索、更新和记录删除。不同的SQL元素执行这些任务,例如,根据用户提供的参数使用SELECT语句检索数据的查询。

典型的eStore的SQL数据库查询可能如下所示:

选择ItemName,ItemDescription

其中ItemNumber=ItemNumber

由此,Web应用程序构建一个字符串查询,该查询作为单个SQL语句发送到数据库:

选择ItemName,ItemDescription

WHEREItemNumber="&Request.QueryString("ItemID")

用户提供的输入?http://www.estore.com/items/items.asp?itemid=999?然后可以生成以下SQL查询:

选择ItemName,ItemDescription

您可以从语法中了解到,此查询提供了项目编号999的名称和描述。

SQL注入通常分为三类:In-bandSQLi(Classic)、InferentialSQLi(Blind)和Out-of-bandSQLi。您可以根据SQL注入用于访问后端数据的方法及其破坏潜力对SQL注入类型进行分类。

攻击者使用相同的通信渠道发起攻击并收集结果。带内SQLi的简单性和高效性使其成为最常见的SQLi攻击类型之一。此方法有两个子变体:

  • 基于错误的SQLi?—攻击者执行导致数据库产生错误消息的操作。攻击者可能会使用这些错误消息提供的数据来收集有关数据库结构的信息。
  • 基于联合的SQLi?—该技术利用了UNIONSQL运算符,它融合了数据库生成的多个选择语句以获得单个HTTP响应。此响应可能包含攻击者可以利用的数据。
  • 攻击者向服务器发送数据有效载荷并观察服务器的响应和行为以了解有关其结构的更多信息。这种方法称为盲SQLi,因为数据不会从网站数据库传输到攻击者,因此攻击者无法看到有关带内攻击的信息。

    SQL盲注依赖于服务器的响应和行为模式,因此它们通常执行起来较慢,但可能同样有害。SQL盲注可分为以下几类:

  • 布尔值——攻击者向数据库发送SQL查询,提示应用程序返回结果。结果将根据查询是真还是假而有所不同。根据结果,HTTP响应中的信息将修改或保持不变。然后,攻击者可以确定消息生成的结果是真还是假。
  • 基于时间——攻击者向数据库发送SQL查询,这使数据库等待(以秒为单位的一段时间)才能做出反应。攻击者可以从数据库响应的时间看出查询是真还是假。根据结果,将立即或在等待一段时间后生成HTTP响应。因此,攻击者可以计算出他们使用的消息是返回真还是假,而不依赖于数据库中的数据。
  • 只有在Web应用程序使用的数据库服务器上启用了某些功能时,攻击者才能执行这种形式的攻击。这种形式的攻击主要用作带内和推理SQLi技术的替代方法。

    当攻击者无法使用相同的通道发起攻击和收集信息,或者服务器速度太慢或不稳定而无法执行这些操作时,将执行带外SQLi。这些技术依赖于服务器创建DNS或HTTP请求以将数据传输给攻击者的能力。

    希望执行SQL注入的攻击者操纵标准SQL查询以利用数据库中未经验证的输入漏洞。可以通过多种方式执行此攻击向量,此处将展示其中的几种方式,让您大致了解SQLI的工作原理。

    例如,上述提取特定产品信息的输入可以更改为?http://www.estore.com/items/items.asp?itemid=999或1=1。

    结果,相应的SQL查询如下所示:

    选择ItemName,ItemDescription

    其中ItemNumber=999或1=1

    SQL注入的类型和示例,sql注入的类型和示例有哪些

    攻击者还能够利用错误过滤的字符来更改SQL命令,包括使用分号分隔两个字段。

    比如这个输入?http://www.estore.com/items/iteams.asp?itemid=999;DROPTABLE用户?将生成以下SQL查询:

    选择ItemName,ItemDescription

    其中项目编号=999;删除表用户

    结果,可能会删除整个用户数据库。

    另一种操作SQL查询的方法是使用UNIONSELECT语句。这结合了两个不相关的SELECT查询以从不同的数据库表中检索数据。

    例如,输入?http://www.estore.com/items/items.asp?itemid=999UNIONSELECTuser-name,passwordFROMUSERS?产生如下SQL查询:

    选择ItemName,ItemDescription

    WHEREItemID='999'UNIONSELECTUsername,PasswordFROMUsers;

    使用UNIONSELECT语句,此查询将对项目999的名称和描述的请求与另一个为数据库中的每个用户提取名称和密码的请求组合在一起。

    SQL注入与OS命令执行相结合:Accellion攻击

    Accellion是FileTransferAppliance(FTA)的制造商,FTA是一种网络设备,广泛部署在世界各地的组织中,用于移动大型敏感文件。该产品已有20多年的历史,现在已经到了生命周期的尽头。

    FTA是一种独特的、高度复杂的攻击的目标,该攻击将SQL注入与操作系统命令执行相结合。专家推测Accellion攻击是由与金融犯罪集团FIN11和勒索软件集团Clop有联系的黑客实施的。该攻击表明,SQL注入不仅是一种影响Web应用程序或Web服务的攻击,还可以用于破坏后端系统和泄露数据。

    Accellion漏洞是一种供应链攻击,影响了许多部署了FTA设备的组织。其中包括新西兰储备银行、华盛顿州、澳大利亚证券和投资委员会、电信巨头新加坡电信和安全软件制造商Qualys,以及许多其他机构。

    根据Accellion委托的一份报告,SQLi和命令执行攻击的结合工作如下:

    攻击者执行SQL注入以获得对document_root.html的访问权限,并从AccellionFTA数据库中检索加密密钥。

    攻击者使用密钥生成有效令牌,并使用这些令牌访问其他文件

    攻击者利用sftp_account_edit.php文件中的操作系统命令执行漏洞,允许他们执行自己的命令

    攻击者在服务器路径/home/seos/courier/oauth.api中创建了一个webshell

    使用这个webshell,他们将一个自定义的、功能齐全的webshell上传到磁盘,其中包括高度定制的工具,用于从Accellion系统中窃取数据。研究人员将这个外壳命名为DEWMODE。

    使用DEWMODE,攻击者从AccellionFTA系统上的MySQL数据库中提取可用文件列表,并在HTML页面上列出文件及其元数据

    攻击者执行文件下载请求,其中包含对DEWMODE组件的请求,带有加密和编码的URL参数。

    DEWMODE能够接受这些请求,然后从FTA网络日志中删除下载请求。

    这提高了SQL注入攻击的知名度,展示了如何将它们用作对关键企业基础设施进行更具破坏性的攻击的网关。

    有几种有效的方法可以防止SQLI攻击的发生,并在它们发生时进行防护。第一步是输入验证(又名清理),这是编写可以识别非法用户输入的代码的做法。

    虽然输入验证应始终被视为最佳实践,但它很少是万无一失的解决方案。现实是,在大多数情况下,绘制出所有合法和非法输入是根本不可行的——至少在不导致大量误报的情况下是不可行的,这会干扰用户体验和应用程序的功能。

    出于这个原因,通常使用Web应用程序防火墙(WAF)来过滤掉SQLI以及其他在线威胁。为此,WAF通常依赖于大量且不断更新的精心制作的签名列表,这些签名允许它像手术一样清除恶意SQL查询。通常,这样的列表包含用于解决特定攻击向量的签名,并定期修补以引入针对新发现漏洞的阻止规则。

    现代Web应用程序防火墙还经常与其他安全解决方案集成。WAF可以从这些信息中接收进一步增强其安全功能的附加信息。例如,遇到可疑但并非彻头彻尾的恶意输入的Web应用程序防火墙可能会在决定阻止请求之前使用IP数据对其进行交叉验证。如果IP本身的声誉历史不佳,它只会阻止输入。

    Imperva?基于云的WAF使用签名识别、IP信誉和其他安全方法来识别和阻止SQL注入,并最大限度地减少误报。WAF的功能由IncapRules增强——一个自定义安全规则引擎,支持对默认安全设置进行精细自定义,并创建额外的特定案例安全策略。我们的WAF还采用众包技术,确保针对任何用户的新威胁立即传播到整个用户群。这有助于快速响应新披露的漏洞和零日威胁。

    标签:
    雾计算和物联网(雾计算原理和应用)
    « 上一篇
    返回列表
    下一篇 »

    如本文对您有帮助,就请抽根烟吧!