关于struts2 S2-20漏洞及其补丁绕过的简要分析
来源:互联网 发布:软件著作权证书领取 编辑:程序博客网 时间:2024/05/17 22:51
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,这里我们举个通杀的例子
比如对Tomcat的docBase属性直接赋值,
class.classLoader.resources.dirContext.docBase=x
/*docbase
是
Tomcat进行应用目录映射路径配置的,也就是说只是指向了你某个应用目录
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
- 关于struts2 S2-20漏洞及其补丁绕过的简要分析
- Struts2 S2-020补丁绕过漏洞
- Struts2再曝高危漏洞(S2-020补丁绕过)
- Struts2 (s2-020) 漏洞说明及最新绕过补丁
- Struts2再曝S2-020补丁绕过漏洞 – 万恶的正则表达式
- Struts2 S2-052漏洞分析
- Struts2漏洞分析与研究之S2-005漏洞分析
- Struts2漏洞之S2-016漏洞分析与exp编写
- 关于S2-045漏洞,由struts2.5升级到struts2.5.10.1的步骤
- struts2 最新漏洞 S2
- struts2 S2-045漏洞
- Struts2(s2-016)远程代码执行漏洞详细代码分析
- Struts2远程代码执行漏洞分析(S2-013)
- Struts2 S2 – 032远程代码执行漏洞分析报告
- Struts2远程命令执行漏洞 S2-045 源码分析
- Struts2 S2 – 032远程代码执行漏洞分析报告 .
- S2-033漏洞分析
- s2-045漏洞分析
- 在window下的eclipse中远程编写Hadoop程序
- Tomcat启动
- GeekforGeeks Trie - 键树简介 - 构造 插入 和 搜索
- mysql 各种命令 一
- mysql how to migration database
- 关于struts2 S2-20漏洞及其补丁绕过的简要分析
- Android-自定义标题栏
- SAP NetWeaver Business Client (NWBC) 简介
- mysql存储过程查看,修改,删除,创建方法
- 在与 SQL Server 建立连接时出现与网络相关的或特定于实例的错误
- Wifi模块分析
- SCI查询系统
- 下班后的时间,挖一口属于自己的井
- vmware-hostd.exe占用443端口