CVE-2021-35211 Serv-U远程命令执行漏洞复现

CVE-2021-35211 Serv-U远程命令执行漏洞复现

这周的一次应急响应case中,客户遭遇了lockbit 2.0的勒索。经溯源分析后,发现客户机器上安装了serv-u 15.0.0.0 的版本,该版本存在远程命令执行漏洞。本文对该漏洞进行复现,本文主要侧重于被入侵后如何快速进行溯源排查。

漏洞详情

漏洞背景

2021年7月13日,美国微软威胁情报中心发布安全公告,文中指出黑客利用Serv-U 0day对极少数美国军工部门成功进行了攻击,同日Serv-U母公司solarwinds也发布安全公告,并针对最新大版本发布了补丁。

漏洞版本范围

Serv-U 版本 < 15.2.3 HF2(即15.2.3.742)

漏洞简介

该漏洞是一个远程内存破坏漏洞(可以稳定控制虚函数指针),针对WINDOWS版Serv-U SFTP(22端口)进行攻击,该漏洞无需任何账号和密码,输入IP和端口即可成功攻击,只要版本低于15.2.3.742,成功率接近100%(单次成功率达不到100%,但可以立即再次攻击),利用成功获取SYSTEM权限SHELL。

漏洞exp

https://github.com/BishopFox/CVE-2021-35211

该exp仅针对serv-u 15.2.3.717有效!

漏洞复现过程

由于该漏洞exp只针对特定的ser-v版本生效,不同版本需要硬编码shellcode到exp中,而该exp只对这一个版本进行了测试,所以搭建环境过程中走了很多弯路。

同时官方已经不提供旧版的下载,因此只能收集第三方的链接进行下载,花费时间较多。这里我收集了serv-u 15.2.3.717旧版本的安装包打包,方便大家直接复现漏洞。

搭建ser-U漏洞测试环境

  • 腾讯云CVM
  • windows Server 2016(serv-U靶机)
  • centos7(msf攻击机)

安装过程较为简单,会提示新建域。安装完成后在系统右下角可查看当前ser-U状态。漏洞利用条件是ser-U作为服务启动(默认)。

进入管理控制台会看到如下日志,说明已经安装启动成功了。

由于安装时默认勾选监听了以上端口,使用netstat查看当前端口监听状态。

安装msf

需要先安装msf用于监听反弹的shell。

wget http://downloads.metasploit.com/data/releases/metasploit-latest-linux-x64-installer.run
chmod +x metasploit-latest-linux-x64-installer.run 
./metasploit-latest-linux-x64-installer.run 

执行exp

关于exp的执行,以及几种利用方式在readme中有详细介绍。

https://github.com/BishopFox/CVE-2021-35211/blob/main/README.md

msf设置监听端口

handler -H 0.0.0.0 -P 12345 -p windows/x64/shell/reverse_tcp
sessions     //查看所有的session会话

因为该漏洞利用不稳定,执行可能出现失败的情况,可以多尝试几次。执行成功后msf会提示回连的shell。

漏洞分析

目前能力有限,分析二进制的漏洞还不在范围内。

具体可以参考freebuf的这篇文章:
https://www.freebuf.com/vuls/289921.html

入侵后如何溯源排查?

serv-U默认是没有配置日志的(未写入文件),需要自行设定。

执行exp时,后台日志信息记录攻击者ip。但由于默认情况下,未配置日志不写入文件,软件重启后日志信息会丢失。

默认安装目录为:C:\ProgramData\RhinoSoft\Serv-U

其中DebugSocketLog会记录当前程序报错信息,可以确定被入侵时间点。但是软件重启后依旧无法获取攻击者的ip。

补充说明

该exp攻击后,会导致程序崩溃。由此导致的bug。
软件重启后,会检测到端口被占用,实际进程已不存在。

此时请求22端口会提示超时。重启系统后会解决该问题。

赞赏

微信赞赏支付宝赞赏

Zgao

愿有一日,安全圈的师傅们都能用上Zgao写的工具。

发表评论