向日葵远程代码执行漏洞(CNVD-2022-10270)复现

该漏洞本质就是当主机启动向日葵后,会开启一个http服务,该服务中存在一些未授权访问获取CID的接口,携带该CID去访问/check接口可以执行系统命令
0x01 复现环境信息

向日葵版本:10.5.0.29613、11.0.0.33162

安装程序:SunloginClient_10.5.0.29613_X64.exe、SunloginClient_11.0.0.33162.exe
0x02 复现步骤
2.1 找到向日葵http服务开启的端口
一种方法是通过系统命令找到向日葵相关服务占用的端口,另一种是查看向日葵的日志,此处主要说第二种
右键向日葵托盘图标,选择“日志”选项,即可进入向日葵的日志文件夹
image
找到如图所有的sunlogin_service.xxx格式的日志,在前面几行即可看到日志中打印的服务开启端口,如下图为49671



2.2 获取CID
往/cgi-bin/rpc接口构造如下请求包,可以在未授权下获取verify_string,即CID

2.3 执行命令
往/check接口构造如下请求包,注意需要将上一步骤获取的CID按照如图格式填充到cookie中,且在url中提供cmd参数,如下图所示ping 127.0.0.1,可以看到成功回显

GET /check?cmd=ping%20127.0.0.1


修改url如下执行whoami

GET /check?cmd=ping..%2F..%2F..%2Fwindows%2Fsystem32%2Fwindowspowershell%2Fv1.0%2Fpowershell.exe%20whoami


修改url入下执行ipconfig

ping..%2F..%2F..%2Fwindows%2Fsystem32%2Fwindowspowershell%2Fv1.0%2Fpowershell.exe%20ipconfig

0x03 关于一些执行命令失败的情况和其他说明
3.1check接口并非没有任何防护,直接执行部分敏感命令时是失败的
如下直接执行whoami,会返回commandnotallow


但是如上文所示,通过调用powershell或cmd,则是可以执行这些命令的
3.2执行不合法的命令,会返回error2

3.3获取CID的那个请求,其实也可以是一个GET请求

3.4服务开放端口并非一定是 4W+高位端口 ,此处我用11.0.0.33162 @ 1307复现服务端口为2175

3.5该漏洞的利用特征还算比较明显的,那么应该如何绕过waf检测呢
当前试过进行大小写转换、以及利用/.\混淆,不过都没有执行成功,应该是软件中明确限定了大小写,从一些相关的日志,可以看出,每一个接口疑似都是一个待加载的模块,当我改了大小写之后,找不到这个模块了



后续等我学了逆向再研究下
0x04 参考
Sp4ce 师傅写的向日葵远程命令执行漏洞分析文档

这个审核还没过???