跟踪3个月捕获新漏洞攻击,交易所最先躺枪APT

云链唐人财经
云链唐人财经 机构得得号

Sep 18, 2018 首家专注于区块链“安全、政策及法律”的媒体

摘要: 漏洞拦截团队称这个攻击模式“很高级,很经典”,既可以看到它运用在攻击区块链交易所,也可以看到它运用在攻击开源B2C独立网店系统。

导语:漏洞拦截团队称这个攻击模式“很高级,很经典”,既可以看到它运用在攻击区块链交易所,也可以看到它运用在攻击开源B2C独立网店系统。

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。

目前的市场也有专门做二次漏洞检测的,但是误报较高,仍需要不断优化。

(作者:云链唐人财经,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 云链唐人财经 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信