2023年6月23日发(作者:)
SunloginRCE漏洞分析和使⽤介绍 前两天⽹上曝出了关于向⽇葵远控⼯具(Sunlogin)Windows个⼈版的RCE漏洞POC。因为利⽤简单并且⽹上出现了公开的⾃动化扫描脚本,所以测试的⼈很多,也出现了⼀些真实攻击。漏洞的问题主要是出现在Sunlogin客户端的⼏个对外开放的接⼝中,现在我对其中⼀部分利⽤进⾏简要的分析。未授权认证 分析的向⽇葵客户端版本为11.0.0.33162,当在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的路径处理问题,⼀些⼩细节:1. 因为最终调⽤的是CreateProcess,参数lpApplicationName固定为0,所以可执⾏⽂件需要从lpCommandLine参数中,以空格分隔的第⼀个字符串作为新起进程的启动路径。⽽windows⼜不会⼀级⼀级得验证⽬录的有效性,所以只要在ping/nslookup后不加空格并配合多个../和⽬标可执⾏⽂件的路径,从⽽启动任意⽬标进程,以空格分隔命令参数;2. 路径前⾯必须为反斜杠"",⽽不能是斜杠"/",不然⽆法找到⽬标⽂件,则没有这⽅⾯限制。究其原因是因为cmd中以斜杠"/"作为命令参数的标记使⽤,未免路径斜杠和其混淆,便固定反斜杠作为路径分隔符。如果使⽤了"/",会出现" /"的情况,/c作为参数指定后⾯的字符串作为命令,那么md命令会创建.exe⽬录,这就是为什么有时候第⼆次执⾏会出现"⼦⽬录或⽂件 .exe 已经存在"的原因;如果使⽤了/cmd,没有后缀,那么就是"命令语法错误"的回显。3. 使⽤反斜杠时注意转义字符,保险起见使⽤双⽅斜杠。其他1. assist接⼝问题: 我参考的这篇分析中提到了接⼝/assist,但是没利⽤成功并发表了疑问。 然后我尝试了⼀下,确实不⾏,经过分析后判断下来这个接⼝恐怕是没法⽤的。在/assist这个接⼝会⽤到API
CreateProcessAsUser,同样lpApplicationName为0,由lpCommandLine空格分割后的第⼀个字符串指定执⾏⽂件路径。 ⾄于为什么说这个接⼝没法利⽤,是因为虽然可以通过fastcode指定参数值,并作为命令执⾏。但是并不和/check接⼝中的处理⽅式⼀样是直接执⾏,/assist接⼝处理函数是取当前进程(即当前实例)路径,程序执⾏参数为"--mod=fastcode --fastcode=
发布者:admin,转转请注明出处:http://www.yc00.com/news/1687516294a16238.html
评论列表(0条)