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端口会提示超时。重启系统后会解决该问题。
赞赏微信赞赏支付宝赞赏
发表评论