OWASP 2023 TOP10 A3 SQL注入

Posted by DDW on 08-05,2022

一、什么是SQL注入

web应用程序对用户的输入数据合法性没有判断或过滤不严,攻击者可以在web的应用程序中实现定义好的查询语句的结尾进行添加额外的执行语句,在管理员不知情的情况下实现非法操作。以此实现欺骗数据的库服务器执行非授权的任意查询,从而进一步得到相应的数据信息。也就是说,服务端想让你提交一个数据,可你要么直接提交了一个命令,要么在提交的数据后面拼接了一个命令。

二、产生的原因

SQL命令可以进行查询、插入、删除等操作,直接把这些命令拼接起来。
所以你提交了这些命令之后,就可以操作数据库了。

漏洞点:

  • cookies要提交的数据
  • post要提交的数据
  • get中要提交的数据
  • 所有与用户交互的地方都有可能存在漏洞。

思路:

  • 判断是否存在注入,注入是字符型还是数字型
  • 拆解SQL查询语句中的字段数
  • 确定显示的字段顺序
  • 获取当前数据库
  • 获取当前数据库的表

三、如何防范

1.关闭SQL错误回显
2.使用成熟的waf
3.前端输入字符的数据验证(符号、长度等等)
4.SQL服务运行于专门的服务器,且权限设置到最小
5.对输入的特殊字符做转义处理。

四、DVWA实现

实例1:账号密码拼接
image-1691210329496
左侧点击暴力破解。
输入image-1691210415162
发现拼接成功
源码解析:
image-1691210456574
服务端未作任何入参处理,我们可对’$user’进行拼接,两个’分别拼接前后两个符号。