Struts2漏洞导致的反弹shell——青藤云安全使用的是agent进程采集器进行检测

时间:2024-03-05 19:53:08

安全老司机 | Struts2漏洞爆发后,与黑客的一次正面交锋

 备注:

青藤云安全:——用的是进程信息采集器

通过对用户进程行为的实时监控,结合行为分析,及时发现非法shell连接引起的反弹shell行为,可以有效地感知0Day漏洞利用的行为痕迹,可以提供反向shell的详细过程操作树。

青藤云安全将Agent安装在服务器上,根据客户业务运行状况设立数万个监测指标,对文件进程、主机访问、业务关系等建立多维度、多层次的纵深检测体系,可以无间断对入侵行为进行监控,实现实时的入侵检测和快速响应,一旦发现异常情况,进行毫秒级报警

青藤新一代主机入侵检测系统的“反弹shell”功能,可以通过对用户进程行为进行实时监控,结合异常行为识别,可及时发现进程中非法 Shell 连接操作产生的反弹 Shell行为,能有效感知“0Day”漏洞等利用的行为痕迹,并提供反弹 Shell 的详细进程树。

 

 

故事开始

“我们可能被黑客攻击了!!!”接到客户急匆匆的一个电话。

我赶紧打开电脑查看报警邮件,提示存在一个反弹Shell的攻击行为。

这大半夜,客户的服务器居然正在主动尝试连接外部其它服务器。在那个瞬间,我都能想象得出来,服务器另一端那个穿着“黑衣服”的人,面对“冒着新鲜热气儿”的Shell唾手可得的那种狂喜。显然,黑客正在疯狂攻击,情况甚是紧急,需要在黑客造成真正破坏之前阻止他们。

做技术的人都知道,反弹Shell一般是外网渗透的最后一步,也是内网渗透的第一步。反弹Shell对服务器安全乃至内网安全的危害不必多说。

多年的一线拼杀经验告诉我,黑客一般是利用远程命令执行、远程代码执行、Webshell、Redis未授权访问可执行系统命令等漏洞,执行反弹命令,使目标服务器发出主动连接请求,从而绕过防火墙的入站访问控制规则。

初试无果

因为客户正好部署了青藤的大数据安全产品,能够记录展示每台服务器系统交互Shell的命令,包括操作者IP,操作终端,操作用户,操作详情等关键信息。但是出乎意料的是,在反弹Shell这十几分钟时间内,日志上居然没发现任何黑客执行反弹Shell操作等相关的异常操作行为。

改变思路

显然,黑客不是通过在服务器端执行命令的常规方式进行反弹,一定是有其它资产存在漏洞,被黑客利用了。为找到根本原因,我通过青藤资产清点工具对该主机上运行的资产(如虚拟机、web站点、web服务、web框架等)进行全面了解,发现该服务器上存在Struts 2的Web框架,凑巧的是该版本正好存在S2-045漏洞。很可能,这就是黑客入侵的源头了。

资产清点发现存在漏洞的Struts2版本

要说著名RCE(远程代码执行)漏洞,Struts2框架漏洞最为“经典”,一经爆发就被各安全厂商作为高危紧急漏洞处理。S2-045漏洞是由报错信息包含OGNL表达式,并且被带入了buildErrorMessage这个方法运行,造成远程代码执行。S2-045只有一种触发形式,就是将OGNL表达式注入到HTTP头的Content-Type中。

柳暗花明

为确认真正攻击源,通过查看Tomcat日志发现存在反弹Shell行为的恶意IP,正在通过post请求方式访问客户服务器上一个Struts2页面。至此,基本可以判断攻击者正是通过Struts2的反序列化漏洞进行攻击,从而完成反弹Shell的操作。值得庆幸,因为及时发现和快速响应,黑客的攻击行为未对服务器造成任何伤害。

进行反击

首先通过防火墙立即封堵该IP,同时在WAF上设置规则,拦截该请求,进一步对Struts2漏洞立马打补丁。

 

写在最后

