Skip to content

PeterCang/WebStack-Secure

Repository files navigation

WebStack — WordPress 导航主题(安全加固版)

基于 owen0o0/WebStack 的 WordPress 导航主题,在原版基础上修复了全部已知高危安全漏洞。

与原版的区别

经过两轮安全审计,共发现并修复 13 个安全漏洞(4 个严重/高危文件上传或 RCE 级别、6 个高危、3 个中危):

第一轮修复(原版漏洞)

编号 严重程度 文件 漏洞类型 状态
VULN-01 🔴 严重 inc/ajax.php 未授权任意文件上传(可 RCE) ✅ 已修复
VULN-02 🔴 严重 inc/img-upload.php 遗留上传脚本可直接访问 ✅ 已修复(文件已删除)
VULN-03 🟠 高危 inc/ajax.php 未授权任意附件删除 ✅ 已修复
VULN-04 🟠 高危 go.php 开放重定向 + HTML 注入 ✅ 已修复
VULN-05 🟡 中危 search-tool.php 混淆 eval() JavaScript ✅ 已修复

第二轮修复(深度审计发现)

编号 严重程度 文件 漏洞类型 状态
NEW-01 🟠 高危 inc/ajax.php 投稿接口缺少 CSRF nonce 验证 ✅ 已修复
NEW-02 🟠 高危 inc/contribute-ajax.php 遗留投稿脚本可直接访问 ✅ 已修复(文件已删除)
NEW-03 🟠 高危 templates/site-card.php 存储型 XSS(post meta 未转义) ✅ 已修复
NEW-04 🟠 高危 single-sites.php 存储型 XSS(post meta 未转义) ✅ 已修复
NEW-06 🟡 中危 template-contribute.php 反射型 XSS(REQUEST_URI 未转义) ✅ 已修复
NEW-07 🟡 中危 inc/frame/functions/helpers.php 备份导入 unserialize() PHP 对象注入 ✅ 已修复
NEW-08 🟡 中危 inc/post-type.php 分类排序保存缺少 nonce 验证(CSRF) ✅ 已修复

详细漏洞说明见 SECURITY-AUDIT.md,修复方案见 SECURITY-FIX-SUMMARY.md

主要修复内容

VULN-01 / VULN-03 — inc/ajax.php 文件上传与附件删除

  • 删除 wp_ajax_nopriv_* 注册,上传/删除功能仅限已登录用户
  • 添加 check_ajax_referer() nonce 验证,防止 CSRF
  • 扩展名白名单从"定义但不用"改为实际执行 in_array() 校验
  • 服务端用 PHP finfo 检测文件真实 MIME 类型,不信任客户端 Content-Type
  • wp_handle_upload() 替代裸 rename(),经过 WordPress 内置安全过滤
  • 附件删除增加所有权校验,用户只能删除自己上传的图片

VULN-02 / NEW-02 — 遗留直接访问脚本

  • inc/img-upload.phpinc/contribute-ajax.php 均已从主题目录彻底删除

VULN-04 — go.php

  • filter_var(..., FILTER_VALIDATE_URL) 验证解码后的 URL 合法性
  • parse_url() 限制 scheme 只允许 http/https,阻断 javascript: 等危险协议
  • 用 WordPress esc_url() 对输出进行安全转义

VULN-05 — search-tool.php

  • 将 JS Packer 混淆代码替换为功能等价的明文可读 JavaScript

NEW-01 — inc/ajax.php 投稿接口

  • 添加 check_ajax_referer('contribute_nonce', 'nonce') 验证
  • inc/register.php 中通过 wp_localize_script() 将 nonce 输出到前端
  • template-contribute.php 中 AJAX 请求携带 nonce 字段

NEW-03 / NEW-04 — templates/site-card.phpsingle-sites.php 存储型 XSS

  • 所有 post meta 输出(_sites_sescribe_thumbnail_wechat_qr_sites_link)统一加 esc_html()esc_attr()esc_url() 转义
  • onerror 属性中移除 javascript: 前缀
  • 分类名称 $nameesc_html() 转义

NEW-06 — template-contribute.php

  • $_SERVER['REQUEST_URI'] 改为 esc_url() 输出,防止反射型 XSS

NEW-07 — inc/frame/functions/helpers.php

  • 备份导入/导出将 serialize()/unserialize() 替换为 json_encode()/json_decode(),消除 PHP 对象注入风险

NEW-08 — inc/post-type.php

  • save_term_order() 添加 wp_verify_nonce() 校验,防止 CSRF
  • 排序值改用 intval() 处理,防止非数字值写入

安装方法

  1. 下载本仓库 ZIP 或 git clone
  2. 将主题文件夹上传至 WordPress 的 wp-content/themes/ 目录
  3. 在 WordPress 后台「外观 → 主题」中启用 WebStack
  4. 按原版文档完成导航数据导入和配置

服务器层面的额外加固(强烈建议)

在 Nginx 中禁止 uploads 目录执行 PHP,作为纵深防御:

location ~* /wp-content/uploads/.*\.php$ {
    deny all;
    return 403;
}

Apache .htaccess(放置于 wp-content/uploads/.htaccess):

<FilesMatch "\.php$">
    Require all denied
</FilesMatch>

原版主题

License

遵循原版主题授权协议。安全修复部分以相同协议开源。

About

WebStack WordPress 导航主题安全加固版 — 修复原版全部高危漏洞(任意文件上传 RCE、未授权附件删除、开放重定向等)

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors