【漏洞预警】Laravel框架配置不当导致敏感数据泄露
近日,白帽汇安全研究院发现一个非常流行的PHP框架Laravel,全球用户众多。因配置不当会泄露MySQL,Redis,Elastic,Mongodb,neo4j,postgresql,SQLServer,Oracle,Firebird,sqlite,mail账号密码和APP_KEY等敏感信息。黑客可以利用这些信息进行脱库,或者在服务器植入后门,也可以利用数据库服务器进行跳板入侵内网其他重要服务器。漏洞危害为高危。白帽汇安全研究院提醒使用该框架的用户及时更改配置,并检查是否存在后门。详情如下。
概述
Laravel是一套流行的PHP Web开发框架。简洁、优雅。Laravel的设计思想很先进,非常适合应用各种开发模式,laravel 最大的特点和优秀之处就是集合了php比较新的特性,以及各种各样的设计模式,比如Ioc 容器,依赖注入等。用户使用量非常大。国外使用者比国内要多,国内更青睐ThinkPHP框架。但在中国境内也包括一些大型单位用户。
目前FOFA系统最新数据(一年内数据)显示全球范围内共有 369333个开放Laravel服务。美国使用数量最多,共有145372台,中国第二,共有27534台,德国第三,共有19436台,新加坡第四,共有17070台。
全球范围内分布情况(仅为分布情况,非漏洞影响情况)
中国大陆地区浙江使用用数量最多,共有17188台;北京第二,共有5612台,广东第三,共有1046台,上海第四,共有891台,山东第五,共有820台。
中国大陆范围内网站分布情况(仅为分布情况,非漏洞影响情况)
危害等级
高危
漏洞分析
在laravel框架的.env配置文件中,默认调试功能debug是开启的。当使程序报错时。在前台会返回报错详情、环境变量、服务器配置等敏感信息。比如用服务器不允许的方法向服务器发起一个请求。报错如下图,可以看到应用的绝对路径、session、mysql账号密码、邮箱账号密码、redis密码都暴露在了前端。知道这些密码以后,黑客可以利用mysql写入木马,利用mysql在服务器上进行提权,或者直接脱库。redis默认是以root权限运行,攻击者拿到redis密码后很容易取得redis的root权限,当作跳板入侵其他内网机器。
在laravel的根目录下存在.env文件,该文件存储了debug的配置、mysql账号密码、邮箱账号密码、redis密码等信息。如果访问控制不当会导致.env文件泄露敏感信息,漏洞编号为CVE-2017-16894。公网上面一些服务器可以直接访问该配置文件,建议该文件禁止直接访问。
使用概况
泄露的数据中包括MySQL,Redis,Elastic,Mongodb,neo4j,postgresql,SQLServer,Oracle,Firebird,sqlite,mail账号密码。其中MySQL占很大一部分。
在MySQL数据库中,有阿里云MySQL服务器、亚马逊云MySQL服务器、其他云厂商MySQL服务器,以及的自建的MySQL服务器。
POC
目前FOFA客户端平台已经更新该漏洞的检测POC。
修复建议
1、关闭laravel配置文件中的调试功能,在.env文件中找到APP_DEBUG=true,将true改为false。
2、在根目录下添加.htaccess文件,仅限Apache,可以禁止直接访问127.0.0.1/laravel/.env,内容如下:
RewriteEngine on
RewriteRule ^$ public/ [L]
RewriteRule (.*) public/$1 [L]
白帽汇会持续对该漏洞进行跟进。后续可以持续关注链接https://nosec.org/home/detail/2217.html。
白帽汇从事信息安全,专注于安全大数据、企业威胁情报。
公司产品:FOFA-网络空间安全搜索引擎、FOEYE-网络空间检索系统、NOSEC-安全讯息平台。
为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。
最新评论