网络安全SQL注入攻击的真相首席架

北京医治皮肤病医院 https://m-mip.39.net/disease/mip_9278663.html

我们生活在数据的黄金时代。有些公司将其分析为更好的自己,有些公司为了获利而进行交易,没有一家公司因其价值而自由放弃-对于他们的业务和犯罪分子。

SQL(结构化查询语言)是一种非常流行的与数据库通信的方式。虽然许多新数据库使用非SQL语法,但大多数仍然与SQL兼容。这使得SQL成为任何想要访问数据的人的便利工具,无论他们的动机如何。

SQL注入(或SQLi)攻击已经存在了近20年。他们永远不会停止使用Imperva的Web应用程序防火墙(WAF)。所以我们有丰富的数据和经验可供分享。在这篇文章中,我们将分享Imperva保护下数千个网站的最新统计数据和图表,以及攻击示例以及保护网站的方法。

基于SQL的应用程序的常见攻击

SQLInjection是一种用于攻击应用程序的代码注入技术。攻击者可以使用工具,脚本甚至浏览器将SQL语句插入应用程序字段。然后由数据库引擎执行这些语句。此类攻击通常用于:

欺骗身份篡改现有数据窃取数据销毁数据更改数据库权限应用程序背后的数据通常是关键任务,这就是SQL注入攻击被认为非常严重的原因。

来自ImpervaWAF的统计数据

Imperva的WAF每天都会在我们保护的网站上减少数百万次SQL注入攻击。我们保护的网站中至少有80%每个月都会受到攻击。我们的数百个网站每天都会面临SQLi攻击。

您可以在下面找到我们监控的攻击中使用的国家,行业和工具的统计数据。

图1:网站行业分布-由于BakerHostetler的年网络安全报告指出它是数据泄露最严重的行业,因此受攻击程度最高的行业是健康行业,这一点非常有意思,但并不奇怪。

没有图示的是受攻击最多的数据库(按递减顺序):Oracle,PostgreSQL,MySQL和MongoDB。同时,受攻击最多的平台是WordPress,Drupal,Joomla和Quest。

图2:受攻击网站的国家/地区与攻击来源-看到黑客倾向于攻击自己国家/地区内的网站并不奇怪。当然,这有可能恰恰相反-这些结果可能反映了黑客使用在他们攻击的国家/地区拥有端点的VPN/代理,以逃避地理阻塞。

每天大量使用SQLi公共漏洞。例如:CVE--和CVE--都是JoomlaSQLi公共漏洞,这些漏洞在我们监控的66,个事件中使用。

图3:顶级漏洞扫描程序-由于我们计算事件而非请求,每个扫描程序生成的有效负载数量都没有影响。尽管SQLiDumper取得了成功,但Joomla扫描仪并不落后。

我们每月监控数万个攻击性IP,并使用攻击分析来查找恶意IP并防范它们。我们通过分析过去几个月的攻击IP收集了一些有趣的统计数据:

图4:日复一日尝试SQLi攻击的IP。蓝色:在当天和当天尝试SQLi攻击的IP的百分比,在当天尝试SQLi攻击的IP中。橙色:包含由这些攻击IP发送的SQLi尝试的请求的百分比,包含SQLi尝试的总请求数。

令人好奇的是,即使平均每天不到三分之一的IP攻击(蓝线),他们的请求构成了超过80%的SQLi请求(橙色线)。这可能是由于各种漏洞扫描程序正在进行扫描。这些工具倾向于轰炸目标以寻找漏洞,这解释了高IP到请求比率。

图5:顶级攻击工具-非常通用且广泛使用,因此cURL占据如此重要的位置并不奇怪。但是,深入分析显示,与cURL一起发送的大多数可疑请求实际上是攻击后检查,即被阻止的黑客,然后使用cURL来测试他们是否仍然可以访问该网站。cURL紧随其后的是Python-黑客的首选武器,以及Ruby-用于编写Metasploit的语言代码。

攻击示例

以下是我们最近一个月跟踪的一些流行攻击:

VectorIncidentsDescription1and1=2unionselectpasswordfromqianbo_admin,Tryingtoquerypasswords1’A=,ProbingN;O=Dand1=1

nessus=or1=1–

CONCAT(‘whs(‘,’)SQLi’)

76,Probingbyvulnerabilityscanners:

Veracode,NessusandWhiteHatSecurity,respectively

‘unionselectunhex(hex(version()))—,Attemptingtodiscoverdatabaseversion;WAITFORDELAY’00:00:28′;1,,Blindprobing—testingfordelayinresponse

表1:SQL注入攻击的示例

如何保护您的应用程序免受SQL注入

有许多方法可以保护您的应用程序免受SQL注入攻击。有些应该在应用程序开发期间使用,其他应该在部署应用程序后使用。

开发阶段:

使用预准备语句-一种“模板化”SQL以使其适应SQL注入的方法。只有某些输入值可以发送到数据库,因此无法运行模板化语句以外的语句。稍后使用不同协议传输的值不像语句模板那样编译。因此不能发生SQL注入。

这里有两个Python代码示例,包含和不包含预准备语句。该代码基于MySQL连接器驱动程序(


转载请注明:http://www.aierlanlan.com/cyrz/3583.html

  • 上一篇文章:
  •   
  • 下一篇文章: