Sunlogin RCE漏洞分析和使用
介绍
前两天网上曝出了关于向日葵远控工具(Sunlogin)Windows个人版的RCE漏洞POC。因为利用简单并且网上出现了公开的自动化扫描脚本,所以测试的人很多,也出现了一些真实攻击。漏洞的问题主要是出现在Sunlogin客户端的几个对外开放的接口中,现在我对其中一部分利用进行简要的分析。
未授权认证
分析的向日葵客户端版本为11.0.0.33162,当SunloginCLient.exe在Windows上执行时,会连接远程Oray的服务器,同时也会打开一个大于40000的端口监听外部的连接访问(具体是否从40000往上随即开启端口,这个没有调试,网上是这么说的,我们主要看的是发生利用的代码部分)。
对其中一部分接口,Sunlogin统一对其进行处理。

接着会执行至函数sub_140E21528,分别对不同接口进行不同的处理。在接口/cgi-bin/rpc的Handler处理函数中可以进行未授权认证。

获取action参数值,如果值为verify-haras,即action=verify-haras,那么可以在没有识别码和验证码的情况下认证成功。


成功后返回一个verify_string,作为之后再次访问时Cookie字段中使用的CID值。

RCE
漏洞发生在接口/check处,如下图,当参数cmd的值以ping或者nslookup开头时可以构造命令实现远程命令执行利用。

发送请求时需要在请求头中指定Cookie字段中CID的值为之前/cgi-bin/rpc返回的verify_string值(在测试时我发现该值似乎是不会变化的,也就是说该值的计算没有时间因子参与)。下面是分别通过nslookup和ping拼接的利用请求。
nslookup拼接字符串利用:

ping拼接字符串利用:

请求中的路径问题
windows的路径处理问题,一些小细节:
- 因为最终调用的是
CreateProcess,参数lpApplicationName固定为0,所以可执行文件需要从lpCommandLine参数中,以空格分隔的第一个字符串作为新起进程的启动路径。而windows又不会一级一级得验证目录的有效性,所以只要在ping/nslookup后不加空格并配合多个../和目标可执行文件的路径,从而启动任意目标进程,以空格分隔命令参数; - Cmd.exe路径前面必须为反斜杠
"\\",而不能是斜杠"/",不然无法找到目标文件,powershell.exe则没有这方面限制。究其原因是因为cmd中以斜杠"/"作为命令参数的标记使用,未免路径斜杠和其混淆,便固定反斜杠作为路径分隔符。如果使用了"/cmd.exe",会出现"cmd.exe /cmd.exe"的情况,/c作为参数指定后面的字符串作为命令,那么md命令会创建.exe目录,这就是为什么有时候第二次执行会出现"子目录或文件 .exe 已经存在"的原因;如果使用了/cmd,没有后缀,那么就是"命令语法错误"的回显。 - 使用反斜杠时注意转义字符,保险起见使用双方斜杠。
其他
1. assist接口问题:
我参考的这篇分析中提到了接口/assist,但是没利用成功并发表了疑问。

然后我尝试了一下,确实不行,经过分析后判断下来这个接口恐怕是没法用的。在/assist这个接口会用到API CreateProcessAsUser,同样lpApplicationName为0,由lpCommandLine空格分割后的第一个字符串指定执行文件路径。
至于为什么说这个接口没法利用,是因为虽然可以通过fastcode指定参数值,并作为命令执行。但是并不和/check接口中的处理方式一样是直接执行,/assist接口处理函数是取当前进程(即当前SunloginClient.exe实例)路径,程序执行参数为"--mod=fastcode --fastcode=<fastcode传入的参数>",复制当前进程令牌后作为新进程的令牌启动。整个命令行尖括号才是我们可控的,而由于启动的进程已经固定不变了,为Sunloginclient.exe,后面所有字符串全部作为Sunloginclient.exe的参数,因此无法利用该接口指定其他命令。

像&、|、||、&&这些符号也就是cmd.exe等shell终端中能有命令的效果,其他软件如Sunloginclient.exe不对其进行处理,因此不能用。
2. 其他接口:
比如/fastcode接口,无需传入参数,可以直接获取被控端的识别码;其他还有比如/micro-live/enable、/micro-live/enable、/sunlogin-tools等,不过简单地测试了一下,会出现初始化失败的问题,可能需要登录。
客户端执行插件功能时,大多通过指定命令行新起一个进程实现。

