记一次小程序cms安全事件应急响应
字数 2187 2025-08-09 09:46:33

小程序CMS安全事件应急响应与漏洞分析教学文档

1. 事件概述

事件时间:2021年11月16日发现
受影响系统:基于ThinkPHP 5.0.10框架的小程序管理系统(xcx.test.cn)
攻击后果

  • index.php被修改,在head内添加了非法meta标签和修改title标签
  • 导致搜索引擎爬取不良内容,影响搜索结果
  • 确认多个Webshell被植入

2. 应急响应步骤

2.1 立即处置措施

  • 暂停服务:关闭Apache与MySQL服务
  • 通知用户系统维护

2.2 现场环境保存

  1. 备份站点和数据库
  2. 使用腾讯云COSFS插件转储大容量备份文件
  3. 下载备份到本地分析

2.3 日志提取

  • 提取路径:/www/wwwlogs/xcx.test.cn/
  • 关键日志文件:
    • xcx.test.cn-access_log
    • xcx.test.cn-error_log

2.4 文件系统分析

使用find命令检索被修改文件:

find . -mtime -300 -name "*.php"

发现三个被修改/添加的PHP文件:

  1. index.php(首页被篡改)
  2. /public/plugin/PHPExcel/PHPExcel/CalcEngine/index.php(Webshell)
  3. /public/webuploader/server/preview/dd887179e09b2326595305d8dd475763.php(初始Webshell)

3. Webshell分析

3.1 Webshell 1: CalcEngine/index.php

功能分析

  1. s函数:对$dapeng字符串进行rot13解码
  2. m函数与get1_str函数:eval执行PHP代码
  3. 组合变量\(dp和\)dapeng1成新的系统函数
  4. 将rot13解码的字符串从十六进制转换为可执行PHP代码

恶意行为

  • 备份网站首页为index.bk.html
  • 修改index.php权限为0666(所有用户可读写)
  • 便于后续篡改首页内容

3.2 Webshell 2: dd887179e09b2326595305d8dd475763.php

特征

  • PHP远程文件包含+eval执行
  • 位于上传目录/public/webuploader/server/preview/
  • 文件名是文件内容的MD5值

关联分析

  • 黑客可能利用webuploader下的上传漏洞上传此文件
  • 相关上传文件可能包括:
    • fileupload.php
    • fileupload2.php
    • preview.php

4. 攻击溯源分析

4.1 日志分析关键点

  1. 发现preview.php被重命名为presiew.php(混淆手段)
  2. 筛选200状态码的preview.php访问记录:
    • 浙江省金华市IP(疑似真实攻击源)
    • 腾讯云IP
  3. 异常User-Agent特征:
    • "Mac OS X 10_15_7":长期扫描行为(2021.6.21-2021.11.16)
    • "Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/2X.0":与Webshell修改时间完全重合

4.2 攻击时间线

  1. 11月1日:首次渗透,上传dd887179e09b2326595305d8dd475763.php
  2. 11月15日23:16分:通过Webshell修改public/index.php

4.3 发现的后门文件

  1. 111.php
  2. banner3.php(经典大马)
  3. picture3_6.php(内容与preview.php一致)
  4. config.php(通过$_REQUEST[admin]传参到eval函数实现命令执行)

5. 漏洞分析:preview.php

5.1 关键漏洞

  1. 权限校验缺失

    • 文件首行应有session管理员校验,但实际未实现
    • 导致越权漏洞:知道路径即可上传文件
  2. 文件后缀无限制

    // 无任何过滤,可直接上传PHP文件
    $type = $_POST['type']; // 文件后缀
    $base64 = $_POST['file']; // 文件内容
    
  3. 文件内容无校验

    • 上传文件名仅为文件内容的MD5值
    • 可直接写入PHP代码如<?php phpinfo();?>

5.2 攻击复现

攻击payload

data:image/php;base64,PD9waHAgcGhwaW5mbygpOz8+

利用方式

  1. 直接访问preview.php路径
  2. 通过POST上传任意PHP文件
  3. 文件被保存为MD5值命名的.php文件

6. 修复建议

6.1 代码层面

  1. 对preview.php增加:

    • Session管理员权限校验
    • 严格的文件后缀白名单过滤
    • 文件内容安全检查
  2. 审计所有上传接口:

    • fileupload.php
    • fileupload2.php
    • 其他可能的上传点

6.2 系统配置

  1. 目录权限控制:

    • 禁止/preview/和/upload/目录执行PHP
    • 设置适当的文件权限(避免0666)
  2. 访问控制:

    • 禁止非中国大陆IP访问管理功能
    • 设置WAF规则拦截异常User-Agent

6.3 监测与响应

  1. 部署文件完整性监控
  2. 建立日志分析机制,检测异常访问模式
  3. 定期安全审计和渗透测试

