如果你读过这篇文章,并且你是一个手机软件开发者,你很可能会运行一些本地服务。Redis,Memcached,Elasticsearch都是很多开发者常用的软件项目。但你可能不知道的是,这种本地服务可以根据你访问过的所有网站查看,也就是给这些想要窃取你本地数据信息的坏人指明了一条路。
实际如何 *** 作?
尽管也没有采用一切新的方式,可是还从沒有人像图片我将要展现的那样把进攻方式那样融合起來的。我融合了二种不一样的拒绝服务攻击,分别是“跨协议脚本制作”和“DNSRebinding(DNS重新关联)”。
关于Redis,Memcached和Elasticsearch
第一种常用的技术历史悠久,被称为“跨协议脚本”。2001年发表的一篇毕业论文详细解释了这种攻击方式,主要使用了Redis和Memcached都有的一种协议,忽略所有无效命令。这意味着如果一个计算机浏览器向localhost推送如下HTTP请求:6379(Redis通常运行的详细地址),Redis当然会执行SET指令。
POST/HTTP/1.1
主机:本地主机:6379
设置abc123
放弃
我们可以按如下所示推送请求:
<formenctype="text/plain"method="POST"action="http://localhost:6379"><formfieldname="abc">
SETabc123
QUIT
</formfield>
<inputtype="submit"value="Submit"/>
</form>
Elasticsearch的协议是完全基于HTTP的,你可以和它交流,不需要任何技巧。
虽然我们可以执行所有的指令,但我们实际上无法获得结果。这是由于计算机浏览器的同源策略,该策略保证不能从来自其他域的请求中读取数据。这时候大家的第二招就用上了!
DNS重新绑定
为了更好的绕过原有的维护对策,我们可以应用一种叫做DNS重新绑定的技术。DNS重新绑定可以根据TTL很低的公共域获得任意网络服务器的访问限制。一旦计算机浏览器连接到该网站,该网站会立即将DNS记录更改为不同的IP地址(如120.0.0.1)。这会偏向网站运行网络攻击代码的详细地址,一个个人IP地址。以后你可以利用这个网站窃取网络服务器上的所有数据信息,但只对授权的手机客户端合理。
PoC我把这个攻击的基本原理放在extractdata.club这个网站会连接Redis,Memcached,Elasticsearch运行在localhost的默认端口号上。
一分钟后,连接应显示如下图所示的信息:
虽然我的PoC只获得每个网络服务器的版本信息,但不难想象创建一些scraper。
该软件可以抓取所有数据库查询和抓取所有数据信息。你可以点击这里获取代码。
解决办法
可悲的是,没有办法从数据库查询的结构来处理这个问题。你可以为你的端口设置一个登录密码,但是如果网络服务器默认有系统漏洞,还是会有很多客户的数据信息被盗。对于Redis
我能想到的Memcached的唯一办法就是添加Host:作为QUIT的同义词,这样如果被识别为HTTP请求,连接就会立即停止。
另一个可以改进的地方是计算机浏览器。电脑浏览器经销商可以应用“DNS牵制”,然后自动忽略加载网站地址后的DNS更改。
或者电脑浏览器经销商可以将Redis和Memcached端口号添加到他们的端口号信用黑名单中,黑名单中已经包含了SMTP、IRC等一些常用协议。这不是一劳永逸的结构性解决方案,新的和新兴的服务项目仍然非常容易受到攻击。
深入讨论
对于某些人来说,在自己开发设计数据库的查询中,数据信息被窃取可能不是什么大事,但是读写的管理权限很可能会造成远程控制编码的实施。例如,网络攻击很可能会掩盖一些看起来像Ruby或Python的项目,以解决自己有效载荷上的数据信息,但这实际上会对开发者的电子计算机产生不利影响。
总结
大家想证明的是,为什么网络信息安全不容易保证。这种针对几个软件项目的攻击,不仅让他们以适当的方式和手段获得充分的迹象,还强调了他们之间的交流导致了系统漏洞的出现。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)