Sec Hotspot 首页  排行榜  收藏本站  技术博客  RSS
统计信息
已收录文章数量:11205 篇
已收录公众号数量:89 个
本站文章为爬虫采集,如有侵权请告知
本周热门文章
使用msf入侵多层级网络架构   2020.06.01 08:00:32  77
关于站库分离渗透思路总结   2020.05.28 18:37:17  61
Fastjson <=1.2.68 远程代码执行漏洞   2020.06.02 00:00:32  58
铁头娃的渗透测试   2020.05.31 09:49:53  57
使用yarGen提取Linux恶意脚本特征   2020.05.30 18:00:34  55
“Sauron Locker”家族病毒新变种   2020.05.31 18:00:11  52
已收录微信公众号
网信中国 区块链大本营 白说区块链 区块链投资家 区块链官微 区块链铅笔Blockchain HACK学习呀 二道情报贩子 合天智汇 小白帽学习之路 小米安全中心 弥天安全实验室 SAINTSEC SecPulse安全脉搏 TideSec安全团队 360安全卫士 游侠安全网 计算机与网络安全 安全祖师爷 安全学习那些事 腾讯安全联合实验室 黑客技术与网络安全 安全圈 腾讯御见威胁情报中心 Python开发者 Python之禅 编程派 Python那些事 Python程序员 安全威胁情报 吾爱破解论坛 行长叠报 安在 i春秋 嘶吼专业版 E安全 MottoIN 网信防务 网安杂谈 数说安全 互联网安全内参 漏洞战争 安全分析与研究 邑安全 ChaMd5安全团队 天融信阿尔法实验室 安全牛 SecWiki 安全学术圈 信安之路 漏洞感知 浅黑科技 Secquan圈子社区 奇安信集团 奇安信 CERT 国舜股份 雷神众测 盘古实验室 美团安全应急响应中心 瓜子安全应急响应中心 顺丰安全应急响应中心 蚂蚁金服安全响应中心 携程安全应急响应中心 滴滴安全应急响应中心 字节跳动安全中心 百度安全应急响应中心 腾讯安全应急响应中心 网易安全应急响应中心 OPPO安全应急响应中心 京东安全应急响应中心 Bypass CNNVD安全动态 安恒应急响应中心 天融信每日安全简报 奇安信威胁情报中心 看雪学院 黑白之道 水滴安全实验室 安全客 木星安全实验室 云鼎实验室 绿盟科技安全预警 白帽汇 深信服千里目安全实验室 腾讯玄武实验室 长亭安全课堂 FreeBuf 绿盟科技 nmask
Apache Tomcat 反序列化远程代码执行漏洞
本文来自公众号:深信服千里目安全实验室   2020.05.21 20:58:43


2020年5月20日,Apache Tomcat官方发布安全公告,披露了一个通过集群同步session导致远程代码执行的漏洞。当tomcat服务器使用了自带session同步功能时,不安全的配置(没有使用EncryptInterceptor)导致存在反序列化漏洞,通过精心构造的数据包,可以对使用了tomcat自带session同步功能的服务器进行攻击。攻击者利用该漏洞可实现远程代码执行,获取服务器管理员权限。





漏洞名称 :Apache Tomcat 反序列化远程代码执行漏洞

威胁等级 :高危

漏洞类型 :远程代码执行

利用难度 :简单






Apache Tomcat组件介绍


Tomcat 服务器是一个免费的开放源代码的Web 应用服务器,是开发和调试JSP 程序的首选。


漏洞分析


代码分析:

Tomcat服务器在org.apache.catalina.tribes.transport.nio.NioReplicationTask.run()方法中读取数据。

在drainChannel()方法中将ClusterData封装成ChannelMessage类型,在后续的运行过程中,依次调用messageDataReceived()方法。

最终进入到GroupChannel.messageReceived()方法中

并在messageReceived()方法调用XByteBuffer.deserialize()方法,进行反序列化操作,执行传入的序列化数据中的恶意命令。

综上,漏洞利用流程结束。


漏洞复现


搭建Tomcat 8.0.50+JDK7u21漏洞环境,配置session同步功能,配置方法如下:

在conf/server.xml配置文件中添加如下配置,