7. 总结

本次事件源于文件上传功能的多重安全缺陷:

  1. 权限校验缺失导致未授权访问
  2. 文件类型检查不严格允许上传PHP
  3. 上传目录可执行脚本
  4. 缺乏输入验证和过滤

通过完整的日志分析和文件系统检查,成功追踪到攻击路径和攻击者使用的技术手段。修复方案应从代码安全和系统配置两方面入手,建立多层防御体系。

小程序CMS安全事件应急响应与漏洞分析教学文档 1. 事件概述 事件时间 :2021年11月16日发现 受影响系统 :基于ThinkPHP 5.0.10框架的小程序管理系统(xcx.test.cn) 攻击后果 : index.php被修改,在head内添加了非法meta标签和修改title标签 导致搜索引擎爬取不良内容,影响搜索结果 确认多个Webshell被植入 2. 应急响应步骤 2.1 立即处置措施 暂停服务:关闭Apache与MySQL服务 通知用户系统维护 2.2 现场环境保存 备份站点和数据库 使用腾讯云COSFS插件转储大容量备份文件 下载备份到本地分析 2.3 日志提取 提取路径: /www/wwwlogs/xcx.test.cn/ 关键日志文件: xcx.test.cn-access_ log xcx.test.cn-error_ log 2.4 文件系统分析 使用find命令检索被修改文件: 发现三个被修改/添加的PHP文件: index.php(首页被篡改) /public/plugin/PHPExcel/PHPExcel/CalcEngine/index.php(Webshell) /public/webuploader/server/preview/dd887179e09b2326595305d8dd475763.php(初始Webshell) 3. Webshell分析 3.1 Webshell 1: CalcEngine/index.php 功能分析 : s函数:对$dapeng字符串进行rot13解码 m函数与get1_ str函数:eval执行PHP代码 组合变量$dp和$dapeng1成新的系统函数 将rot13解码的字符串从十六进制转换为可执行PHP代码 恶意行为 : 备份网站首页为index.bk.html 修改index.php权限为0666(所有用户可读写) 便于后续篡改首页内容 3.2 Webshell 2: dd887179e09b2326595305d8dd475763.php 特征 : PHP远程文件包含+eval执行 位于上传目录/public/webuploader/server/preview/ 文件名是文件内容的MD5值 关联分析 : 黑客可能利用webuploader下的上传漏洞上传此文件 相关上传文件可能包括: fileupload.php fileupload2.php preview.php 4. 攻击溯源分析 4.1 日志分析关键点 发现preview.php被重命名为presiew.php(混淆手段) 筛选200状态码的preview.php访问记录: 浙江省金华市IP(疑似真实攻击源) 腾讯云IP 异常User-Agent特征: "Mac OS X 10_ 15_ 7":长期扫描行为(2021.6.21-2021.11.16) "Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/2X.0":与Webshell修改时间完全重合 4.2 攻击时间线 11月1日:首次渗透,上传dd887179e09b2326595305d8dd475763.php 11月15日23:16分:通过Webshell修改public/index.php 4.3 发现的后门文件 111.php banner3.php(经典大马) picture3_ 6.php(内容与preview.php一致) config.php(通过$_ REQUEST[ admin ]传参到eval函数实现命令执行) 5. 漏洞分析:preview.php 5.1 关键漏洞 权限校验缺失 : 文件首行应有session管理员校验,但实际未实现 导致越权漏洞:知道路径即可上传文件 文件后缀无限制 : 文件内容无校验 : 上传文件名仅为文件内容的MD5值 可直接写入PHP代码如 <?php phpinfo();?> 5.2 攻击复现 攻击payload : 利用方式 : 直接访问preview.php路径 通过POST上传任意PHP文件 文件被保存为MD5值命名的.php文件 6. 修复建议 6.1 代码层面 对preview.php增加: Session管理员权限校验 严格的文件后缀白名单过滤 文件内容安全检查 审计所有上传接口: fileupload.php fileupload2.php 其他可能的上传点 6.2 系统配置 目录权限控制: 禁止/preview/和/upload/目录执行PHP 设置适当的文件权限(避免0666) 访问控制: 禁止非中国大陆IP访问管理功能 设置WAF规则拦截异常User-Agent 6.3 监测与响应 部署文件完整性监控 建立日志分析机制,检测异常访问模式 定期安全审计和渗透测试 7. 总结 本次事件源于文件上传功能的多重安全缺陷: 权限校验缺失导致未授权访问 文件类型检查不严格允许上传PHP 上传目录可执行脚本 缺乏输入验证和过滤 通过完整的日志分析和文件系统检查,成功追踪到攻击路径和攻击者使用的技术手段。修复方案应从代码安全和系统配置两方面入手,建立多层防御体系。