3. 内网外网问题
因为需要直接访问向日葵客户端的ip,那么内网只能够从内网其他机器打进去;而如果在公网,则容易被发现和攻击。
Sunlogin RCE漏洞分析和使用的更多相关文章
- Joomla 3.0.0 - 3.4.6 RCE漏洞分析记录
0x00 前言 今天早上看到了国内几家安全媒体发了Joomla RCE漏洞的预警,漏洞利用的EXP也在Github公开了.我大致看了一眼描述,觉得是个挺有意思的漏洞,因此有了这篇分析的文章,其实这个 ...
- 向日葵远程RCE漏洞分析及漏洞利用脚本编写
0x00 漏洞概述 向日葵是一款免费的,集远程控制电脑.手机.远程桌面连接.远程开机.远程管理.支持内网穿透等功能的一体化远程控制管理软件.如果想要手机远控电脑,或者电脑远控手机可以利用向日葵:如果是 ...
- Struts2-057/CVE-2018-11776两个版本RCE漏洞分析(含EXP)
0x01 前言 2018年8月22日,Apache Strust2发布最新安全公告,Apache Struts2存在远程代码执行的高危漏洞(S2-057/CVE-2018-11776),该漏洞由Sem ...
- Windows RDP的RCE漏洞分析和复现(CVE-2019-0708)
0x00 漏洞描述 Windows系列服务器于2019年5月15号,被爆出高危漏洞,该漏洞影响范围较广如:windows2003.windows2008.windows2008 R2.windows ...
- Spring Core rce漏洞分析(CVE-2022-22965)
漏洞描述: Springmvc框架参数绑定功能,绑定了请求里的参数造成变量注入,攻击者可以实现任意文件写入,漏洞点spring-beans包中. 漏洞编号: CVE-2022-22965 影响范围: ...
- Nuxeo 认证绕过和RCE漏洞分析(CVE-2018-16341)
简介 Nuxeo Platform是一款跨平台开源的企业级内容管理系统(CMS).nuxeo-jsf-ui组件处理facelet模板不当,当访问的facelet模板不存在时,相关的文件名会输出到错误页 ...
- Struts S2-048 RCE漏洞分析
应该是S2-048目前最详细的一篇了.. 漏洞影响 Struts 2.3.x系列中的Showcase应用 使用了struts1 插件,并在使用ActionMessages时将客户端可控的参数拼接传递给 ...
- Joomla3.4.6 RCE漏洞深度分析
笔者<Qftm>原文发布:https://www.freebuf.com/vuls/216512.html *严正声明:本文仅限于技术讨论与分享,严禁用于非法途径 0×00 背景 10月9 ...
- Spring Cloud Gateway actuator组建对外暴露RCE问题漏洞分析
Spring Cloud gateway是什么? Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关.网关作为流量的,在微服务系统中有着非常作 ...
随机推荐
- GDB基础知识
GDB 基础知识 GDB 基础知识 一.简介 支持命令补全功能 GDB 的调用与退出 二.GDB 的基本指令 1. run/r 2. break/b 3. info breakpoints 4. de ...
- 灵雀云入选Gartner 2020中国ICT技术成熟度曲线报告,容器技术处于顶峰
近日,全球权威咨询分析机构Gartner发布了"2020中国ICT技术成熟度曲线(Hype Cycle for ICT in China, 2020 )"报告,灵雀云作为国内容器和 ...
- 使用结构化克隆在 JavaScript 中进行深度复制
在很长一段时间内,您不得不求助于变通方法和库来创建 JavaScript 值的深层副本.现在js提供 「structuredClone()」 一个用于深度复制的内置函数. 浏览器支持: 浅拷贝 在 J ...
- 面试官问,Redis 是单线程还是多线程?我懵了
我们平时看到介绍 Redis 的文章,都会说 Redis 是单线程的.但是我们学习的时候,比如 Redis 的 bgsave 命令,它的作用是在后台异步保存当前数据库的数据到磁盘,那既然是异步了,肯定 ...
- [爱偷懒的程序员系列]-Section 1. “懒”是一切需求的根源
一直认为"懒"推进了科技的发展,因为"懒"而促生了各种各样的需求.科技的进步加速了各种信息的交互频率,站在台面上说是因为业务需要提高效率,成本需要降低,服务需要 ...
- [CISCN2019 华东南赛区]Web11
[CISCN2019 华东南赛区]Web11 写在前面 参考文章:Smarty SSTI 1.{php}{/php} Smarty已经废弃{php}标签,强烈建议不要使用.在Smarty 3.1,{p ...
- C++11之future(二)
如果有两个线程,其中一个线程想要获取另一个线程的返回值,该怎么办? 于是接下来要谈的package_task就是为了解决这个问题而诞生的. // ConsoleApplication5.cpp : 定 ...
- java抽象类概述特点
1 package face_09; 2 /* 3 * 抽象类: 4 * 抽象:笼统,模糊,看不懂!不具体. 5 * 6 * *特点: 7 * 1,方法只有声明没有实现时,该方法就是抽象方法,需要被a ...
- 机器学习-逻辑回归与SVM的联系与区别
(搬运工) 逻辑回归(LR)与SVM的联系与区别 LR 和 SVM 都可以处理分类问题,且一般都用于处理线性二分类问题(在改进的情况下可以处理多分类问题,如LR的Softmax回归用在深度学习的多分类 ...
- IDEA2020.1破解
IDEA2020.1破解 安装 下载idea idea官方下载地址:https://www.jetbrains.com/webstorm/download/other.html 下载破解插件 链接:h ...