1. <Server>  2.     ...  3.       4.     <Service>  5.         ...  6.           7.         <Engine>  8.             ...  9.               10.             <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"  11.                     channelSendOptions="6">  12.               13.                     <Manager className="org.apache.catalina.ha.session.BackupManager"  14.                       expireSessionsOnShutdown="false"  15.                       notifyListenersOnReplication="true"  16.                       mapSendOptions="6"/>  17.               18.               19.                     <Channel className="org.apache.catalina.tribes.group.GroupChannel">  20.                       <Membership className="org.apache.catalina.tribes.membership.McastService"  21.                         address="228.0.0.4"  22.                         port="45564"  23.                         frequency="500"  24.                         dropTime="3000"/>  25.                       <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"  26.                         address="123.123.123.123"  27.                         port="5000"  28.                         selectorTimeout="100"  29.                         maxThreads="6"/>  30.               31.                       <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">  32.                         <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>  33.                       </Sender>  34.                     </Channel>  35.               36.                     <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"  37.                       filter=".*\.gif;.*\.js;.*\.jpg;.*\.png;.*\.htm;.*\.html;.*\.css;.*\.txt;"/>  38.               39.                     <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"  40.                       tempDir="/tmp/war-temp/"  41.                       deployDir="/tmp/war-deploy/"  42.                       watchDir="/tmp/war-listen/"  43.                       watchEnabled="false"/>  44.               45.                     <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>  46.             </Cluster>  47.         </Engine>  48.   </Service>  49. </Server>  

使用JDK7u21的java运行环境,启动Tomcat。通过攻击脚本向服务器传输恶意序列化数据,漏洞利用效果如下:


影响范围


目前受影响的Apache Tomcat版本:

Apache Software Foundation Tomcat 7.x < 7.0.104

Apache Software Foundation Tomcat 8.x < 8.5.55

Apache Software Foundation Tomcat 9.x < 9.0.35

Apache Software Foundation Tomcat 10.x < 10.0.0-M5


解决方案


1 修复建议

官方发布的最新版本:

  • Apache Software Foundation Tomcat 7.0.104;

  • Apache Software Foundation Tomcat 8.5.55;

  • Apache Software Foundation Tomcat 9.0.35;

  • Apache Software Foundation Tomcat 10.0.0-M5

已经修复了此漏洞,请受影响的用户下载最新版本防御此漏洞。


下载链接:https://tomcat.apache.org/


2  临时解决方案

用户可以为sessionAttributeValueClassNameFilter 配置PersistenceManager,以确保仅对应用程序提供的属性进行序列化和反序列化。


3 深信服解决方案

深信服安全云眼 】在漏洞爆发之初,已完成检测更新,对所有用户网站探测,保障用户安全。不清楚自身业务是否存在漏洞的用户,可注册信服云眼账号,获取30天免费安全体验。

注册地址:http://saas.sangfor.com.cn


深信服云镜 】在漏洞爆发第一时间即完成检测能力的发布,部署了云镜的用户可以通过升级来快速检测网络中是否受该高危风险影响,避免被攻击者利用。离线使用云镜的用户需要下载离线更新包来获得漏洞检测能力,可以连接云端升级的用户可自动获得漏洞检测能力。


深信服下一代防火墙 】可轻松防御此漏洞, 建议部署深信服下一代防火墙的用户更新至最新的安全防护规则,可轻松抵御此高危风险。


深信服云盾 】已第一时间从云端自动更新防护规则,云盾用户无需操作,即可轻松、快速防御此高危风险。


深信服安全感知平台 】可检测利用该漏洞的攻击,实时告警,并可联动【深信服下一代防火墙等产品】实现对攻击者ip的封堵。


深信服安全运营服务 】深信服云端安全专家提供7*24小时持续的安全运营服务。在漏洞爆发之初,云端安全专家即对客户的网络环境进行漏洞扫描,保障第一时间检查客户的主机是否存在此漏洞。对存在漏洞的用户,检查并更新了客户防护设备的策略,确保客户防护设备可以防御此漏洞风险。


时间轴


2020/5/20



Apache Tomcat官方发布安全公告,披露了一个通过集群同步session导致远程代码执行的漏洞。

2020/5/21



深信服千里目安全实验室成功复现此漏洞并发布漏洞分析文章。


参考链接


[1].https://seclists.org/oss-sec/2020/q2/136

[2].https://github.com/threedr3am/tomcat-cluster-session-sync-exp



点击 阅读原文 ,及时关注深信服智安全Wiki平台,查询漏洞的解决方案(需登录)~