您现在的位置是:综合 >>正文
tp5 dbinfo leak漏洞
综合38人已围观
简介ThinkPHP 5.0.x 和 5.1.x 的部分版本里,debug 模式默认开启时,数据库连接异常会直接把完整的 PDO 错误堆栈抛给前端。这个堆栈里藏着 DB_HOST、DB_NAME、DB_U ...
ThinkPHP 5.0.x 和 5.1.x 的漏洞部分版本里,debug 模式默认开启时,漏洞数据库连接异常会直接把完整的漏洞 PDO 错误堆栈抛给前端。这个堆栈里藏着 DB_HOST、漏洞DB_NAME、漏洞DB_USER、漏洞DB_PWD 四个明文变量。漏洞攻击者只需要在 URL 后面拼一个不存在的漏洞表名,或者故意传个畸形参数让 SQL 报错,漏洞响应页面里就会像拆盲盒一样蹦出数据库账号密码。漏洞
我去年帮朋友排查一个站,漏洞对方说后台登录页每次输错密码都会白屏。漏洞打开浏览器开发者工具一看,漏洞Network 面板里那条 500 响应居然带着完整的漏洞 mysql:host=127.0.0.1;dbname=shop 连接串。更离谱的漏洞是密码字段是 root,连加密都没做。那哥们儿当时脸都绿了——这个站已经上线三年,搜索引擎爬虫早就把报错页面缓存了。用 Google 搜 inurl:index.php?s=/home/article 加几个异常参数,还能翻到历史快照里的数据库密码。
触发条件其实挺苛刻。生产环境一般会关掉 app_debug,但很多开发者图省事,直接把 .env 文件里的 APP_DEBUG = true 提交到 Git 仓库。更常见的是运维在 Nginx 配置里把 php_errors 强制开启,导致 ThinkPHP 的异常处理被覆盖。哪怕你用的是 5.1.x 最新版,只要 database.hostname 写成 localhost 而不是 127.0.0.1,某些 PHP 版本下 PDO 会额外返回 socket 路径,照样泄露服务器文件系统结构。
修复方案不复杂,但得注意顺序。第一优先是把 APP_DEBUG 强制设为 false,同时检查 config/database.php 里有没有 'debug' => true 残留。第二,在 app/ExceptionHandle.php 里重写 render() 方法,对 PDOException 做专门处理,只返回通用错误码。第三,给 public/index.php 加一段前置检查:
if (strpos($_SERVER['QUERY_STRING'], 'debug') !== false) { http_response_code(403); exit('Forbidden'); } 这条规则能拦截掉大部分扫描器——它们习惯在参数里塞 debug=1 试探。但别指望它一劳永逸,攻击者可以用 %64ebug 编码绕过。
还有个容易被忽略的坑:ThinkPHP 的日志文件 runtime/log/ 默认权限是 644,如果 PHP-FPM 进程以 www-data 用户运行,日志文件里记录的 SQL 错误同样包含完整连接信息。我见过有站长把 runtime 目录整个打包扔到服务器根目录,结果直接被人用 /runtime/log/202501/25.log 路径下载。加个 Nginx 规则拒绝访问 runtime 目录是最基本的操作:
location ~ ^/runtime/ { deny all; } 最后提醒一句,升级到 ThinkPHP 6.0 并不能免疫这个漏洞——6.0 的异常页虽然默认隐藏了敏感字段,但如果你自定义了异常处理类,又没过滤 getTrace() 返回值,照样会炸。别问我怎么知道的,上个月刚给一个用 6.0 写的 API 接口擦过屁股。那接口把 PDO 异常直接 json_encode 返回,数据库密码就躺在 trace 字段里,连个 Base64 都没做。
Tags:
上一篇:架设web服务器步骤
下一篇:渗透要学
相关文章
回显技巧
综合回显技巧 把用户输入的东西原样返回,听起来像复读机,但真做起来,门道比你想的深。我见过不少新手写echo脚本,第一反应就是`print($_GET['name'])`,然后被XSS漏洞教做人。回显不是 ...
【综合】
阅读更多pbootcms官网进入网站
综合打开pbootcms官网,第一眼看到的不是花哨的动画,也不是满屏的营销文案。就是一个朴素的搜索框,加上几行产品定位说明。这个设计倒是挺符合它的性格——一个靠口碑在PHP开发者圈子里流传的开源CMS系统 ...
【综合】
阅读更多等保测评是什么
综合2019年,某省政务云平台在年度等保测评中被发现了一个致命漏洞——运维人员居然用“admin/123456”登录核心数据库。这个笑话一样的密码,让整个平台拿到了“高风险”的测评结论。整改期限三个月,逾 ...
【综合】
阅读更多