SQL注入漏洞的理解

谈一谈你对SQL 注入漏洞的理解

1.漏洞描述

SQL注入漏洞是web层面最高位的漏洞之一,所谓的SQL注入是通过把SQL命令插入web表单或者输入域名或页面请求的查询字符串,最终达到欺骗服务器执行恶意的SQL命令。攻击者可以利用这个漏洞,可以对数据库的数据进行增删改查,或者利用潜在的数据库漏洞进行攻击

2.漏洞原理

        SQL注入攻击行为可以描述为通过通过用户可控参数中注入SQL语法,破坏原有的SQL结构,达到编写程序时预料之外结果的攻击行为。其成因可以归结为以下两个原因叠加造成的:

  • 程序员在处理程序和数据库交互时,使用字符串拼接的方式构造SQL语句。
  • 未对用户可控参数进行足够的过滤,便将参数内容拼接到SQL语句中。

3.漏洞场景

       web 应用程序通常会根据用户提交的参数,进行数据库查询。在查询数据的过程中,攻击者可以构造特殊的SQL语句发起SQL注入攻击。

        只要Web应用与数据库交互的地方都有可能存在SQL注入漏洞。

4.漏洞评级

⭐⭐⭐⭐⭐⭐⭐⭐⭐⭐        高危十级

5.漏洞危害

        攻击者可以利用SQL注入漏洞,可以获取数据库中的多种信息,列如,后台管理员账密,从而脱取数据库的内容(脱库)。

        在特别1的情况下还可以插入内容到数据库、删除数据库内容或者修改数据库内容。

        如果数据库权限存在分配问题,或者数据库本身存在缺陷,攻击者可以利用SQL注入漏洞直接获取webshell或者服务器权限。

6.漏洞验证

        会在疑似注入点的地方或者参数后面尝试提交数据,从而进行判断是否存在SQL注入漏洞:

  • 对参数进行 +1-1,如果能够回显上一个页面或下一个页面,(判断是否有回显)
  • 对参数后面加上 " ,判断是否有数据库错误显示,根据回显判断是字符型或数字型注入,闭合方式
  • 对参数后面加入布尔判断(and 1=1  或  and 1=2) 回显的页面是否不同
  • 对参数后面加入延迟时间(and sleep(5))判断页面是否有延迟。

7.漏洞利用

  • 联合查询
  • 报错注入
  • 布尔盲注
  • 延时注入
  • 宽字节注入
  • user-agent注入、referer注入、cookie注入,base64注入等。
  • sqlmap工具的使用

8.防御方案

  • 避免采用拼接的方式构造SQL语句,可以采用预编译等技术;
  • 对进入SQL语句的参数进行足够的过滤
  • 部署安全设备,比如WAF(安全狗)
  • 现在很多开放框架,基本上已经从技术上,解决SQL注入问题。

9.典型案例

你可能感兴趣的:(SQL注入,安全,网络,web安全)