攻防的较量从未停止,黑客与白帽子间的斗争也越演越烈。在Struts2框架漏洞这个战场上,需要持续深入地研究,才能占有主动权。虽然从过去出现的Struts漏洞看,恶意OGNL表达式的注入点无处不在,但随着Struts2框架版本不停迭代,很多漏洞都被修补。

在这里笔者也提醒各位安全负责人,一定要及时打补丁以及使用最新版的Struts框架,避免被不法分子利用而造成损失。同时,对request请求的参数名、参数值、cookie参数名、action的名称、Content-Type内容、filename内容、请求体内容(反序列化漏洞)进行验证,降低后期被黑客利用可能性。

安全老司机 | Struts2漏洞爆发后,与黑客的一次正面交锋

 

故事开始

“我们可能被黑客攻击了!!!”接到客户急匆匆的一个电话。

我赶紧打开电脑查看报警邮件,提示存在一个反弹Shell的攻击行为。

这大半夜,客户的服务器居然正在主动尝试连接外部其它服务器。在那个瞬间,我都能想象得出来,服务器另一端那个穿着“黑衣服”的人,面对“冒着新鲜热气儿”的Shell唾手可得的那种狂喜。显然,黑客正在疯狂攻击,情况甚是紧急,需要在黑客造成真正破坏之前阻止他们。

做技术的人都知道,反弹Shell一般是外网渗透的最后一步,也是内网渗透的第一步。反弹Shell对服务器安全乃至内网安全的危害不必多说。

多年的一线拼杀经验告诉我,黑客一般是利用远程命令执行、远程代码执行、Webshell、Redis未授权访问可执行系统命令等漏洞,执行反弹命令,使目标服务器发出主动连接请求,从而绕过防火墙的入站访问控制规则。

初试无果

因为客户正好部署了青藤的大数据安全产品,能够记录展示每台服务器系统交互Shell的命令,包括操作者IP,操作终端,操作用户,操作详情等关键信息。但是出乎意料的是,在反弹Shell这十几分钟时间内,日志上居然没发现任何黑客执行反弹Shell操作等相关的异常操作行为。

改变思路

显然,黑客不是通过在服务器端执行命令的常规方式进行反弹,一定是有其它资产存在漏洞,被黑客利用了。为找到根本原因,我通过青藤资产清点工具对该主机上运行的资产(如虚拟机、web站点、web服务、web框架等)进行全面了解,发现该服务器上存在Struts 2的Web框架,凑巧的是该版本正好存在S2-045漏洞。很可能,这就是黑客入侵的源头了。

资产清点发现存在漏洞的Struts2版本

要说著名RCE(远程代码执行)漏洞,Struts2框架漏洞最为“经典”,一经爆发就被各安全厂商作为高危紧急漏洞处理。S2-045漏洞是由报错信息包含OGNL表达式,并且被带入了buildErrorMessage这个方法运行,造成远程代码执行。S2-045只有一种触发形式,就是将OGNL表达式注入到HTTP头的Content-Type中。

柳暗花明

为确认真正攻击源,通过查看Tomcat日志发现存在反弹Shell行为的恶意IP,正在通过post请求方式访问客户服务器上一个Struts2页面。至此,基本可以判断攻击者正是通过Struts2的反序列化漏洞进行攻击,从而完成反弹Shell的操作。值得庆幸,因为及时发现和快速响应,黑客的攻击行为未对服务器造成任何伤害。

进行反击

首先通过防火墙立即封堵该IP,同时在WAF上设置规则,拦截该请求,进一步对Struts2漏洞立马打补丁。

 

写在最后

攻防的较量从未停止,黑客与白帽子间的斗争也越演越烈。在Struts2框架漏洞这个战场上,需要持续深入地研究,才能占有主动权。虽然从过去出现的Struts漏洞看,恶意OGNL表达式的注入点无处不在,但随着Struts2框架版本不停迭代,很多漏洞都被修补。

在这里笔者也提醒各位安全负责人,一定要及时打补丁以及使用最新版的Struts框架,避免被不法分子利用而造成损失。同时,对request请求的参数名、参数值、cookie参数名、action的名称、Content-Type内容、filename内容、请求体内容(反序列化漏洞)进行验证,降低后期被黑客利用可能性。