安全测试-注入


注入技术包括使用应用程序的输入字段注入 SQL 查询或命令。

Web 应用程序 - 注入

成功的 SQL 注入可以读取、修改数据库中的敏感数据,也可以从数据库中删除数据。它还使黑客能够对数据库执行管理操作,例如关闭 DBMS/删除数据库。

让我们借助简单的图表了解该缺陷的威胁代理、攻击向量、安全弱点、技术影响和业务影响。

SQL注入

例子

该应用程序在构建以下易受攻击的 SQL 调用时使用不受信任的数据 -

String query = "SELECT * FROM EMP WHERE EMPID = '" + request.getParameter("id") + "'";

动手实践

步骤 1 - 导航到应用程序的 SQL 注入区域,如下所示。

SQL注入

步骤 2 - 如练习中所示,我们使用字符串 SQL 注入来绕过身份验证。使用 SQL 注入以老板('Neville')身份登录,而无需使用正确的密码。验证 Neville 的个人资料是否可以查看以及所有功能是否可用(包括搜索、创建和删除)。

步骤 3 - 我们将注入 SQL,以便我们能够通过发送参数“a”=“a”或 1 = 1 来绕过密码

SQL注入

第 4 步- 漏洞利用后,我们能够以管理员 Neville 身份登录,如下所示。

SQL注入

防止SQL注入

有很多方法可以防止 SQL 注入。开发人员编写代码时,应确保相应地处理特殊字符。OWASP 提供了备忘单/预防技术,这绝对是开发人员的指南。

  • 使用参数化查询
  • 转义所有用户提供的输入
  • 为最终用户启用数据库的最小权限