作者简介:千里目安全实验室,隶属某公司北京安全研究部。拥有专业核心白帽子团队和开发团队,致力于网络安全攻防技术的研究和积累,依靠创新理念引领工作,在攻与防的对立统一中寻求技术突破。
扫码关注,获取千里目安全实验室最新安全技术研究
某公司 Struts2 再曝高危漏洞,建议立即检测(附本地检测方式)
近日,某公司 Struts2 发布的最新安全公告S2-029中显示,Struts2 存在远程代码执行漏洞。Struts 2.0.0 – Struts2.3.24.1 版本均受到该漏洞影响。这个漏洞危险级别被定义为高危,漏洞 CVE 编号:CVE-2016-0785。目前,某公司提供了某公司 Struts2 S2-029 远程代码执行漏洞的本地检测方案。
背景介绍 Struts2 是全球使用最广泛的 Javaweb 服务器框架之一。Struts2是 Struts 的下一代产品,是在 struts1和 WebWork 的技术基础上进行了合并的全新的 Struts2 框架。
之前 S2-005,S2-009,S2-013,S2-016,S2-20 都存在远程命令执行漏洞,使得大量的网站系统遭受入侵。因此,该漏洞一经曝光就在安全圈内引起轩然大波。
漏洞概要 S2-029 漏洞产生原因主要在于,Struts2的标签库使用 OGNL 表达式来访问ActionContext 中的对象数据,为了能够访问到ActionContext 中的变量,Struts2 将 ActionContext 设置为 OGNL 的上下文,并将 OGNL 的根对象加入 ActionContext 中。
用户可以控制特定标签的属性,通过 OGNL 二次计算可以执行任意命令。例如: <p>parameters:<s:propertyvalue="#parameters.msg" /></p>
这个标签就调用了 OGNL 进行取值,Struts2 会解析 value 中的值,并当作 OGNL 表达式进行执行。
OGNL第一次计算: OGNL表达式为 #parameters.msg,计算后得到parameters的属性,并将其属性值赋值给 value。
OGNL第二次计算: 对上面获取的属性值继续做 OGNL表达式执行。
漏洞检测 某公司提供了某公司 Struts2 S2-029 远程代码执行漏洞的本地检测方案: 1、新建文件test.jsp,文件内容如下图所示:
2、将上述test.jsp文件放入网站根目录; 4、查看网站服务器 /tmp 目录下是否有sangfor_test文件生成,若有此文件生成,则证明网站存在某公司 Struts2 S2-029 远程代码执行漏洞。
修复建议 1、建议用户严格验证新添加的 Struts 标签参数的属性; 2、建议用户将Struts升级至 2.3.26版本; 3、对于暂时无法进行升级的低版本用户,建议修改系统 RestActionMapper.java 源文件,防止 OGNL 表达式多次执行。具体修改方法如下图:
为了您的网络安全,建议小伙伴们抽空做下检测,凡在社区跟帖回复您的检测结果,都将获得社区奖励:1000S豆 时间:即日起至4月30日----已结束
获奖用户如下,1000个S豆已存入账户,请查收: keer8881 地板 小伙,不错 8楼 空城旧梦 10楼
检测方案已在某公司下一代防火墙主页进行实时提醒! 如果您未购买下一代防火墙设备,请访问某公司安全中心获取检测工具:
|