Xiuno BBS 审计之问题02:后台用户搜索可能造成严重性能 DoS

简介: 该漏洞存在于XiunoBBS 4.0.4后台用户/主题搜索功能中:用户输入的`$keyword`未经校验直接拼入SQL,仅依赖`addslashes()`转义,存在宽字节SQL注入(GBK下可绕过)、LIKE通配符注入(导致全表扫描DoS)及列名注入风险,属高危漏洞。

问题:后台用户搜索将用户输入作为 LIKE/精确条件拼接进 SQL,依赖 addslashes 防注入

现象

后台 admin/route/user.php 的用户搜索接口将用户从 URL 接收的 $keyword 直接作为查询条件,通过 $cond[$srchtype] = $keyword 写入条件数组后交给 db_find()db_cond_to_sqladd() 拼接 SQL。该流程最终仅靠 addslashes() 进行转义,未做参数预处理。在 GBK/多字节字符集场景下可被宽字节绕过;同时 LIKE 条件未对 %_ 进行转义,存在 LIKE 注入导致全表遍历和性能 DoS。

$srchtype 虽然做了 in_array($srchtype, $allowtype) 白名单校验,但 $keyword 本身未做任何字符校验,且 $srchtype 同样来自 param(2)(默认 htmlspecialchars),最终被用作列名拼接 `"$srchtype"`=...,若白名单逻辑被插件修改可导致列名注入。

源码证据

文件:xiunobbs_4.0.4/admin/route/user.php 行 14-35(接收用户搜索关键词并写入 cond 数组)

$pagesize = 20;$srchtype = param(2);$keyword  = trim(xn_urldecode(param(3)));$page     = param(4, 1);$cond = array();$allowtype = array('uid', 'username', 'email', 'gid', 'create_ip');if($keyword) {    !in_array($srchtype, $allowtype) AND $srchtype = 'uid';    $cond[$srchtype] = $srchtype == 'create_ip' ? ip2long($keyword) : $keyword; }$n = user_count($cond);$userlist = user_find($cond, array('uid'=>-1), $page, $pagesize);$pagination = pagination(url("user-list-$srchtype-".urlencode($keyword).'-{page}'), $n, $page, $pagesize);Php
代码解读复制代码

文件:xiunobbs_4.0.4/xiunophp/db.func.php 行 242-279(条件拼接最终走 addslashes)

