游乐游手机版
首页/AI热点日报/热点详情

Xiuno BBS审计问题10 后台phpinfo暴露服务器环境信息

类型:热点整理2026-07-17
XiunoBBS4 0 4后台admin route index php直接调用phpinfo()函数,泄露服务器绝对路径、PHP版本、数据库连接句柄等敏感信息,引发严重信息泄露风险。同时,后台鉴权仅依赖Cookie且无CSRFToken保护,攻击者可利用CSRF诱导管理员访问触发漏洞。该问题已在XIUNOX重构版本中修复。

问题:后台 phpinfo() 泄露完整服务器环境信息,存在严重安全风险

先说几个关键点:本次安全审计是在 XIUNOX 版本重构过程中发现的,该版本目前已修复此漏洞。之所以单独拿出来剖析,是因为对于后续计划基于 Xiuno BBS 4.0.4 维护版本或开发插件模板的开发者、站长而言,这是一个非常值得警惕的经典漏洞案例,涉及后台权限滥用、CSRF 攻击路径及敏感信息泄露。

Xiuno BBS 审计之问题10:后台 phpinfo() 暴露完整服务器环境信息

漏洞现象

问题出在后台入口文件。具体来说,Xiuno BBS 4.0.4 后台的 admin/route/index.php 中,预留了一个名为 phpinfo 的动作分支,直接调用 phpinfo() 函数,将完整的 PHP 环境信息毫无保留地输出到页面。

你也可能会想:“这个功能位于后台,只有管理员才能访问,应该问题不大吧?” 但实际情况远比想象复杂。关键在于,后台的身份验证机制完全依赖 Cookie,且未引入 CSRF Token 保护(该问题在独立审计文件中也有详细说明)。这意味着攻击者完全可以构造恶意请求,诱使管理员访问 admin-index-phpinfo.htm。一旦管理员在浏览器中打开该页面,phpinfo() 就会完整渲染,泄露大量敏感数据。

更麻烦的是,phpinfo() 的输出内容极为丰富,涵盖:服务器绝对路径、PHP 版本、已加载扩展、$_SERVER$_ENV$_COOKIE,甚至数据库连接句柄等关键信息。这些数据落入攻击者手中,将带来以下威胁:

  • 探测绝对路径,辅助文件包含或路径遍历攻击
  • 获取 PHP 版本及禁用函数列表(disable_functions),为命令执行创造条件
  • 挖掘 document_root、upload_tmp_dir、open_basedir 等关键路径配置

这里特别值得警惕的是,如果 phpinfo 页面被搜索引擎缓存或收录(后台 URL 结构相对简单,容易被猜测),那么即使未认证用户,也可能通过搜索引擎快照获取这些敏感信息,进一步扩大风险面。

代码中虽然尝试通过 unset($_SERVER['conf'])unset($_SERVER['db'])unset($_SERVER['cache']) 擦除部分业务变量,但这基本是杯水车薪——phpinfo 仍然会暴露 $_COOKIE(包含 bbs_admin_token)、$_SERVER['HTTP_COOKIE']、环境变量以及所有 ini 配置,大量敏感数据依然处于裸露状态。

源码证据

证据 1:后台 phpinfo 动作直接调用 phpinfo()
文件:xiunobbs_4.0.4/admin/route/index.php 第 50-57 行

} elseif ($action == 'phpinfo') {
    unset($_SERVER['conf']);
    unset($_SERVER['db']);
    unset($_SERVER['cache']);
    phpinfo();
    exit;
}

第 55 行直接调用 phpinfo(),输出完整的 PHP 信息。而 action 来自 param(1)(第 5 行),即 URL 路径的第二段。访问 admin-index-phpinfo.htm 即可触发。值得注意的是,在 exit 之前,没有任何额外的访问控制或输出过滤。

证据 2:后台鉴权依赖可被 CSRF 绕过的 Cookie
文件:xiunobbs_4.0.4/admin/admin.func.php 第 8-17 行

function admin_token_check() {
    global $longip, $time, $useragent, $conf;
    $useragent_md5 = md5($useragent);
    //$key = md5($longip.$useragent_md5.$conf['auth_key']); // 有些环境是动态 IP
    $key = md5((XN_ADMIN_BIND_IP ? $longip : '').$useragent_md5.xn_key());
    // hook admin_token_check_start.php
    $admin_token = param('bbs_admin_token');
}

后台只校验 bbs_admin_token 这个 Cookie,完全没有 CSRF Token 保护。攻击者可以构造一个 标签,诱导管理员访问,虽然 不会渲染 phpinfo 的 HTML,但通过