|
, f5 y" q) v5 D: x& b: s 我们生活在数据的黄金时代有些公司将其分析为更好的自己,有些公司为了获利而进行交易,没有一家公司因其价值而自由放弃 - 对于他们的业务和犯罪分子SQL(结构化查询语言)是一种非常流行的与数据库通信的方式虽然许多新数据库使用非SQL语法,但大多数仍然与SQL兼容。 ' ?% y2 L, s1 p& m+ K
这使得SQL成为任何想要访问数据的人的便利工具,无论他们的动机如何SQL注入(或SQLi)攻击已经存在了近20年他们永远不会停止使用Imperva的Web应用程序防火墙(WAF)所以我们有丰富的数据和经验可供分享。 : M$ D& @- T6 R% _* k4 g/ ?
在这篇文章中,我们将分享Imperva保护下数千个网站的最新统计数据和图表,以及攻击示例以及保护网站的方法基于SQL的应用程序的常见攻击SQL Injection是一种用于攻击应用程序的代码注入技术攻击者可以使用工具,脚本甚至浏览器将SQL语句插入应用程序字段。
' Y- k: k; _4 e 然后由数据库引擎执行这些语句此类攻击通常用于:欺骗身份篡改现有数据窃取数据销毁数据更改数据库权限应用程序背后的数据通常是关键任务,这就是SQL注入攻击被认为非常严重的原因来自Imperva WAF的统计数据。
0 o$ v m @2 V$ q, g& C Imperva的WAF每天都会在我们保护的网站上减少数百万次SQL注入攻击我们保护的网站中至少有80%每个月都会受到攻击我们的数百个网站每天都会面临SQLi攻击您可以在下面找到我们监控的攻击中使用的国家,行业和工具的统计数据。 ) Q* u' b6 j+ V: [3 u0 t& |
图1:网站行业分布 - 由于BakerHostetler的2018年网络安全报告指出它是数据泄露最严重的行业,因此受攻击程度最高的行业是健康行业,这一点非常有意思,但并不奇怪没有图示的是受攻击最多的数据库(按递减顺序):。 h& p+ f- P5 d9 Z& O. C
Oracle,PostgreSQL,MySQL和MongoDB。 同时,受攻击最多的平台是WordPress,Drupal,Joomla和Quest。 " H! m5 @# j" X
图2:受攻击网站的国家/地区与攻击来源 - 看到黑客倾向于攻击自己国家/地区内的网站并不奇怪 当然,这有可能恰恰相反 - 这些结果可能反映了黑客使用在他们攻击的国家/地区拥有端点的VPN /代理,以逃避地理阻塞。 5 [: {1 Y* Z/ `$ w# \7 e
每天大量使用SQLi公共漏洞。 例如:CVE-2017-8917和CVE-2015-7858都是Joomla SQLi公共漏洞,这些漏洞在我们监控的66,000个事件中使用。 2 B8 N5 _& `, @6 g" {% v
图3:顶级漏洞扫描程序 - 由于我们计算事件而非请求,每个扫描程序生成的有效负载数量都没有影响 尽管SQLi Dumper取得了成功,但Joomla扫描仪并不落后我们每月监控数万个攻击性IP,并使用攻击分析来查找恶意IP并防范它们。
; O# [! j9 y" A+ e( } 我们通过分析过去几个月的攻击IP收集了一些有趣的统计数据:
' `# L9 a1 A( y, H; W1 K; g% F+ {8 I 图4:日复一日尝试SQLi攻击的IP 蓝色:在当天和当天尝试SQLi攻击的IP的百分比,在当天尝试SQLi攻击的IP中 橙色:包含由这些攻击IP发送的SQLi尝试的请求的百分比,包含SQLi尝试的总请求数。 0 N' i9 z6 U D% C
令人好奇的是,即使平均每天不到三分之一的IP攻击(蓝线),他们的请求构成了超过80%的SQLi请求(橙色线) 这可能是由于各种漏洞扫描程序正在进行扫描 这些工具倾向于轰炸目标以寻找漏洞,这解释了高IP到请求比率。
$ G) ~8 H. i, P% | d) v8 W5 w ~ 图5:顶级攻击工具 - 非常通用且广泛使用,因此cURL占据如此重要的位置并不奇怪 但是,深入分析显示,与cURL一起发送的大多数可疑请求实际上是攻击后检查,即被阻止的黑客,然后使用cURL来测试他们是否仍然可以访问该网站。 ( s2 t( s' F. v# \8 ~
cURL紧随其后的是Python - 黑客的首选武器,以及Ruby - 用于编写Metasploit的语言代码攻击示例以下是我们最近一个月跟踪的一些流行攻击:VectorIncidentsDescription。 9 J+ E* W4 q/ h/ t# f2 b
1 and 1=2 union select password from qianbo_admin634,566Trying to query passwords1’A=0125,365ProbingN;O=D and 1=1
# X7 w6 N+ `+ ~9 f3 _ A+ [3 ^ nessus= or 1=1–CONCAT(‘whs(‘,’)SQLi’)76,155Probing by vulnerability scanners:Veracode, Nessus and WhiteHat Security, respectively
) x7 O/ b4 ]. k8 x( B2 C ‘ union select unhex(hex(version())) —848,096Attempting to discover database version;WAITFOR DELAY ’00:00:28′;1,226,955Blind probing — testing for delay in response * ~& F! G* n7 p5 D* ^
表1:SQL注入攻击的示例如何保护您的应用程序免受SQL注入有许多方法可以保护您的应用程序免受SQL注入攻击有些应该在应用程序开发期间使用,其他应该在部署应用程序后使用开发阶段:使用预准备语句 - 一种“模板化”SQL以使其适应SQL注入的方法。
2 Z/ S5 C0 T( s 只有某些输入值可以发送到数据库,因此无法运行模板化语句以外的语句稍后使用不同协议传输的值不像语句模板那样编译因此不能发生SQL注入这里有两个Python代码示例,包含和不包含预准备语句该代码基于MySQL连接器驱动程序(。
% g# e( Q$ k5 V$ } https://dev.mysql.com/doc/connector-python/en/):def add_employee(id: int, email: str):sql = “””INSERT INTO employees (id, email)
+ s8 ~; j1 v+ d1 B* w& o4 J VALUES (%s, %s)”””cursor = connection.cursor(prepared=True)cursor.execute(sql, (id, email))cnx.commit() " ~' O2 f9 g& v/ y0 Z+ M
cursor.close()句的Python代码示例这些值将发送到与SQL文本分开的“执行方法”def add_employee(id: int, email: str):sql = f”””INSERT INTO employees (id, email)。
3 v. M6 f ~' i8 j/ ] VALUES ({id}, {email})””” cursor = connection.cursor()cursor.execute(sql)上面是没有预准备语句的Python代码示例电子邮件可能包含可由数据库引擎执行的SQL注入语句。
6 H+ ~ V4 k! J 除了预处理语句之外,还有其他方法可以在开发和部署应用程序期间阻止SQL注入:消毒 - 摆脱任何可能是恶意的特殊字符,单词或短语例如,删除保留字SELECT或CONTACT,或删除短语WAIT FOR DELAY或DROP TABLE。
# z# ?- H. h/ ~: N7 q9 D 这不是最佳实践,但在某些情况下它可能很有用转义 - 转义在SQL中具有特殊含义的字符例如,用两个单引号替换双引号这是一种简单但易于出错的方式转义和模式检查 - 可以验证数字和布尔参数数据类型,而字符串参数可以限制为模式。
3 R/ f9 G2 K# c0 q9 ] 数据库权限限制 - 将应用程序用户的权限限制为仅需要的权限,因为它可能有助于降低攻击的有效性后开发 - 应用程序安全性:漏洞扫描程序 - 这些可以检测应用程序中的SQL注入漏洞,以后可以由开发团队修复请记住,应用程序会不断变化 - 因此您应定期运行扫描程序。
' M Z, f w7 ~: ^3 T" j8 { Web应用程序防火墙 - WAF还可以检测和阻止对您的应用程序的攻击总结保护产品免受SQL注入是必不可少的,以确保其正常运行并防止数据泄露当您编写访问数据库的代码时,考虑从一开始就防止SQL注入是一种很好的做法。
' x. \$ h$ {: o1 I, p 这是防止这些漏洞发生的最佳时机,而不是以后修补它们开发过程应包括针对SQL注入的测试,然后是外部扫描程序最后,WAF是您产品保护的重要补充它可以保护您免受错过的漏洞,同时让您有时间尽可能地修补它们原文: 9 @" x$ q# X: K1 f, \
https://www.imperva.com/blog/sql-injection-attacks-so-old-but-still-so-relevant-heres-why-charts/本文:http://pub.intelligentx.net/sql-injection-attacks-so-old-still-so-relevant-heres-why-charts # x e3 u! z2 ^0 |8 f( Q" k5 ]2 f
讨论:请加入知识星球或者小红圈【首席架构师圈】 ( B% O2 l" V8 ` O; e2 g
. w( p1 D* m7 q/ m+ Q2 ~
3 q5 |; T6 ?: v9 c) a5 N
0 Y/ Y3 c7 b9 x6 \+ B( l. _! x/ k; h2 G8 S, `$ s3 O
|