暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

运维日记丨SQL注入原理与加固方法

新运维新数据 2022-07-30
2159

各位新朋友~记得先点蓝字关注我哦~

SQL注入原理

当Web应用程序未对用户输入的数据进行足够的安全处理(如危险字符过滤或者语句过滤),而直接拼接SQL语句执行时,攻击者可以精心构造参数值,使服务器执行非预期的SQL语句并返回结果,造成数据库信息泄露。利用SQL注入漏洞,攻击者可获取数据库的增、删、改、查权限,甚至执行系统命令,上传后门文件等。


SQL注入示例

代码如下:
这是一个登录校验,获取name、pass参数后拼接sql语句放入数据库执行,通过输入的账号、密码与数据库的账号密码进行匹配,验证是否登录成功。
    SELECT * FROM youdian_admin WHERE AdminName ='$name' and AdminPassword = '$pass' limit 0,1

    举例示意张三登录时,数据库执行语句(数据库满足则登录成功,这里没添加所以失败)

      SELECT * FROM youdian_admin WHERE AdminName = ‘zhangsan’ and AdminPassword = ‘zhangsang123’ limit 0,1


      当恶意攻击者尝试登录时,会尝试构造数据库的执行语句

        SELECT * FROM youdian_admin WHERE AdminName = ‘hacker’ or 1=1 # and AdminPassword = ‘hacker’  limit 0,1


        这个时候账号密码校验已经失去了原本的意义,通过输入or 1=1 # 的方式,or 1=1 作为永真条件,# 作为注释符号,将后半部分语句进行失效,最后数据库执行的语句为SELECT * FROM youdian_admin WHERE AdminName = hacker or 1=1,返回前端,在这个登录页面进行实现任意登录,通常这种注入有个特别的名称叫“万能密码”。

        既然语句限定在一个表中执行命令,为什么sql注入能够实现拖库?
        继续以上面例子走下去,既然执行的命令已经变形,那么可以通过联合(union select)查询的方式找mysql数据库名,可在information_schema获取到其他库、名、字段数据
        找数据库中的表名


        找表中字段名
        有库有表有字段,那么数据也就出来了

        当然也不是所有的数据库都有information这个库,很多情况下无法直接获取到数据库名、表名、字段名,但是可以进行暴力枚举。比如对库名、表名、列名进行分割为单独的字符串进行字符枚举。

        以上介绍的这种注入的SQL注入,只是其中一种方式,简单介绍SQL注入是如何获取数据的。


        加固方法

        • 对SQL注入漏洞,需要对网站所有参数中提交的数据进行过滤,禁止输入"'"、"xor"、"or"、"--"、"#"、"select"、"and"等特殊字符;
        • 所有的查询语句都使用数据库提供的参数化查询接口,SQL语句使用参数化处理后的数据作为输入,而不是将用户输入变量嵌入到SQL语句中;
        • 严格限制网站用户对数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度的减少注入攻击对数据库的危害;
        • 避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者收集这些错误信息进行判断进而执行SQL注入攻击。


        美创运维中心数据库服务团队拥有PG ACED 1名、Oracle&PG ACE 3名、OCM 十数名、数十名Oracle OCP、MySQL OCP、TDSQL TCP、OceanBase OBCP、TiDB PTCP、达梦 DCP、人大金仓、红帽RHCA、中间件weblogic、tuxedo等认证工程师 ,著有《攻坚指南:左手Oracle,右手MySQL》,《Oracle数据库性能优化方法和最佳实践》,《Oracle内核技术揭秘》,《Oracle DBA实战攻略》等多本数据运维优化书籍。目前运维各类数据库合计5000余套,精通Oracle、MySQL、SQLServer、DB2、PostgreSQL、MongoDB、Redis、TDSQL、OceanBase、达梦、人大金仓等主流商业和开源数据库。并成为首批国内达梦战略合作伙伴之一,拥有海量经验和完善的人员培养体系。并同时提供超融合,私有云整体解决方案。



        文章转载自新运维新数据,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

        评论