3个月的生存持久战,从“一人攻击”进化到“批量自动化持续攻击”,从高端黑客独创到低端黑客跟风,这场关于0day漏洞的黑客攻击,终于到了咽气时候。
攻击交易所,0day漏洞首次被捕获
2018年6月13日,知道创宇404积极防御团队通过知道创宇旗下云防御产品“创宇盾”防御拦截并捕获到一个针对某著名区块链交易所网站的攻击。通过剖析,创造攻击者利用的正是ECShop 2.x版本的0day漏洞攻击。于2018年6月14日,该团队将漏洞提交到平台并收录。

由于首次被创造时攻击的工具是某著名交易所,因此团队高度疑惑攻击者是用 0day 来对区块链交易所发起 APT攻击。
APT(Advanced Persistent Threat)又称高等持续威胁,紧张特点是攻击手段高等,攻击韶光持续久,高危害,而对付APT防御一样平常滞后于攻击发生的韶光。APT攻击的工具紧张是高档教诲、金融机构和政府机构,出于利益或是政治缘故原由,攻击者选择对这些高度中央化的机构发起黑客攻击。
随着区块链技能观点的火爆,交易所应运而生,且以不可遏制的增长之势涌现。截止2018年9月6日,据非小号统计,收录在册的大大小小交易所多达278家。个中只有188家交易所仍在保持逐日的成交额数据表露,生动率刚达及格线,还不乏机器人刷单的虚假交易。
正是由于顶部和普通交易所的差距很大,险些垄断市场。里面存放着绝大部分的市场财富,又还保有中央化的特质,黑客攻击自然频繁发生。这些黑客动手即是“大单”,在攻击交易所被拦截后,转而攻击起独立网店系统ECShop。
ECShop 2.x和3.x版本是紧张的攻击工具。
利用SQL注入漏洞,实现任意代码实行
该漏洞是范例的“二次漏洞”。相对付一次注入漏洞而言,二次注入漏洞更难以被创造,但是它却具有与一次注入攻击漏洞相同的攻击威力。
开拓者对付直接来自用户的数据持有安全意识,常日对其进行转义后存储。但是对付从数据库取出来的数据却过于信赖,提取出的数据未经由滤、转义,放入了 SQL 语句中,自然就导致注入。
简述这次漏洞的发生过程:通过user.php文件中display函数的模板变量可控,从而造成SQL注入漏洞,而后又通过SQL注入漏洞将恶意代码注入到危险函数eval中,从而实现了任意代码实行。
上述过程的关键在于,攻击把函数名部分可控,参数完备可控的代码拼接到SQL语句,布局出payload。正是通过可控代码'str:'拼接后,调用了危险函数$this->_eval才终极触发漏洞。
恶意代码php的布局流程:从下往上布局,$val为abc'];echo phpinfo;//;从select函数进入get_var的条件是第一个字符是$,以是payload变成了$abc'];echo phpinfo;//;而要进入到select,须要被捕获,payload变成了{$abc'];echo phpinfo;//},这里由于payload的是phpinfo,这里会被fetch_str函数的第一个正则匹配到,须要变换一下,以是payload变为{$abc'];echo phpinfo//;//}。
接下来攻击者利用SQL注入漏洞将布局好的代码传给$position_style,结合之前的SQL漏洞的payload布局,以是终极的payload的是成功实行phpinfo。
以上是攻击ECShop 2.x的操作,由于ECShop 3.x多了SQL注入的检测规则,理论上可以抵御攻击。但是根据上面提到的函数中存在可控点,可以注释掉关键代码,从而不会触发WAF检测。
这样一来,无论是ECShop 2.x还是3.x,都会不可避免此类攻击。
0day漏洞的3个月攻击进程
上面提到0day漏洞获是6月份在攻击某著名区块链交易所时首次被捕,当时的攻击由一个日本IP(35.200..)发起,直指交易所。高手段、高强度、永劫光且危害大的漏洞攻击出师未捷,被拦截后仍旧没有放弃攻击。在全体7月沉寂后,8月初攻击者被再次创造利用同一套payload,攻击记录10余次且来自一个菲律宾的IP(180.191..)。
这次攻击连续发起超过10次,经由一个月后明显地演化成“批量自动化攻击”。
第3次攻击发生在2018年8月31日漏洞细节被公开之后。攻击数量开始增加,捕获到的 payload 也变的多种多样,解释漏洞被广泛利用,低真个黑客也开始跟风进场。
ECShop 4.0已修复漏洞,前2版仍没有打补丁
ECShop 4.0版本中已经修复了这个漏洞。之前由于arr['id']可控的拼接布局出了恶意的payload,继而发起攻击。现存版本中的$arr[id]和$arr[num]被逼迫转换成整型,这样就没法利用这个漏洞了。
对付仍利用前2版的用户,可以选择重新下载或直接升级至4.0版本。
二次漏洞的攻防问题
须要先布局好利用代码写入网站保存,在第二次或者多次要求后调用攻击代码触发或者修正配置触发的漏洞叫做二次漏洞。二次漏洞涌如今拼接实行上,不仅限于php,预编译居多的java在遇上拼接时也会遇上二次漏洞。
对付企业来说,办理SQL注入最推举的方法还是预处理+数据绑定。另一个防御的点便是对输入数据做同样地处理,在进入到 SQL 查询前都对其进行过滤、转义。大略一点的办法便是在做代码审查的时候,直接禁止开拓用拼接的办法实行SQL。
目前的市场也有专门做二次漏洞检测的,但是误报较高,仍须要不断优化。
(作者:云链唐人财经,内容来自链得得内容开放平台“得得号”;本文仅代表作者不雅观点,不代表链得得官方态度)