Struts2漏洞导致的反弹shell——青藤云安全使用的是agent进程采集器进行检测
安全老司机 | 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内容、请求体内容(反序列化漏洞)进行验证,降低后期被黑客利用可能性。
Struts2漏洞导致的反弹shell——青藤云安全使用的是agent进程采集器进行检测的更多相关文章
- Zabbix sql注入漏洞脚本执行反弹shell
		
exp检测是否存在SQL注入漏洞root@ubuntu:~# python zabbix.py http://ip:9090/+------------------------------------ ...
 - Struts2漏洞利用工具下载(更新2017-V1.8版增加S2-045/S2-046)
		
Struts2漏洞利用工具下载(已更新V1.8版) 2017-03-21:增加S2-046,官方发布S2-046和S2-045漏洞引发原因一样,只是利用漏洞的位置发生了变化,S2-046方式可能绕过部 ...
 - Struts2漏洞利用实例
		
Struts2漏洞利用实例 如果存在struts2漏洞的站,administrator权限,但是无法加管理组,内网,shell访问500. 1.struts2 漏洞原理:struts2是一个框架,他在 ...
 - 小白日记40:kali渗透测试之Web渗透-SQL手工注入(二)-读取文件、写入文件、反弹shell
		
SQL手工注入 1.读取文件[load_file函数] ' union SELECT null,load_file('/etc/passwd')--+ burpsuite 2.写入文件 ' unio ...
 - Struts2漏洞解决
		
如果你也正在使用Struts2作为web层框架做开发或者做公司的送检产品,然后被告知有各种各样的Struts2漏洞,那本篇博客值得你花时间来喽上一两眼. 前端时间抽空为公司做了新一代的送检产品,为了方 ...
 - 浅析重定向与反弹Shell命令
		
0×01 简介 反弹shell在漏洞证明和利用的过程中都是一个直接有力的手段.由于安全工作或者学习的需要,我们或多或少都会接触到各种反弹shell的命令,于是就有了这个能稍微帮助初学者理解的文档 ...
 - Linux 反弹shell(二)反弹shell的本质
		
Linux 反弹shell(二)反弹shell的本质 from:https://xz.aliyun.com/t/2549 0X00 前言 在上一篇文章 Linux反弹shell(一)文件描述符与重定向 ...
 - [Shell]利用JS文件反弹Shell
		
0x01 模拟环境 攻击: kali ip: 192.168.248.132 测试: windows 7 x64 ip: 192.168.248.136 0x02 工具地址 https://githu ...
 - [Shell]Redis未授权访问反弹shell
		
原作者:Cream 文章出处: 贝塔安全实验室 0x01 Redis未授权访问反弹shell Redis是一个开源的使用ANSI C语言编写.支持网络.可基于内存亦可持久化的日志型.Key-Value ...
 
随机推荐
- abort exit _exit return的区别
			
exit()函数导致子进程的正常退出,并且参数status&这个值将被返回给父进程.exit()应该是库函数.exit()函数其实是对_exit()函数的一种封装(库函数就是对系统调用的一种封 ...
 - (CSDN 迁移) JAVA多线程实现-可回收缓存线程池(newCachedThreadPool)
			
在前两篇博客中介绍了单线程化线程池(newSingleThreadExecutor).可控最大并发数线程池(newFixedThreadPool).下面介绍的是第三种newCachedThreadPo ...
 - Android Studio使用adb命令连接平板
			
有需要使用adb命令连接调试平板的同学可以参考下(下面是android官方文档,有点老). http://donandroid.com/how-to-install-adb-interface-dri ...
 - 编程语言与python介绍
			
目录 一.编程语言的发展史 1.1 机器语言 1.2 汇编语言 1.3 高级语言 1.3.1 编译型 1.3.2 解释型 1.4 总结 2.python介绍 2.1 python解释器版 2.2 运行 ...
 - 关于JavaScript面向对象那些事
			
当你在使用手机的时候,你会发现,你并不懂得其中的原理就会操作了,其实这就是面向对象的思想.面向对象还有很多地方都会运用到.JavaScript也不例外,现在跟随我的脚步,来学习一下吧. 面向过程和面向 ...
 - 浅析 Java 中的继承和重写
			
浅析 Java 中的继承和重写 Java 中的构造方法不能被继承. Java 中 static 修饰的方法可以被继承,但不能被子类重写. Java 中 final 修饰方法不允许被子类重写,但是可以被 ...
 - C++的菱形继承会发生什么问题?如何解决?画出其内存布局图
			
菱形继承问题样例: #include <iostream> using namespace std; class A { public: ; virtual int getx() { re ...
 - Python学习之路:关于列表(List)复制的那点事
			
要谈列表的复制,我们就要谈到Python的赋值规则 首先我们创建列表a: a = [1,2,3] 通常我们复制一个元素的方法是这样的: b = a #复制元素的一般方法 print(a) print( ...
 - Python之路【第十八篇】:前端HTML
			
一.前端概述 import socket def main(): sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock.bind( ...
 - Drool7s 什么叫KIE和生命周期-系列03课
			
KIE是缩写,knowledge is everything.可以理解成一个上层接口,本质是由很多个实现类去实现功能的. 另外关于drool7s的生命周期,请看下图 本文只是让你了解drools7的一 ...
 
			
		