Xiuno BBS 审计之问题12:HTTPS 请求关闭 SSL 证书校验,存在中间人攻击风险

简介: Xiuno BBS 4.0.4 的 `https_post()` 函数禁用SSL证书校验(`CURLOPT_SSL_VERIFYPEER=0`),仅验证主机名,导致HTTPS通信易遭中间人攻击,插件下载、远程图片抓取等场景可被劫持并执行RCE。XIUNOX已修复,供4.0.4维护者参考。(239字)

问题:HTTPS 请求关闭 SSL 证书校验,存在中间人攻击风险
此文章为XIUNOX版本重构审计时发现问题,XIUNOX版本已优化修复此问题。分享出来方便后续想基于xiuno bbs4.0.4版本制作维护版本或插件模板等需求的开发者和站长参考。

现象
Xiuno BBS 4.0.4 的 https_post() 函数在发起 HTTPS 请求时(用于插件市场下载、远程附件抓取、SMTP 邮件等场景),将 CURLOPT_SSL_VERIFYPEER 设为 0、CURLOPT_SSL_VERIFYHOST 设为 2(仅校验主机名不校验证书链)。这意味着攻击者只需在客户端与服务端之间插入自签名证书即可解密、篡改全部 HTTPS 流量,包括插件下载内容(落盘后会被 include 执行,直接 RCE)。

源码证据
文件:xiunobbs_4.0.4/xiunophp/misc.func.php 行 1317-1335(https_post 函数中的 curl 选项)

$ch = curl_init();
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HEADER, 2);
curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-type: application/x-www-form-urlencoded', 'x-requested-with: XMLHttpRequest'));
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_USERAGENT, _SERVER('HTTP_USER_AGENT'));
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 关闭对端证书校验
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2); // 仅校验主机名,不校验证书链
同一函数后续还会跟随 301/302 跳转(行 1340-1346),攻击者通过 MITM 返回 302 即可让 curl 跳转到攻击者控制的任意地址继续下载,最终落盘内容(如插件 zip、远程图片)被解压并 include。

调用链佐证:

admin/route/plugin.php 的插件在线下载调用 http_get/https_get → 落盘解压 → include install.php(已记录于 01_critical_ssrf_plugin_download.md)
tool/save_remote_image.php 抓取远程图片也走同一函数
风险等级与结论
高危

危害后果:

中间人攻击者可篡改插件下载包,植入后门代码,落盘后由 include install.php 触发 RCE
远程图片抓取可被替换为恶意内容,配合文件上传缺陷写入 webshell
SMTP over HTTPS 的认证凭据可被窃取
官方源 http://plugin.xiuno.com/ 本身已是 HTTP(见 04_plugin_official_source_dead_market_paralyzed.md),即使 SSL 校验开启也无法保护,双重缺陷叠加
修复建议:

将 CURLOPT_SSL_VERIFYPEER 设为 true(1)、CURLOPT_SSL_VERIFYHOST 设为 2
维护 CA 证书包路径(CURLOPT_CAINFO 指向 cacert.pem)
官方源切换到 HTTPS 且证书有效
对下载的 zip 包做 GPG/签名校验后再解压执行

