如何报告SQL注入攻击(例如,用户的ISP)?

编辑:对不起,我的问题显然不清楚。 我不想在内部报告尝试的服务器攻击; 我们已经有系统logging。 logging并报告该活动。

我所热衷的做法是向攻击者的ISP或其他人报告这些攻击事件。

原始问题:

我们的网站对SQL注入(AFAIK!)是免疫的,但是我们当然仍然会定期进行定位。

有什么办法可以自动报告企图攻击 – 反向DNS查找等?

尽pipe如此,我认为这是唯一有价值的事情,总的来说,这会为社会带来一个好处。

同样我想我们看到的所有其他攻击 – 探测广泛的BBS,MySQL,PHPAdmin等。

捐赠你的日志到SANS ! 他们有一个大多数防火墙的客户端,将拉动日志并将其发送到DShield数据库。

其他人都知道别的什么,或者我做了什么,但是从我能理解的事情来看,你正试图向尝试向其ISP提供SQL注入的人报告。

这通常是一个死路一条,而且最好的办法是阻止用户尝试攻击,因为大多数执行攻击的机器通常不是由“黑客”拥有,而是可能是受到攻击的机器或者滥用网站的人它提供免费的漏洞扫描或类似的东西。

大多数ISP有一个[email protected]电子邮件地址报告这样的事情..如果您可以反向查找从ISP的ISP名称,我会发送信息在那里。

通过从网站的SQL注入,我认为:(a)你有一些web表单,(b)有一个SQL后端,(c)你使用的方法防止用户input被误解为SQL(参数化查询,等等。)

但是你仍然想要检测SQL注入的尝试。 好。

尝试SQL注入的标准方法之一是探索通过使用string插入合并到SQL查询中的input字段。 例如:

snprintf(buf,dimensionof(buf),“SELECT calory_limit FROM user_diets WHERE user_firstname ='%s'AND user_surname ='%s'”,firstname,surname);

和名都是来自networking表单的未经过滤的input。 在这个例子中,用户可以提供名字firstname = Johnny'姓氏 = '-';DROP DATABASE;--

sprintf会导致:

SELECT calory_limit FROM user_diets WHERE user_firstname ='Johnny''AND user_surname ='' – '; DROP DATABASE; – '

因为SQL中的'(两个单引号)被解释为string的一部分,所以我们已经在预期的原始语句中“打开”了string分隔符。 这让我们把后来应该是string, 姓氏 ,转换成commmand。

总之,寻找进入领域的人:

  • 以单引号标记结束
  • 从单引号开始
  • 在结尾处或末尾包含一个“ – ”(用SQL注释分隔符来包装攻击有效载荷的目的是,如果没有这一点,攻击者对预期查询的失真可能会在最后留下一些不可parsing的命令位,这些可能会产生一条错误消息给日志并提醒你。)

此外,你可能会考虑相同的启发式,例如,UTF-8解码input。 或者UTF-8解码两遍。 渗透testing人员会考虑可能存在于你的代码中的错误,所以他们会尝试看起来没有道理的input – 例如两次UTF-8编码的单引号。

而且,寻找" 和其他HTML实体序列。

您可以searcharxiv.org并查找一些详细介绍特定攻击风格的论文:跨站点脚本,SQL注入,URL修改。 读一些文件会使你更多。

玩魔鬼的人主张,浪费时间报告这些机器几乎是毫无意义的。 大多数攻击来自僵尸机器,用户不知道甚至发生。 所以,即使你把它们报告给他们的ISP,并且他们的ISP切断他们的连接,直到他们清理了机器,他们很可能只会在晚些时候再次感染,或者即使他们没有从互联网上删除1僵尸机器的事实是无意义的成就。

唯一的一次,我会说这是值得报告这些尝试是如果机器是像ThePlanet托pipenetworking的一部分。 把受损的服务器从互联网上取下是一件大事,尤其是因为服务器的所有者可能甚至没有意识到它已经被破坏了。 另一个区别是服务器对家用电脑的攻击能力。

怎么样当sql攻击包含一个特定的HTTP链接到一个网站尝试创build超链接返回到一个目标网站(在下面的情况下 – 显然是试图跳转search引擎)?

明显试图从这个荒谬的行为中受益的网站是http://paydayloansforlivet.com,我希望更多的技术上的头脑黑客为他们提供一些自己的药物。

该攻击是一个varbinary转换的SQL脚本,其中:

/pages.aspx page = 1'+ declare + @ s + varchar(8000)+ set + @ s = cast(+ as + varchar(8000))+ exec(@s) – 80 – 93.79.115.223 HTTP / 1.1 Mozilla / 4.0+(兼容; + MSIE + 6.0; +视窗+ NT + 5.1; + SV1)

知识产权在乌克兰。

SQL中的一个简单的脚本如下所示,显示了今天在我的一个服务器上接收到的真实注入内容:

 declare @b varbinary(max) set @b = select cast(@b as varchar(max))