什么是 SQL 注入攻击?

2022年10月26日
什么是 SQL 注入攻击 - CDNetworks

内容

免费试用 CDNetworks

我们的大多数产品都有 14 天的免费试用期。无需信用卡。

分享这个帖子

即使黑客技术变得更加先进,恶意行为者可以使用新的攻击媒介,一些旧方法仍然一如既往地有效。 

SQL 注入就是这样一种技术,网络犯罪分子已经使用了数十年。以至于 SQL 注入经常出现在 开放 Web 应用程序安全项目 (OWASP) 十大 Web 漏洞.事实上,大约有 1162 个“SQL 注入”类型的网络安全漏洞已被接受为 CVE(常见漏洞和暴露),这是一个用于记录众所周知的信息安全漏洞的系统。 

什么是 SQL 注入?

SQL 注入是网络攻击中常用的技术,攻击者输入恶意代码以访问数据库中的数据,否则这些数据可能会受到限制。 

SQL 是一种结构化查询语言,用于通过称为 SQL 查询的命令访问和操作数据库。 SQL 注入攻击涉及通过用户输入验证方法(例如网页上的 Web 表单)插入 SQL 命令或查询字符串。

SQL 注入漏洞可能会影响依赖于 SQL 数据库(例如 MySQL、Oracle、SQL Server 或其他数据库)的应用程序。通过 SQL 注入,攻击者能够绕过应用程序安全措施并绕过身份验证过程以获得对数据库的未授权访问。 

例如,他们可以在未经许可的情况下访问公司机密文件、用户数据、客户数据和其他敏感信息。黑客还可以修改或删除数据,对数据库执行管理操作并关闭数据库管理系统。他们甚至可能对底层 SQL Server 甚至操作系统执行命令,从而对业务造成严重损害。 

SQL 注入攻击如何工作?

SQL 注入攻击的工作原理是将 SQL 命令注入用户输入字段以在数据库上执行特定命令。基于对这些数据库查询的响应,攻击者能够了解数据库架构并从应用程序中访问受限信息。 

例如,黑客可能会执行 SQL 注入,以使用始终为真的语句(例如“1=1”)从应用程序中检索数据。由于此语句始终为真,因此查询字符串将返回包含表详细信息的响应。 

攻击者还可以使用批处理 SQL 注入,其中一组 SQL 语句由分号分隔,如“105; DROP TABLE 供应商”。这里分号后的语句将从应用程序数据库中删除供应商表。

SQL 注入攻击风险——它们有多危险?

SQL 注入攻击的危险在于黑客能够访问未经授权的数据。当此数据涉及敏感数据(例如密码、信用卡详细信息或用户或客户的个人身份信息)时,攻击者可能会对企业造成严重的财务和声誉损失。有时,SQL 注入攻击还可以让攻击者在不被察觉的情况下长期访问组织的系统。

过去有许多使用 SQL 注入的引人注目的数据泄露事件。例如, 来自 APT 组织的 GhostShell 攻击 2013 年使用 SQL 注入窃取并发布了 53 所大学的 36,000 条学生和教职工的个人记录。而在同一年,另一组 RedHack集体使用SQL注入 破坏土耳其政府网页并消除对政府机构的债务。

SQL 注入攻击的类型

根据用于访问数据库的方法,SQL 注入攻击的类型可以分为几类。

  • 带内 SQLi(经典): 

这是一种常见的 SQLi 攻击类型,攻击者使用相同的通信渠道发起攻击和检索结果。这可能是基于错误的,其中数据库错误消息揭示了有关数据库结构的信息,或者是基于联合的 SQLi,它融合了多个选择语句以获得包含攻击者可以利用的数据的单个 HTTP 响应。

  • 推理 SQLi(盲)

在这些类型的 SQLi 攻击中,攻击者根据发送的数据负载观察服务器的行为模式,以了解有关其结构的更多信息。盲注 SQL 注入可能是布尔 SQL 注入攻击,它会提示应用程序返回一个结果,该结果将根据查询是真还是假或基于时间而变化,其中 SQL 命令使数据库在做出反应之前等待。基于这个等待时间,攻击者可以知道查询是真还是假。

  • 带外 SQLi

当同一通道不能用于攻击和检索信息或 SQL 服务器太慢时,攻击者使用带外 SQLi 攻击作为其他两种方法的替代方法。这种类型的攻击取决于在应用程序使用的数据库服务器上启用的特定功能。 

SQL 注入示例

黑客可以通过多种方式利用 SQL 注入漏洞。根据攻击者正在寻找的内容以及数据库中可能可用的信息类型,SQL 注入示例通常分为以下类型:

  • 检索隐藏数据:修改 SQL 查询以显示隐藏结果(例如购物网站中未发布的产品)的攻击。
  • 颠覆应用程序逻辑: 这涉及通过修改查询字符串来干扰应用程序的逻辑。例如,通过注释掉检查密码是否为真的查询部分,以用户身份登录而不输入密码。
  • 检查数据库:检索有关数据库的信息的攻击,包括结构和版本以及表本身。 
  • 基于 UNION 的 SQL 注入来检索额外的表:在这些攻击中,攻击者使用诸如 UNION select 之类的关键字将原始合法查询的结果附加到附加查询中,以从 SQL 数据库中可能敏感的其他表中检索数据

CDNetworks 如何保护您免受 SQL 攻击

在大多数情况下,可以通过在 SQL 代码中使用参数化查询或准备语句来防止 SQL 注入攻击。这些涉及以防止用户输入干扰查询结构的方式重写代码。

保护您的企业免受 SQL 注入攻击的方法之一是使用 Web 应用程序防火墙 (WAF)。 WAF 监控流入和流出应用程序的流量,并根据一组可自定义的网络安全规则阻止恶意流量。 漏洞扫描 工具还可以在检测应用程序和 SQL 数据库中的弱点方面发挥很大作用,攻击者可以利用这些弱点成功进行 SQL 注入。

CDNetworks 为企业提供 Application Shield(DDoS防护及Web应用防火墙),一种基于云的解决方案,集成了 Web 应用程序防火墙 (WAF) 和其他安全功能。它内置了超过 1000 条 WAF 保护规则,其中 200 条是针对 SQL 注入攻击的,让您加强对这些类型威胁的防御。同时,新的 WAF 规则也正在添加,以应对 SQL 攻击的演变,并准备好在未来阻止新技术。 

探索更多