今天主要是聊聊文件配置不当导致的一些安全问题。至于博文标题则是纠结了好久才定下来的,请忽略这些细节。
文件配置不当导致的安全问题可能多如牛毛,今天就不一一列出,并且以我的资历也不可能了解他们的细节。这次主要是讲下我之前遇到的两个文件配置不当导致的安全问题。
一、Apache Cordova漏洞分析
漏洞基本信息
漏洞描述:前不久,Apache Cordova爆出挂马漏洞,使用Cordova框架开发的应用访问一个网址时,手机可能会自动执行黑客命令,后台下载恶意软件、获取用户所在位置、获取联系人信息等严重后果。
影响版本:Cordova版本低于3.1
漏洞原理
1、Apache CordovaApache Cordova提供了一组设备相关的API,通过这组API,移动应用能够以JavaScript访问原生的设备功能,如摄像头、麦克风、位置信息等。可以通过web脚本语言调用Cordova API构建应用程序,无需本地代码(如Java或对象C等)。根据官网介绍,Cordova公布的API如图,当应用有相关权限时,黑客可以通过JavaScript获取用户位置、联系人等敏感信息等。
2、漏洞点
使用Cordova框架的应用会配置一个白名单,只有与这个白名单同源的网址才能被应用加载。
在config.xml文件中配置信任的源
程序运行后,会根据配置的源生成一个白名单,该白名单是一个正则表达式,生成正则表达式的代码如下:
当程序加载一个URL时,会判断该URL是否在白名单中,该判断就是一个正则匹配
3、漏洞原因
1)当origin =http://www.test.com时
2)白名单正则表达式为:^https?://(.*\\.)?www.test.com
3)http://www.test.com.test.com的URL会绕过检测
应用访问黑客构造的网页后,会在远程执行恶意代码。
漏洞利用
我们利用该漏洞操作手机通讯录的操作如下。1)设置应用信任源
2)在如下远程构造挂马网页,URL地址如下:
网页主要包含两个功能:创建一个联系人、读取联系人信息。对应代码如下:
A、创建联系人
B、查看联系人
3)访问挂马的网页
4)应用访问链接成功,成功创建联系人,并获取了联系人的手机号。
上面简单分析了下Apache配置漏洞,这个漏洞几个月前就有人爆出来,这里再次列出来只是为了学习学习
二、ElasticSearch远程指令执行漏洞分析
漏洞概述
Elasticsearch 1.2之前版本存在参数配置不当漏洞,elasticsearch.yml配置文件中script.disable_dynamic默认值为false,允许Elasticsearch加载服务器的脚本或客户端查询时附加的脚本。黑客可以在提交的URL中附加恶意脚本来攻击服务器。
漏洞危害
Elasticsearch加载和执行客户端的脚本所使用的权限和Elasticsearch运行的权限一致,若Elasticsearch以root权限运行,那么黑客就可以完全控制服务器。
已经公布的POC可以读写服务器上的任意文件,以操作/etc/hosts和/etc/passwd两个文件为例:
漏洞修复方案
Elasticsearch的1.2已经修复了该漏洞,但是官方还没发布到官网。对于1.2以下版本,可以在配置文件elasticsearch.yml里设置script.disable_dynamic: true来修复漏洞。