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网关.网关作为流量的,在微服务系统中有着非常作 ...
随机推荐
- 正则验证&模态框
在日常生活中,凡是需要表单验证的都会用到正则验证.下面拿一个简单的带有模态框的正则验证的小demo看一下 <style> /* 遮罩层 */ .ma ...
- vue2.0中实现echarts图片下载-----书写中
由于各个版本浏览器兼容性不一,所以,我们需要一个判断浏览器类型的函数来对不同的浏览器做不同的处理. 获取浏览器版本的函数 // 判断浏览器类型 IEVersion () { let userAgent ...
- 只需两步在Linux系统安装百度网盘--Ubuntu20
Linux Ubuntu系统安装百度网盘 百度网盘已支持Linux系统下载和使用.使用Linux系统下载并安装一个百度网盘是非常简单的,只需要以下两个步骤: 第一步 进入官网下载.deb类型的百度网盘 ...
- JVM调优-1
JVM运行参数 在jvm中有很多的参数可以进行设置,这样可以让jvm在各种环境中都能够高效的运行.绝大部分的参数保持默认即可. 三种参数类型 标准参数 -help -version -X参数(非标准参 ...
- 【Java】==与equals
==与equals 一. == 可以使用在基本数据类型变量和引用数据类型变量中 如果比较的是基本数据类型变量:比较两个变量保存的数据是否相等.(不一定类型要相同) 如果比较的是引用数据类型变量:比较两 ...
- Kubernetes&Docker集群部署
集群环境搭建 搭建kubernetes的集群环境 环境规划 集群类型 kubernetes集群大体上分为两类:一主多从和多主多从. 一主多从:一台Master节点和多台Node节点,搭建简单,但是有单 ...
- STC8H开发(六): SPI驱动ADXL345三轴加速度检测模块
目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...
- [USB波形分析] 全速USB波形数据分析(一)
在之前的文章一次CAN波形分析之旅里,根据示波器采集的波形数据,详细地分析了CAN通信.今天来分析USB数据,还是同样的流程,但是这次使用matplotlib来协助分析. USB基本波形 USB通过一 ...
- 【刷题-LeetCode】208. Implement Trie (Prefix Tree)
Implement Trie (Prefix Tree) Implement a trie with insert, search, and startsWith methods. Example: ...
- 字符串工具类ToStringBuilder常用方法介绍
一.简介与引入 1.ToStringBuilder.HashCodeBuilder.EqualsBuilder.ToStringStyle.ReflectionToStringBuilder.Co ...