什么是数据库和SQL?为什么应用程序容易受到SQL注入的攻击?

您知道17 年前首次发现SQL 注入攻击吗?然而,它仍然在OWASP 十大漏洞列表中名列前茅。这个漏洞是什么?它如何影响您的应用程序?你能为这个做什么?这是帮助您了解此 OWASP 十大漏洞及其业务影响的指南。如何停止 SQL 注入?您可以先通过AppTrana 免费试用了解您的网站是否存在 SQL 注入风险。

什么是数据库和SQL?为什么应用程序容易受到SQL注入的攻击?-南华中天

什么是数据库和 SQL?

数据库是一组描述的表,可以从中访问或存储数据。使用数据库的应用程序需要一种媒介来在前端和数据库之间进行通信。这就是 SQL 发挥作用的地方。结构化查询语言 (SQL) 是一种用于访问和操作数据库中数据的语言。应用程序可以使用 SQL 语句与数据库进行通信。使用 SQL 语句,应用程序可以执行一些标准的 SQL 命令,例如“SELECT”、“UPDATE”、“INSERT”、“DELETE”、“CREATE”、“DROP”。

SQL 注入代表什么?

大多数 Web 应用程序使用称为结构化查询语言 (SQL) 的机器可理解的语言与数据库进行交互。攻击者使用 Web 应用程序中的输入字段在服务器上运行任意查询(注入);因此,攻击过程称为 SQL 注入或SQLi 攻击。

  1. 黑客使用您的输入字段注入恶意代码。
  2. 服务器执行从浏览器接收到的代码。
  3. 一旦黑客获得控制权,他就可以窃取、编辑、删除敏感数据或利用其他管理员权限。

常见的 SQL 注入攻击会导致知识丢失或拒绝访问。然而,多年来,黑客将这些攻击与身份验证不足、DNS 劫持、XSS 和 DDoS 相结合,造成严重的经济损失和绝对的主机接管。以下是近年来最著名的一些 SQL 攻击。

  • 2010 年 3 月:Albert Gonzalez 被判处 20 年徒刑。他将自己的代码安装到Heartland Payment Systems的信用卡服务器中,并窃取了 1.3 亿个信用卡号码。该公司的攻击成本约为 1200 万美元。
  • 2012 年 6 月: 未经证实的 SQL 攻击导致俄罗斯黑客从LinkedIn.com获取了 650 万用户凭据。
  • 2012 年 7 月: 雅虎语音用户的 453,000 个电子邮件地址和密码被泄露
  • 2014 年 10 月: Drupal宣布其对攻击的高度脆弱性。
  • 2015 年 2 月: 100 万个WordPress网站易受 SQL 注入攻击
  • 2020 年 8 月: SQL 注入攻击导致 Freepik 和 Flaticon 用户的 830 万条记录泄露。
  • 2021 年 7 月: SQL 注入为 Kaseya 的勒索软件攻击打开了大门。
  • 2021 年 7 月: WooCommerce 披露其多个功能插件和软件版本易受 SQL 注入攻击,他们注意到在此期间发生了数次安全攻击。

什么是数据库和SQL?为什么应用程序容易受到SQL注入的攻击?-南华中天

为什么应用程序容易受到 SQL 注入的攻击?

当未经适当验证的用户输入直接作为 SQL 查询传递给 SQL 解释器以进行处理时,应用程序很容易受到 SQL 注入的攻击。这导致执行用户输入并提供预期的结果。

下面的场景解释了一个 Web 应用程序,它接受用户的用户名和密码,并直接传入要执行的查询

案例 1:应用程序接受用户输入并传入 SQL 查询

什么是数据库和SQL?为什么应用程序容易受到SQL注入的攻击?-南华中天

案例 2:在用户名参数中添加了单引号。结果,数据库运行以下查询

什么是数据库和SQL?为什么应用程序容易受到SQL注入的攻击?-南华中天

由于 OR 1=1,' WHERE 子句从表 users 中返回第一个 id。成功执行此 SQL 命令后,攻击者可以绕过身份验证。

企业上的大规模自动化 SQL 注入机器人

攻击者怎么知道你的漏洞?

步骤1:

攻击者使用包括机器人和软件在内的自动化机制扫描数千个网站以寻找 SQL 注入。一些最常测试的字段是 URL 和表单。在这里很难停止 SQL 注入。

第2步:

审判。他分析漏洞的严重性并渗透到数据库中。

第 3 步:

精心设计了一个虚假输入命令,牢记漏洞,然后在该时间段内对其进行测试。如果它授予对数据库的访问权限,攻击者可以诱骗应用程序泄露所有记录。

第4步:

更致命的攻击者会寻找其他漏洞并同时利用它们来获取非法经济收益和主机控制权。

例子:

登录表单是验证用户的最常用方法之一。

什么是数据库和SQL?为什么应用程序容易受到SQL注入的攻击?-南华中天

验证功能对应的服务器代码为:

什么是数据库和SQL?为什么应用程序容易受到SQL注入的攻击?-南华中天

现在,黑客只需在任一输入框中输入“或”“=”即可验证 SQL。它将为他提供表用户中的所有行。

什么是数据库和SQL?为什么应用程序容易受到SQL注入的攻击?-南华中天

如何防止 SQL 注入攻击?

防止或减轻 SQL 注入攻击在很大程度上要确保没有一个字段容易受到无效输入和应用程序执行的影响。您无法手动检查网站上的每个页面和每个应用程序,尤其是当更新频繁且用户友好性是重中之重时。尽管如此,安全分析师和经验丰富的开发人员推荐了一些后续要点,以确保您的数据库平方在服务器的限制内得到很好的保护。

1)连续扫描和渗透测试

很长一段时间以来,自动化Web 应用程序扫描器 一直是指出 Web 应用程序中漏洞的最佳选择。现在,随着 SQL 注入在利用逻辑缺陷方面变得越来越聪明,网站安全专业人员应该在安全供应商的帮助下探索手动测试。

他们可以根据一组语法、类型和长度规则来验证用户输入。它有助于谨慎地审核应用程序漏洞,以便您可以在黑客利用它之前修补代码。

2)限制权限

它更像是一种数据库管理功能,但对特定帐户强制执行特定权限有助于防止盲目 SQL 注入攻击。从无特权帐户开始,然后转到“只读”、“编辑”、“删除”和类似的特权级别。最小化应用程序的权限将确保通过应用程序进入数据库的攻击者无法未经授权使用特定数据。

3)使用查询参数

动态查询给安全专业人员带来了很多麻烦。他们必须处理每个应用程序中的可变漏洞,这些漏洞只会随着更新和更改而变得更加严重。建议您准备参数化查询。

这些查询简单,易于编写,并且只有在明确定义了 SQL 代码中的每个参数时才通过。这样,您的信息将配备武器以区分代码和信息输入。

4)即时保护

大多数组织都未能解决诸如过时的代码、缺乏测试和更改资源、不了解应用程序安全性以及应用程序频繁更新等问题。对于这些,Web 应用程序保护是最好的解决方案。

可以部署托管Web 应用程序防火墙以立即缓解此类攻击。它包含自定义策略以阻止任何可疑输入并立即拒绝信息泄露。这样,您就不必在事后手动查找漏洞和修复问题。