【漏洞预警】Laravel框架配置不当导致敏感数据泄露

liudao  1913天前

2.jpg

近日,白帽汇安全研究院发现一个非常流行的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台。

4.jpg

全球范围内分布情况(仅为分布情况,非漏洞影响情况)

中国大陆地区浙江使用用数量最多,共有17188台;北京第二,共有5612台,广东第三,共有1046台,上海第四,共有891台,山东第五,共有820台。

5.jpg

中国大陆范围内网站分布情况(仅为分布情况,非漏洞影响情况)

危害等级

高危

漏洞分析

在laravel框架的.env配置文件中,默认调试功能debug是开启的。当使程序报错时。在前台会返回报错详情、环境变量、服务器配置等敏感信息。比如用服务器不允许的方法向服务器发起一个请求。报错如下图,可以看到应用的绝对路径、session、mysql账号密码、邮箱账号密码、redis密码都暴露在了前端。知道这些密码以后,黑客可以利用mysql写入木马,利用mysql在服务器上进行提权,或者直接脱库。redis默认是以root权限运行,攻击者拿到redis密码后很容易取得redis的root权限,当作跳板入侵其他内网机器。

6.jpg

7.jpg

8.jpg

在laravel的根目录下存在.env文件,该文件存储了debug的配置、mysql账号密码、邮箱账号密码、redis密码等信息。如果访问控制不当会导致.env文件泄露敏感信息,漏洞编号为CVE-2017-16894。公网上面一些服务器可以直接访问该配置文件,建议该文件禁止直接访问。

9.jpg

使用概况

泄露的数据中包括MySQL,Redis,Elastic,Mongodb,neo4j,postgresql,SQLServer,Oracle,Firebird,sqlite,mail账号密码。其中MySQL占很大一部分。

在MySQL数据库中,有阿里云MySQL服务器、亚马逊云MySQL服务器、其他云厂商MySQL服务器,以及的自建的MySQL服务器。

POC

目前FOFA客户端平台已经更新该漏洞的检测POC。

7.png

修复建议

1、关闭laravel配置文件中的调试功能,在.env文件中找到APP_DEBUG=true,将true改为false。

1.jpg

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-安全讯息平台。

为您提供:网络空间测绘、企业资产收集、企业威胁情报、应急响应服务。

最新评论

laravel  :  这个不算漏洞,php的框架都有debug,为true**是报错跟踪。
1912天前 回复
Django  :  CVE-2019-3498了解下
1912天前 回复
夕阳  :  1.线上**还开debug?2.域名不应该是绑定到public下吗?
1910天前 回复
xxe  :  正常来说是应该这样,但是就是好多人不这么做。
1910天前 回复
昵称
邮箱
提交评论