《OWASP代码审计》学习——SQL注入漏洞审计

一、注入的概念

注入攻击允许恶意用户向应用程序添加或注入内容和命令,以修改其行为。这些类型的攻击是常见且广泛的,黑客很容易测试网站是否易受攻击,攻击者也很容易利用这些攻击。如今,它们在尚未更新的遗留应用程序中非常常见。

二、SQL注入漏洞

最常见的注入漏洞是 SQL 注入,也很容易修复和防范。注入漏洞涵盖了 SQL、LDAP、Xpath、OS 命令、XML 解析器

1.漏洞导致的后果

敏感信息泄露

数据完整性受损(SQL注入可修改数据,添加新的数据或删除数据)

权限提升

进入后台

SQL命令不受不可信输入保护,SQL解析器无法区分代码和数据

字符串custQuery=从客户端选择客户名称、地址1,其中客户标识码=' " 请求.GetParameter("id")+" "

在开发人员不考虑安全性的遗留应用程序中,使用字符串连接来生成SQL语句是非常常见的。问题是这种编码技术不能告诉解析器语句的哪一部分是代码,哪一部分是数据,在用户输入被连接到SQL语句的情况下,攻击者可以通过向输入数据添加SQL代码来修改SQL语句。

2.防御方法

(1)HtmlEncode 所有用户输入。

(2)使用静态分析工具。静态的语言分析对.Net,Java,python 都比较准确。然而,当注入来自 JavaScript 和 CSS 时,静态分析可能会成为一个问题。

(3)参数化 SQL 查询。使用编程语言或框架提供的参数化语句的 SQL 方法,以便 SQL 解析器能够区分代码和数据。

(4)使用存储过程。存储过程通常有助于 SQL 解析器区分代码和数据。然而,存储过程可以用来构建动态的 SQL 语句,允许代码和数据混合在一起,导致它容易被注入。

(5)为开发人员提供安全编码最佳实践的培训。

三、盲注

通常,SQL 查询会返回呈现给用户的搜索结果。然而,在某些情况下,SQL 查询是在幕后进行的,这影响了页面的呈现方式。不过,攻击者仍然可以从各种用户界面元素的错误响应中收集信息。SQL 盲注攻击是一种向数据库询问真假问题并根据应用程序的响应来确定答案的攻击。

实际上,攻击者使用 SQL 查询来确定为有效的 SQL 返回哪些错误响应,以及为无效的SQL 返 回 哪 些 响 应 。 然 后 攻 击 者 就 可 以 探 查 真 实 的 数 据 。 例 如 , 审 计 名 为“user_password_table”的表是否存在。一旦他们获得了这些信息,他们就可以使用类似上述的攻击来恶意删除表,或者试图从表中返回信息(用户名“john”是否存在?盲目的 SQL注入也可以使用计时来代替错误消息。例如,如果无效的 SQL 需要 2 秒钟来响应,但是有效的 SQL 在 0.5 秒内

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值