记一次挖掘公益SRC通过laravel配置不当进数据库
字数 1146 2025-08-12 11:34:11
Laravel框架配置不当导致敏感数据泄露漏洞分析与利用
漏洞概述
Laravel框架因配置不当会泄露MySQL、Redis、Elastic、Mongodb、neo4j、postgresql、SQLServer、Oracle、Firebird、sqlite等数据库账号密码以及APP_KEY等敏感信息。该漏洞在调试模式(Debug模式)开启时,通过触发错误可以暴露这些敏感数据。
漏洞发现过程
-
初始渗透尝试:
- 通过弱口令进入后台
- 尝试文件上传漏洞,发现白名单限制
- 尝试绕过方法(文件头伪造、解析漏洞等)未果
-
漏洞发现:
- 访问需要登录的URL时未登录,触发报错
- 报错页面泄露了Laravel框架的敏感信息
- 确认存在Laravel框架配置不当漏洞
漏洞检测方法
- 识别目标使用Laravel框架
- 在任意页面(如登录页面)抓包
- 修改HTTP方法(如将GET改为PUT/POST等非常规方法)
- 观察是否触发debug模式并返回敏感信息
漏洞利用步骤
-
触发debug模式:
http://target.com/admin/upload_img/article_cover使用非常规HTTP方法(PUT/DELETE等)访问
-
获取泄露信息:
- 数据库连接信息(MySQL/Redis等)
- APP_KEY等敏感配置
-
数据库连接利用:
- 使用泄露的MySQL账号密码连接数据库
- 检查
secure_file_priv设置:SHOW VARIABLES LIKE 'secure_file_priv'; - 尝试写Webshell:
- 若
secure_file_priv为NULL或特定目录,尝试写入 - 使用日志文件写入方法(需找到合适文件追加)
- 若
-
进一步利用:
- 若3306端口开放且IP可访问,直接连接
- 若连接地址不出网,考虑其他利用方式
文件上传绕过技术(补充)
虽然与Laravel漏洞无关,但原文中提到的文件上传绕过技术值得记录:
-
白名单绕过方法:
- 配合Web容器解析漏洞
- %00截断上传绕过
- 文件头内容检测绕过
-
文件头特征值:
- .jpg:
FF D8 FF E0 - .gif:
47 49 46 38(GIF89a) - .png:
89 50 4E 47 - .html:
68 74 6D 6C 3E 10 - .xml:
3C 3F 78 6D 6C
- .jpg:
-
解析漏洞利用:
- 如Nginx 1.16.1可能存在解析漏洞
- 尝试在文件名后添加
.php使其以PHP解析
漏洞修复建议
- 生产环境务必关闭Debug模式
- 设置
APP_DEBUG=false在.env文件中 - 限制错误信息的显示
- 使用Laravel官方推荐的安全配置
- 定期检查框架配置和敏感信息泄露
总结
该漏洞危害严重,可导致多种数据库凭证泄露。在实际测试中发现大量Laravel框架网站存在此问题。通过泄露的信息可能进一步获取服务器权限,特别是在结合其他漏洞(如文件上传、数据库写权限等)的情况下。