目录
相关文章
|
26天前
|
SQL 自然语言处理 监控
Loop Engineering:从 Prompt Engineering 到迭代式智能体工程
Loop Engineering 是2023年起在Agent实践中沉淀的工程方法论,核心是将大模型从“单次问答机”升级为“持续决策循环”(Observe→Think→Act),通过结构化多轮交互提升任务整体成功率,而非仅优化单次prompt质量。
224 1
|
26天前
|
人工智能 JSON 监控
GEO技术原理与实践:从结构化数据到AI引用率的工程化方案
本文深度解析GEO(生成式引擎优化)技术原理与落地实践,涵盖结构化数据标记(FAQ/HowTo/Article Schema)、语义相关性优化(向量检索、同义覆盖、三层内容结构)、可信度工程(E-E-A-T评分、Author/Citation Schema)及效果监测体系,助力内容被AI搜索高频引用。(239字)
|
25天前
|
机器学习/深度学习 API Python
用 Scikit-LLM 和 Groq 搭建情感分析 pipeline
本文介绍如何用Scikit-LLM集成Groq的Llama 3.1模型,构建零样本情感分析Pipeline:基于IMDB数据集,通过文本清洗、零样本分类与scikit-learn标准接口,实现高效、易用的LLM驱动文本分类,兼顾简洁性与实用性。
104 2
用 Scikit-LLM 和 Groq 搭建情感分析 pipeline
|
25天前
|
人工智能 JSON API
Agentforce APIs 和 SDKs 开发指南
Agentforce 完整 API 和 SDK 生态指南。涵盖构建工具(Agent Script/DX/Python SDK)、测试工具(Testing Center/DX/Testing API)、对话工具(Agent API/Custom Connections/Mobile SDK/Enhanced Chat),以及 Agent API 深度实战:从创建 External Client App、获取 Token 到启动会话、发送同步/流式消息、处理 Citations、传递 Agent 变量、故障排查全流程。
123 1
|
26天前
|
监控 中间件 测试技术
API 版本管理三大核心实践:兼容旧版、平滑升级与灰度切流
本文聚焦微服务下API版本管理,围绕兼容旧版、平滑升级、灰度切流三大核心,结合Python(FastAPI)实战,详解URL/Header版本策略、向下兼容原则、适配层实现、废弃通知装饰器及灰度中间件,提供可落地的最佳实践。(239字)
169 3
|
26天前
|
人工智能 缓存 安全
AI Agent 凭证治理实践:从长期 API Key 到临时授权
AI Agent 不再只是生成文本,它会读取数据、调用工具、触发流程。本文从工程视角讨论为什么不应把长期 API Key 直接交给 Agent,并给出临时凭证、策略绑定、运行时拦截和审计归因的治理思路。
177 2
|
25天前
|
数据采集 传感器 人工智能
生活垃圾目标检测数据集:5类别、6,000张图像 | 目标检测
本数据集含6000张真实场景图像,涵盖玻璃、金属、纸张、塑料及“其他垃圾”5类,YOLO格式标注,适配YOLOv5/v8/v11等模型,专为智能垃圾分类研发打造,助力AI赋能城市环保治理。(239字)
261 2
|
26天前
|
安全 PHP 数据安全/隐私保护
Xiuno BBS 审计之问题15:PHP 8下SMTP 的功能不可用
本文揭示Xiuno BBS 4.0.4中PHPMailer兼容类因使用已移除的`each()`函数,在PHP 8.0+下触发Fatal Error,导致邮件功能全面失效。文中定位3处问题代码,并提供`foreach`替换方案及升级建议,供开发者快速修复兼容性问题。(239字)
123 2
|
25天前
|
JavaScript 前端开发 Java
基于springboot+VUE开发的超级博客系统源码
这是一套基于 Vue 3 + TypeScript + Vite 5 + Element Plus(前端)与 Spring Boot 2.7 + MyBatis-Plus + MySQL + JWT(后端)构建的前后端分离博客系统,支持文章管理、评论互动、权限控制及响应式后台,开箱即用。
121 2
|
26天前
|
缓存 人工智能 自然语言处理
成本直降50%!GPT-5.6 Terra与GPT-5.5跑分、延迟、稳定性深度实测
随着大模型技术持续迭代更新,高效能、低成本成为企业开发、个人项目落地的核心诉求。OpenAI推出的GPT-5.6系列模型,针对性优化了前代模型的成本高、资源消耗大、推理延迟波动等痛点,其中**GPT-5.6 Terra**作为中端均衡主力模型,主打平替GPT-5.5、成本减半的核心优势,一经推出便成为各类AI应用、智能问答、代码开发、文本处理场景的首选模型。
206 1