YAPI远程代码执行零日漏洞预警,yapi安全漏洞导致服务器被木马入侵的处理过程

  • A+
一、漏洞情况
近日,互联网披露了YAPI远程代码执行0day漏洞,该漏洞已在野利用,并正在扩散。攻击者可利用该漏洞实现远程代码执行。建议用户通过临时防护措施缓解该漏洞风险,做好资产自查以及预防工作,以免遭受黑客攻击。
二、漏洞等级
高危
三、漏洞描述
YAPI接口管理平台是国内某旅行网站的开源项目,为前端后台开发与测试人员提供更优雅的接口管理服务,该系统被国内较多知名互联网企业所采用。该漏洞存在于YAPI的mock脚本服务上,是由于mock脚本自定义服务未对JS脚本加以命令过滤,用户可以添加任何请求处理脚本,攻击者可利用该漏洞在受影响的服务器上执行任意javascript代码,最终导致接管并控制服务器。

四、影响范围
目前为0day状态,官方暂未发布补丁,影响所有版本
五、安全建议
目前该漏洞暂无补丁,建议受影响的用户参考以下临时缓解措施:1. 部署防火墙实时拦截威胁;

2. 关闭YAPI用户注册功能,阻断攻击者注册;

3. 禁止YAPI所在服务器从外部网络访问;

4. 排查YAPI服务器是否存在恶意访问记录;

5. 删除恶意mock脚本,防止再被访问触发;

6. 服务器回滚快照。

六、参考链接
1. https://github.com/YMFE/yapi/issues/22292. https://github.com/YMFE/yapi/issues/2233

 

下面是处理案例分析

今天某客户联系我们说,自己的服务器突然收到阿里云告警,说服务器有木马风险

YAPI远程代码执行零日漏洞预警,yapi安全漏洞导致服务器被木马入侵的处理过程

 

YAPI远程代码执行零日漏洞预警,yapi安全漏洞导致服务器被木马入侵的处理过程

YAPI远程代码执行零日漏洞预警,yapi安全漏洞导致服务器被木马入侵的处理过程

 

漏洞出自yapi服务,二话不说先停了服务,然后去yapi的github上看看,果不其然,有人提了相关issue。
阿里云的警告指明了木马文件是yapi目录下的20000文件,我抱着试一试的心态,杀死了相关进程,并删除了文件。然而并没有什么用,过一会他就又重启了。这就我很难受了,我并没有运维的经验,只好请教身边的朋友,查查网上相关的案例。花了4、5个小时,得到的建议是,备份数据,重装系统。这并不是我想要的,且不论需要花费的时间,我自己也不会搭环境(环境是以前的架构师搭好的)。就在我快绝望的时候,找到了一些头绪和相关的案例(见文末),最后总算是战胜了木马。
以下是根据朋友建议和案例总结的实操流程:

1、crontab -l查看有无异常的定时任务,有则删除

2、进入/etc/rc.d/init.d目录,使用ll -art 查看开机启动文件(一般木马都会设置开机启动)的修改日期,如果和告警时间对得上的话大概率就是木马文件,我这里的木马文件是DbSecuritySpt、selinux,听别人说是挖矿病毒,但神奇的是服务器并没有发现cpu的使用率有疯涨的现象,据说是还没分配任务- - !发现木马文件后,直接删除即可(rc0.d ~ rc6.d都要删除)。这里耗了我很长时间,因为我删除了,过了没有多久,它又出现了,后面发现是20000这个文件重启时会添加开机启动的木马文件。这就很蛋疼了呀,删了DbSecuritySpt、selinux,20000重启就会添加。那问题还是得解决20000。

3、从上面第三张图发现ps -ef命令异常,所以就要进入/usr/bin目录去排查,使用ll -art命令得到下图

YAPI远程代码执行零日漏洞预警,yapi安全漏洞导致服务器被木马入侵的处理过程

 

这是后来截的图,缺少了ss、lsof、netstat文件(删了),可以看出多了bsd-port、dpkgd目录和.sshd文件,修改了ss、lsof、netstat、ps文件。我猜测dpkgd应该是那四个命令的原始文件的备份目录(被我直接删了),bsd-port是木马的原目录,里面有个getty的执行文件,正是这个文件让20000能不断重启。一开始处理这一块的时候,我是用xftp删的,一开始我没有删掉.sshd文件(xftp不显示隐藏文件)。所以并没有删干净,.sshd又重新生成了bsd-port目录。当我发现.sshd时,我不太敢删,总以为是系统自带的文件,直到找到案例(多谢前辈)。同时我用md5sum查了一下了bsd-port/getty和.sshd的哈希值,发现他们是一样的,所以可以大胆的删。

4、删完之后就把被伪装的命令重新安装一遍

# 安装ps命令
yum reinstall procps -y
# 安装netstat命令
yum reinstall net-tools -y
# 安装lsof命令
yum reinstall lsof -y
# 安装ss命令,安装失败,后来用 yum -y install iproute安装成功
yum -y reinstall iproute

5、到第4步的时候,我以为已经彻底解决了问题,准备重启来着。但我用ps -ef | grep getty检查时发现,这个进程居然还存在。

YAPI远程代码执行零日漏洞预警,yapi安全漏洞导致服务器被木马入侵的处理过程

这才想明白伪装原有命令的用途在这,隐藏木马进程,隐藏真实的网络请求,你以为解决,没想到木马进程还在。处理直接kill -9 xx杀死木马进程,然后还要删掉/tmp/moni.lod(存到是.sshd的pid)、/tmp/gates/.lod(存的是20000的pid)文件

6、重启,检查木马进程是否还存在,检查木马文件是否存在。
7、检查mongo数据库,将异常的数据清除(用户和mock数据)

8.木马是通过mock接口注入代码引起的。解决的办法是关掉注册功能和mock功能

 

  • 微信 wzgj360
  • 联系免费答疑
  • weinxin
  • QQ 613049615
  • 联系免费答疑
  • weinxin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: