如何使用扩展事件和 SQL 监视器检测 SQL 注入攻击

主要观点:

  • 需检测 SQL 注入攻击等渗透 SQL Server 数据库的行为,可在数据库应用发布候选版本测试中添加渗透测试。
  • 即便有预防和防御措施,仍需在数据库被攻击时提供警报。
  • 介绍了多种 SQL 注入攻击类型(带内注入、盲注、带外注入)及需检测的错误类型。
  • 强调使用扩展事件(Extended Events)捕获错误的重要性,通过创建特定事件会话来捕捉特定错误。
  • 给出了监测 SQL 注入攻击迹象的查询示例及创建 SQL Monitor 自定义指标的步骤。
  • 通过模拟 SQL 注入攻击展示了如何生成错误并检测。

关键信息:

  • 常见的 SQL 注入攻击类型及特点,如带内注入通过错误消息或联合查询获取信息,盲注通过检测 HTTP 响应延迟或变化来判断等。
  • 需监测的错误类型,如登录失败错误 18456、语法错误 102 和 105 等。
  • 使用扩展事件的sqlserver.error_reported事件捕捉特定错误,创建MonitorSuspiciousErrors事件会话并设置相关参数和目标。
  • 监测 SQL 注入攻击的查询,计算特定时间段内的错误数量,可在 SQL Agent 调度器中设置警报。
  • 安装 SQL Monitor 自定义指标以可视化监测结果,可设置警报阈值。
  • 模拟 SQL 注入攻击的过程及相关 SQL 代码。

重要细节:

  • 不同类型攻击中错误的产生方式及特点,如盲注过程较慢且错误较多。
  • 创建扩展事件会话的具体步骤,包括使用 SSMS 的向导或新建会话对话框,选择事件、配置过滤器和目标等。
  • 监测查询中通过计算特定时间段内的错误数量来判断是否有攻击迹象,需考虑背景错误。
  • 模拟攻击中创建的FakeCustomer表及存在漏洞的存储过程,展示了攻击者如何利用漏洞获取数据。
  • 获取MonitorErrors事件会话环缓冲区详细信息的查询代码及返回结果的示例。
阅读 21
0 条评论