S2-005远程代码执行(CVE-2010-1870)

漏洞描述:

Struts是Apache基金会Jakarta项目组的一个开源项目,Struts通过采用Java Servlet/JSP技术,实现了基于Java EE Web应用的Model-View-Controller(MVC)设计模式的应用框架,是MVC经典设计模式中的一个经典产品。目前,Struts框架广泛应用于政府、公安、交通、金融行业和运营商的网站建设,作为网站开发的底层模板使用,是应用最广泛的Web应用框架之一。

Struts 2是Struts的下一代产品,是在 struts 1和WebWork的技术基础上进行了合并的全新的Struts 2框架。其全新的Struts 2的体系结构与Struts 1的体系结构差别巨大,其在Action的实现方面线程模型方面、Servlet依赖方面、封装请求参数、表达式语言方面、绑定值到视图技术、类型转换、Action执行控制的对比、拦截器的应用等方面较Struts1进行了较大改进。Struts 2以WebWork为核心,采用拦截器的机制来处理用户的请求,这样的设计也使得业务逻辑控制器能够与 ServletAPI完全脱离开,所以Struts 2可以理解为WebWork的更新产品。虽然从Struts 1到Struts 2有着太大的变化,但是相对于WebWork,Struts 2的变化很小。

S2-005漏洞(受影响版本: Struts 2.0.0 - Struts 2.1.8.1)的起源源于S2-003(受影响版本: 低于Struts 2.0.12),Struts 2会将http的每个参数名解析为OGNL语句执行(可理解为java代码)。

OGNL表达式通过#来访问struts的对象,Struts框架通过过滤#字符防止安全问题,然而通过unicode编码(\u0023)或8进制(\43)即绕过了安全限制,对于S2-003漏洞,官方通过增加安全配置(禁止静态方法调用和类方法执行等)来修补,但是安全配置被绕过再次导致了漏洞,攻击者可以利用OGNL表达式将这2个选项打开,S2-003的修补方案把自己上了一个锁,但是把锁钥匙给插在了锁头上。

复现过程:

  1. 访问http://ip:port,出现如下页面,开始实验

2.使用strtus漏洞检测工具进行漏洞检测

3.命令执行,查看当前用户

借此漏洞,攻击者可以执行任意的代码,例如协议脚本文件;向网站写入webshell;控制整个网站或者服务器。

修复建议:

1.打补丁。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值