文章插图
在初始化了
OgnlValueStack
对象后,会对OgnlValueStack
对象进行依赖注入 。文章插图
这个时候会调用
com.opensymphony.xwork2.ognl.OgnlValueStack$setOgnlUtil
将黑名单添加进来赋值给OgnlValueStack
的securityMemberAccess
对象文章插图
这里需要注意的是由于
OgnlUtil
默认为singleton
单例模式,因此全局的OgnlUtil
实例都共享着相同的设置 。如果利用OgnlUtil
更改了设置项(excludedClasses、excludedPackageNames、
excludedPackageNamePatterns
)则同样会更改_memberAccess
中的值 。为什么改了
OgnlUtil
的值以后_memberAccess
的值也会改变呢?首先上面说过了全局的
OgnlUtil
实例都共享着相同的设置 。然后因为SecurityMemberAccess
类的excludedClasses
等属性都是集合类型文章插图
文章插图
而在java中集合赋值时传递的是一个引用,我们对集合做的任何操作都会影响到它赋值过的变量 。所以在解析Ognl表达式时,当
OgnlUtil
的excludedClasses
等安全属性被清空时,_memberAccess
对象的excludedClasses
等安全属性也直接随之被清空了 。文章插图
漏洞修复不把报错的信息放到
LocalizedTextUtil.findText
方法中去,从而保证报错的content-type
不会进行OGNL表达式解析 。2.5.10.1版本修改:
https://github.com/apache/struts/commit/b06dd50af2a3319dd896bf5c2f4972d2b772cf2b
2.3.32版本修改:
https://github.com/apache/struts/commit/352306493971e7d5a756d61780d57a76eb1f519a
文章插图
推荐阅读
- 淘宝违规词上架不被删除?是技巧还是走系统漏洞? 淘宝违规词要不要处理
- 漏洞无处不在,3步教你暴力破解ssh服务
- 海带|油头洗发水推荐,希芸专研洗护系列控油去屑,滋养头皮
- 法国依云矿泉传奇,宝和祥孔雀传奇系列
- CVE-2020-1948: Apache Dubbo 远程代码执行漏洞通告
- Google Maps与Photos服务即将带来一系列新功能
- 常见加密算法 「asp.net core 系列」12 数据加密算法
- 关于 JOIN 耐心总结,学不会你打我系列
- 茶馆系列之五,巴蜀茶馆的习俗
- 漏洞扫描技巧篇 「Web 漏洞扫描器」