function db_cond_to_sqladd($cond) {    $s = '';    if(!empty($cond)) {        $s = ' WHERE ';        foreach($cond as $k=>$v) {            if(!is_array($v)) {                $v = (is_int($v) || is_float($v)) ? $v : "'".addslashes($v)."'";                $s .= "`$k`=$v AND ";            } elseif(isset($v[0])) {                // ...            } else {                foreach($v as $k1=>$v1) {                    if($k1 == 'LIKE') {                        $k1 = ' LIKE ';                        $v1="%$v1%";              // 未对 %、_ 转义                    }                    $v1 = (is_int($v1) || is_float($v1)) ? $v1 : "'".addslashes($v1)."'";                    $s .= "`$k`$k1$v1 AND ";                }            }        }    }    return $s;}Php
代码解读复制代码

文件:xiunobbs_4.0.4/route/thread.php 行 85 + 117(前台关键词搜索同样将 $keyword 传入 LIKE 条件)

$tid = param(1, 0);$page = param(2, 1);$keyword = param(3);// ...if($keyword) {    $thread['subject'] = post_highlight_keyword($thread['subject'], $keyword);    $keywordurl = "-$keyword";}Php
代码解读复制代码

文件:xiunobbs_4.0.4/model/thread.func.php 行 290-292(关键词搜索最终调用 db_find + LIKE 条件)

function thread_find_by_keyword($keyword) {    $threadlist = db_find('thread', array('subject'=>array('LIKE'=>$keyword)), array(), 1, 60);    // ...}Php
代码解读复制代码

文件:xiunobbs_4.0.4/admin/route/thread.php 行 64-66(后台主题扫描关键词同样未校验)

$userip = param('userip');$cond['userip'] = $userip ? ip2long($userip) : 0;$cond['keyword'] = param('keyword');Php
代码解读复制代码

风险等级与结论

高危

危害后果:

  • 在 GBK 等多字节字符集环境下,$keyword 通过 addslashes 后仍可被宽字节绕过,导致后台 SQL 注入。后台注入因管理员权限高,可直接写马提权至服务器 RCE。
  • LIKE 查询未对 %_ 转义,攻击者可提交 % 触发全表 LIKE 扫描,对大表造成严重性能 DoS。
  • 列名 $srchtype 通过 `"$srchtype"` 直接拼接,白名单虽限制了 5 种字段,但任何对白名单的修改(如插件 hook)都会立即转为列名注入点。
  • 攻击面:后台接口需管理员登录,但配合 CSRF 缺陷(参见另案)可在管理员不知情的情况下被外部触发。

修复建议:

  1. 将所有 db_cond_to_sqladd 调用改为 PDO prepare() + bindValue(),参数化绑定彻底消除注入。
  2. LIKE 查询对 $keyword 中的 %_\ 调用 addcslashes($keyword, '%_\\') 转义,避免通配符注入。
  3. 列名 $srchtype 用严格的 switch-case 映射到固定字符串,禁止直接用用户输入做列名拼接。
  4. 强制 utf8mb4 字符集连接,关闭 PDO::ATTR_EMULATE_PREPARES,杜绝宽字节注入温床。
目录
相关文章
|
3天前
|
人工智能 弹性计算 运维
|
1天前
|
缓存 人工智能 安全
GPT-5.6 Terra与GPT-5.5性能实测:成本减半后的跑分对比与快速迁移指南
GPT-5.6 Terra 的定价为每百万 token 输入 2.50/输出 15。GPT-5.5 则是 5/ 30。Terra 的每一项费率,包括 $0.25/M 的缓存读取,都恰好是 GPT-5.5 的一半,因此在任何工作负载组合下,Terra 都固定 便宜 2.0x。以每天 10 万次请求、3K token 提示词计算,大约是 Terra 每天 2,000,GPT−5.5每天 4,000,即每月约 60,000对 120,000。问题在于:OpenAI 没有发布任何针对 Terra 的编码基准。那个著名的 91.9% Terminal-Bench 数字是 Sol 在 Ul
|
24天前
|
Linux 程序员 数据格式
【2026最新】Notepad++下载、安装和使用一篇搞定(附中文版安装包)
Notepad++ 是一款免费开源、轻量高效的 Windows 文本编辑器,支持 C/Python/HTML 等 80+ 语言语法高亮、代码折叠、正则替换、编码转换及插件扩展,专为程序员与文本处理用户打造,完美替代系统记事本。(239字)
|
9天前
|
人工智能 缓存 安全
Claude Code 封号真实原因曝光,这次彻底不装了,直接针对国内开发者的账号下手?
Claude Code 封号潮背后:逆向扒出客户端隐写区域标记,Anthropic 政策收紧叠加 DeepSeek 7 月涨价,国产替代更紧迫。
|
18天前
|
存储 人工智能 监控
QoderWork完全指南:从入门到精通,把“AI实习生”变成你的全能工作搭档
阿里云2026年推出的桌面端AI工作助手QoderWork,不止聊天,更可动手干活:本地运行、安全可控,支持文件整理、数据分析、PPT生成、网页开发等;内置专家套件、多Agent协作与自定义Skills,让AI真正成为你身边的“AI实习生”。
|
15天前
|
人工智能 JSON 自然语言处理
让教学更智慧:用阿里云百炼工作流,自动生成中小学教材内容#小有可为#有温度的AI
通过可视化工作流编排,将大模型推理能力转化为标准化的教学内容生成引擎。教师只需输入教材标题和适用学段,即可自动获得结构完整、符合课程标准的章节内容,大幅降低备课门槛,助力教育资源均衡化。
502 127
|
8天前
|
人工智能 编解码 物联网
2026 最新Stable Diffusion 本地部署教程 下载安装使用详细图解(含官网安装包)
Stable Diffusion(SD)是2022年发布的开源文生图模型,由Stability AI等联合开发。支持文生图、图生图、局部重绘等,依托VAE降低算力需求,可在消费级显卡运行。本文提供秋葉aaaki制作的Windows整合包(含图形界面与插件),开箱即用,零配置启动。
|
10天前
|
人工智能 安全 程序员
终于,Claude Code 封号的原因被曝光了!竟然针对中国用户,植入隐形代码?!
通俗易懂地揭秘 Claude Code 封号的手段,分享一些自己对 AI 编程困境的思考,Codex、Cursor、DeepSeek、智谱 GLM、甚至是豆包,都有所行动了
510 1
|
18天前
|
人工智能 弹性计算 API
什么是 AlibabaCloud Agent Toolkit
Alibaba Cloud Agent Toolkit 是面向AI Agent的阿里云智能工具套件,集成OpenAPI、Terraform、CLI与文档能力,提供MCP插件、场景化Skills及执行审计机制,助AI准确查API、生成代码、规划架构、校验部署,实现安全、可靠、可追溯的云上智能运维。
450 2