最近在复盘confluence CVE-2022-26134 这个漏洞,发现根本原因还是Struts2 架构的问题,这块的知识点挺多,不是一篇文章能解释清楚的,因此准备搞个系列,理理Struts2 架构相关的漏洞及原理。
- Ognl
- velocity
- Struts2
- Confluence
Ox01 基础知识
参考【1】中R17a 已经有整理了相关的OGNL相关基础知识,这里不做深入介绍,简单罗列下知识点。
- expression 表达式、相关语法
- context 上下文
- root 对象
0x02 原理
2.1 生成AST树
以以下poc为例
1 | Ognl.getValue("@java.lang.Runtime@getRuntime().exec('open -a Calculator')", context, context.getRoot()); |