[ 首页 ] [ 渗透测试 ] [ 黑客接单 ] [ 黑客技术 ] [ 黑客论坛 ] [ 黑客松 ]



标题 : SQL(结构化查询语言)注入教程
日期 : 2023-07-27

什么是SQL注入

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

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

在计算 SQLi 的潜在成本时,重要的是要考虑如果电话号码、地址和信用卡详细信息等个人信息被盗,客户信任的丧失。

虽然此向量可用于攻击任何 SQL 数据库,但网站是最常见的目标。

什么是 SQL 查询

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

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

选择项目名称、项目描述
来自项目
WHERE 项目编号 = 项目编号

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

sql_查询=“
选择项目名称、项目描述
来自项目
WHERE ItemNumber = " & Request.QueryString("ItemID")

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

选择项目名称、项目描述
来自项目
其中项目编号 = 999

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

SQL注入的类型

SQL 注入通常分为三类:带内 SQLi(经典)、推理 SQLi(盲)和带外 SQLi。您可以根据 SQL 注入用于访问后端数据的方法及其潜在的损害来对它们进行分类。

带内 SQLi

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

  • 基于错误的 SQLi — 攻击者执行导致数据库生成错误消息的操作。攻击者可能会使用这些错误消息提供的数据来收集有关数据库结构的信息。
  • 基于联合的 SQLi — 此技术利用 UNION SQL 运算符,该运算符融合数据库生成的多个选择语句以获得单个 HTTP 响应。此响应可能包含攻击者可以利用的数据。

推理(盲)SQLi

攻击者将数据有效负载发送到服务器并观察服务器的响应和行为以了解有关其结构的更多信息。这种方法称为盲 SQLi,因为数据不会从网站数据库传输给攻击者,因此攻击者无法在带内看到有关攻击的信息。

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

  • 布尔值— 攻击者向数据库发送 SQL 查询,提示应用程序返回结果。结果将根据查询是真还是假而有所不同。根据结果​​,HTTP 响应中的信息将修改或保持不变。然后,攻击者可以确定该消息是否生成了正确的结果或错误的结果。
  • 基于时间——攻击者向数据库发送 SQL 查询,这使数据库等待(以秒为单位的一段时间)才能做出反应。攻击者可以从数据库响应的时间看出查询是真还是假。根据结果​​,将立即或等待一段时间后生成 HTTP 响应。因此,攻击者可以计算出他们使用的消息返回的是真还是假,而无需依赖数据库中的数据。

带外 SQLi

仅当 Web 应用程序使用的数据库服务器上启用某些功能时,攻击者才能执行这种形式的攻击。这种形式的攻击主要用作带内和推理 SQLi 技术的替代方案。

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

SQL注入示例

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

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

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

选择项目名称、项目描述
来自项目
其中项目编号 = 999 或 1=1

由于语句 1 = 1 始终为真,因此查询将返回数据库中的所有产品名称和描述,甚至包括您可能无权访问的产品名称和描述。

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

例如,输入 http://www.estore.com/items/iteams.asp?itemid=999;DROP TABLE 用户 将生成以下 SQL 查询:

选择项目名称、项目描述
来自项目
其中项目编号 = 999;删除表用户

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

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

例如,输入 http://www.estore.com/items/items.asp?itemid=999 UNION SELECT user-name,password FROM USERS 会生成以下 SQL 查询:

选择项目名称、项目描述
来自项目
WHERE ItemID = '999' UNION SELECT 用户名、密码;

使用 UNION SELECT 语句,该查询将对项目 999 的名称和描述的请求与另一个提取数据库中每个用户的名称和密码的请求结合起来。

SQL 注入与操作系统命令执行相结合:Accellion 攻击

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

FTA 是一种独特、高度复杂的攻击,该攻击将 SQL 注入与操作系统命令执行相结合。专家推测 Accellion 攻击是由与金融犯罪组织FIN11 和勒索软件组织Clop有联系的黑客发起的。

此次攻击表明,SQL 注入不仅是一种影响 Web 应用程序或 Web 服务的攻击,还可以用于危害后端系统并窃取数据。

谁受到了这次袭击的影响?

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

Accelion 攻击流程

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

  1. 攻击者执行 SQL 注入来获取对 document_root.html 的访问权限,并从 Accellion FTA 数据库中检索加密密钥。
  2. 攻击者使用密钥生成有效令牌,并使用这些令牌来访问其他文件
  3. 攻击者利用 sftp_account_edit.php 文件中的操作系统命令执行缺陷,允许他们执行自己的命令
  4. 攻击者在服务器路径 /home/seos/courier/oauth.api 中创建了一个 Web shell
  5. 使用此 Web shell,他们将一个自定义的、功能齐全的 Web shell 上传到磁盘,其中包括用于从 Accellion 系统中泄露数据的高度定制的工具。研究人员将这种外壳命名为DEWMODE。
  6. 使用 DEWMODE,攻击者从 Accellion FTA 系统上的 MySQL 数据库提取可用文件列表,并在 HTML 页面上列出文件及其元数据
  7. 攻击者执行文件下载请求,其中包含对 DEWMODE 组件的请求以及加密和编码的 URL 参数。
  8. DEWMODE 能够接受这些请求,然后从 FTA Web 日志中删除下载请求。

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

SQLI预防和缓解

有多种有效的方法可以防止 SQLI 攻击的发生,并在发生 SQLI 攻击时提供防护。

第一步是输入验证(也称为清理),这是编写可以识别非法用户输入的代码的做法。

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

因此,通常采用 Web 应用程序防火墙 (WAF) 来过滤 SQLI 以及其他在线威胁。为此,WAF 通常依赖于大量且不断更新的精心设计的签名列表,从而能够彻底清除恶意 SQL 查询。通常,这样的列表包含用于解决特定攻击向量的签名,并定期修补以引入针对新发现的漏洞的阻止规则。

现代Web 应用程序防火墙通常还与其他安全解决方案集成。WAF可以从中接收更多信息,进一步增强其安全功能。

例如,遇到可疑但不是彻底的恶意输入的 Web 应用程序防火墙可能会在决定阻止请求之前与 IP 数据进行交叉验证。仅当 IP 本身具有不良声誉历史记录时,它才会阻止输入。

LvBug基于云的 WAF使用签名识别、IP 信誉和其他安全方法来识别和阻止 SQL 注入,并将误报率降至最低。WAF 的功能通过IncapRules得到增强,IncapRules是一个自定义安全规则引擎,可以对默认安全设置进行精细自定义并创建其他特定于案例的安全策略。

我们的 WAF 还采用众包技术,确保针对任何用户的新威胁立即在整个用户群中传播。这使得能够快速响应新披露的漏洞和零日威胁。