关于struts2 S2-20漏洞及其补丁绕过的简要分析

23日,struts2 S2-020漏洞补丁被绕过,昨天写了篇报告,放出来,写的比较着急~


                                                                                            关于struts2 S2-20漏洞及其补丁绕过的简要分析

一、漏洞爆出

http://struts.apache.org/release/2.3.x/docs/s2-020.html

是两个CVE-2014-0050(DoS), CVE-2014-0094(ClassLoader manipulation)

 

(1)其中0050这个漏洞的利用POC在

http://www.exploit-db.com/exploits/31615/

据说这个漏洞只会造成CPU的运行缓慢,不会有大影响,有兴趣的可以复现下这个DOS

 

(2)其中0094漏洞是由于classLoader的属性可更改所致,class.classLoader允许对象赋值

Object是java的基础类,所有的class生成的对象,都会继承Object的所有属性和方法,因此当前action无论是什么代码,必须有Object自带的getClass方法,这个方法会返回一个Class对象,Class对象又一定会有getClassLoader方法

由于OGNL是通过class.xxx的形式来遍历属性,得到的也是动态class,在不同容器中也各不相同,有人写过枚举代码,可以遍历出好几百出来


二. 漏洞的验证

大部分都是针对tomcat8的POC,这里我们举个通杀的例子

比如对TomcatdocBase属性直接赋值,

class.classLoader.resources.dirContext.docBase=x

/*docbaseTomcat进行应用目录映射路径配置的,也就是说只是指向了你某个应用目录

Appbase是指该目录下的自动部署为应用

*/

由于docbase属性被允许赋值,假设如果

http://127.0.0.1:8080/struts2-blank/example/HelloWorld.action?class.classLoader.resources.dirContext.docBase=%E4%B8%8D%E5%AD%98%E5%9C%A8%E8%B7%AF%E5%BE%84

docbase后边的是一个不存在路径,那么你将会更改掉docbase的属性,会返回一个404的错误

然后你打开当前任何struts2应用,都会是404

这样也就是造成了DOS的效果

 

命令执行那个功能可以参考这个分析报告

http://www.cnseay.com/3835/

也就是说同样是利用了class.Loader的属性可更改漏洞,更改文件属性,然后进行请求写入类webshell,进行命令执行,这里就不再多做介绍

 

三.S2-20漏洞补丁被绕过

在4月23日晚上,众多绕过该补丁的情况出现

补丁如下:

https://github.com/apache/struts/commit/aaf5a3010e3c11ae14e3d3c966a53ebab67146be

 

但是这个补丁的关键如下,是一个正则的,但是是可以被绕过的

(.*\.|^)class\..*

 

比如

class.classLoader.resources.xxx

如果:class[“classLoader”][“resources”]

或者 class[“classLoader”].resources

或者把把双引号换成单引号,

或者是class-->Class大小写,都可以绕过补丁

 

可参考下面补救方式,类似下面这种:

class\[[‘”]classLoader[‘”]\]\[[‘”]\],nocase

 

可参考:

http://drops.wooyun.org/papers/1377

 


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值