尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Xiuno BBS 审计之问题01:后台所有操作无 CSRF Token 校验
问题后台所有操作无 CSRF Token 校验此文章为XIUNOX版本重构审计时发现问题分享出来方便后续想基于xiuno bbs4.0.4版本制作维护版本或插件模板等需求的开发者和站长参考。现象Xiuno BBS 4.0.4 后台鉴权仅依赖bbs_admin_tokenCookieadmin_token_check()只校验该 Cookie 是否能被xn_decrypt解密且未过期全程不校验任何 CSRF Token既不校验请求体中的 token 字段也不校验Origin/Referer头。这意味着攻击者只需诱导已登录管理员访问恶意页面即可通过跨站请求伪造触发后台任意写操作增删管理员、修改站点配置、上传/安装插件、清空数据库等。后台admin/route/*.php中所有 POST 分支均未调用任何 token 校验函数admin_token_check()是唯一的鉴权入口且其内部不含任何 anti-CSRF 机制。源码证据证据 1后台鉴权函数仅校验 Cookie无 CSRF Token 文件xiunobbs_4.0.4/admin/admin.func.php行 8-45function 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); if(empty($admin_token)) { $_REQUEST[0] index; $_REQUEST[1] login; } else { $s xn_decrypt($admin_token, $key); if(empty($s)) { setcookie(bbs_admin_token, , 0, , , , TRUE); message(-1, lang(admin_token_expiry)); } list($_ip, $_time) explode(\t, $s); // 后台超过 3600 自动退出。 if((XN_ADMIN_BIND_IP $_ip ! $longip || !XN_ADMIN_BIND_IP) $time - $_time 3600) { setcookie(bbs_admin_token, , 0, , , , TRUE); message(-1, lang(admin_token_expiry)); } // 超过半小时重新发新令牌防止过期 if($time - $_time 1800) { admin_token_set(); } } }第 17 行$admin_token param(bbs_admin_token);仅从 Cookie 取 token无任何 POST/GET token 字段校验无Referer/Origin校验。默认XN_ADMIN_BIND_IP为空行 6IP 绑定不生效CSRF 不受 IP 限制。证据 2后台 POST 操作均无 token 校验示例 文件xiunobbs_4.0.4/admin/route/index.php行 21-40} else if($method POST) { // hook admin_index_login_post_start.php $password param(password); if(md5($password.$user[salt]) ! $user[password]) { xn_log(password error. uid:.$user[uid]. - ******.substr($password, -6), admin_login_error); message(password, lang(password_incorrect)); } admin_token_set(); xn_log(login successed. uid:.$user[uid], admin_login); message(0, jump(lang(login_successfully), .)); }登录 POST 不校验 token。其余后台路由admin/route/setting.php、admin/route/user.php、admin/route/forum.php、admin/route/plugin.php等的 POST 分支同样仅依赖admin_token_check()无独立 token 校验。证据 3插件安装/卸载等高危操作无 token 文件xiunobbs_4.0.4/admin/route/plugin.php行 155-201} elseif($action install) { plugin_lock_start(); $dir param_word(2); plugin_check_exists($dir); $name $plugins[$dir][name]; plugin_check_dependency($dir, install); plugin_install($dir); $installfile APP_PATH.plugin/$dir/install.php; if(is_file($installfile)) { include _include($installfile); } plugin_lock_end(); // ... $msg lang(plugin_install_sucessfully, array(name$name)); message(0, jump($msg, http_referer(), 3)); }插件安装会include插件目录下的install.php第 173-175 行属极高危操作但全程无 CSRF Token。攻击者构造img srchttp://victim/admin/plugin-install-恶意插件即可诱导管理员访问时自动安装含恶意install.php的插件实现 RCE。风险等级与结论风险等级高危结论后台所有 POST 操作无 CSRF Token鉴权仅靠 Cookie构成完整的 CSRF 漏洞。结合bbs_admin_tokenCookie 未设SameSite属性见 Cookie 安全审计浏览器默认不会拦截跨站请求携带 CookieCSRF 可直接生效。影响面覆盖后台全部功能增删管理员、改配置、安装/卸载插件含include install.php→ RCE、删帖删版块。修复建议在admin_token_check()中对非 GET 请求强制校验请求体内的 CSRF Token-session 绑定、一次性 token校验Origin/Referer头Cookie 设置SameSiteLax/Strict敏感操作插件安装、配置修改追加二次密码确认。
RELATED

相关推荐

AI-ready Spring Boot架构重构:GPU调度、向量服务与模型热更实战

AI-ready Spring Boot架构重构:GPU调度、向量服务与模型热更实战

1. 这不是又一个“Spring Boot 教程”,而是面向真实AI工程落地的后端架构重构指南2026年,AI能力已不再是前端弹窗里炫酷的“一键生成文案”或后台跑个离线模型脚本——它正深度嵌入核心业务流:信贷审批系统需要毫秒级调用风控大模型做动态授信…

📅 2026/8/24 8:25:32
CISC vs RISC 指令集对比:x86 与 ARM 在 5 大维度下的性能与功耗实测

CISC vs RISC 指令集对比:x86 与 ARM 在 5 大维度下的性能与功耗实测

CISC vs RISC 指令集深度剖析:x86与ARM在5大核心维度的性能与功耗实测1. 指令集架构的历史演进与设计哲学计算机指令集架构的发展历程堪称一部处理器设计的进化史。上世纪70年代,随着集成电路技术的突破,处理器设计逐渐分化为两大流派&#x…

📅 2026/9/6 0:00:05
Visual C++运行库全家桶:一站式高效解决Windows软件运行问题

Visual C++运行库全家桶:一站式高效解决Windows软件运行问题

Visual C运行库全家桶:一站式高效解决Windows软件运行问题 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 还在为"应用程序无法启动"、&qu…

📅 2026/9/5 0:31:11
MORE NEWS

更多资讯

📰

Pandoc fenced_divs 扩展实战:用 `:::` 围栏语法编写可嵌套、带属性的 Div 块

Pandoc fenced_divs 扩展实战:用 ::: 围栏语法编写可嵌套、带属性的 Div 块 【免费下载链接】pandoc Universal markup converter 项目地址: https://gitcode.com/gh_mirrors/pa/pandoc 导读 fenced_divs 是 Pandoc Markdown 中一个非常实用的扩展&#xff…

📰

PyPTO Tensor.topk 算子详解:在 CANN 昇腾平台上获取前 k 个最值及其索引

PyPTO Tensor.topk 算子详解:在 CANN 昇腾平台上获取前 k 个最值及其索引 【免费下载链接】pypto PyPTO(发音: pai p-t-o):Parallel Tensor/Tile Operation编程范式。 项目地址: https://gitcode.com/cann/pypto 本文围绕 …

📰

Rust 打造 OpenObserve:替代 Elasticsearch 和 Prometheus 的可观测性实战

1. 为什么我又把日志和指标系统折腾了一遍如果你运维过中等规模的线上环境,大概率经历过这样的场景:Elasticsearch 集群的 JVM 堆内存三天两头告警,Prometheus 的 TSDB 在高峰期写入延迟飙升,Grafana 面板加载慢得让人想砸键盘。更…

📰

SchoolDB空表填充指南:外键约束、事务提交与数据验证实战

1. 项目概述:一个只有空表的数据库,到底意味着什么做数据库课程设计时拿到“SchoolDB数据库的4张表——无数据”这个题目,第一次接触的人多半会愣一下:建好了库,建好了4张表,但表里一条记录都没有&#xff…

📰

Windows局域网共享访问被拒绝的底层原因与实战修复

1. 这个报错到底在说什么?——从一句提示看透Windows局域网共享的底层逻辑“您没有权限访问\192.168.1.X,请与网络管理员联系请求访问权限”——这行红色弹窗,几乎每个在办公室、家庭小网络或实验室里折腾过文件共享的Windows用户都见过。它不…

📰

使用 Fleet GitOps 部署 Santa 并彻底告别 Sync Server

使用 Fleet GitOps 部署 Santa 并彻底告别 Sync Server 【免费下载链接】fleet Open device management 项目地址: https://gitcode.com/GitHub_Trending/fl/fleet Santa 是面向 macOS 的二进制授权(binary authorization)系统,能够让…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